mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-14 13:17:08 +02:00
Added initial export writer for both html and json formats.
This commit is contained in:
parent
d4ad5d9f13
commit
ca30c35c2b
4 changed files with 216 additions and 0 deletions
|
@ -37,6 +37,7 @@ class Stats;
|
|||
enum class Format {
|
||||
Html,
|
||||
Json,
|
||||
HtmlAndJson,
|
||||
};
|
||||
|
||||
class AbstractWriter {
|
||||
|
|
|
@ -0,0 +1,148 @@
|
|||
/*
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop application for the Telegram messaging service.
|
||||
|
||||
For license and copyright information please follow this link:
|
||||
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
*/
|
||||
#include "export/output/export_output_html_and_json.h"
|
||||
|
||||
#include "export/output/export_output_html.h"
|
||||
#include "export/output/export_output_json.h"
|
||||
#include "export/output/export_output_result.h"
|
||||
|
||||
namespace Export::Output {
|
||||
|
||||
HtmlAndJsonWriter::HtmlAndJsonWriter() {
|
||||
_writers.push_back(CreateWriter(Format::Html));
|
||||
_writers.push_back(CreateWriter(Format::Json));
|
||||
}
|
||||
|
||||
Format HtmlAndJsonWriter::format() {
|
||||
return Format::HtmlAndJson;
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::start(
|
||||
const Settings &settings,
|
||||
const Environment &environment,
|
||||
Stats *stats) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->start(settings, environment, stats);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writePersonal(const Data::PersonalInfo &data) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writePersonal(data);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeUserpicsStart(const Data::UserpicsInfo &data) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeUserpicsStart(data);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeUserpicsSlice(const Data::UserpicsSlice &d) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeUserpicsSlice(d);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeUserpicsEnd() {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeUserpicsEnd();
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeStoriesStart(const Data::StoriesInfo &data) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeStoriesStart(data);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeStoriesSlice(const Data::StoriesSlice &data) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeStoriesSlice(data);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeStoriesEnd() {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeStoriesEnd();
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeContactsList(const Data::ContactsList &data) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeContactsList(data);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeSessionsList(const Data::SessionsList &data) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeSessionsList(data);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeOtherData(const Data::File &data) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeOtherData(data);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeDialogsStart(const Data::DialogsInfo &data) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeDialogsStart(data);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeDialogStart(const Data::DialogInfo &data) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeDialogStart(data);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeDialogSlice(const Data::MessagesSlice &data) {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeDialogSlice(data);
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeDialogEnd() {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeDialogEnd();
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::writeDialogsEnd() {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->writeDialogsEnd();
|
||||
});
|
||||
}
|
||||
|
||||
Result HtmlAndJsonWriter::finish() {
|
||||
return invoke([&](WriterPtr w) {
|
||||
return w->finish();
|
||||
});
|
||||
}
|
||||
|
||||
QString HtmlAndJsonWriter::mainFilePath() {
|
||||
return _writers.front()->mainFilePath();
|
||||
}
|
||||
|
||||
HtmlAndJsonWriter::~HtmlAndJsonWriter() = default;
|
||||
|
||||
Result HtmlAndJsonWriter::invoke(Fn<Result(WriterPtr)> method) const {
|
||||
auto result = Result(Result::Type::Success, QString());
|
||||
for (const auto &writer : _writers) {
|
||||
const auto current = method(writer);
|
||||
if (!current) {
|
||||
result = current;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace Export::Output
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop application for the Telegram messaging service.
|
||||
|
||||
For license and copyright information please follow this link:
|
||||
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "export/output/export_output_abstract.h"
|
||||
|
||||
namespace Export::Output {
|
||||
|
||||
class HtmlWriter;
|
||||
class JsonWriter;
|
||||
struct Result;
|
||||
|
||||
class HtmlAndJsonWriter final : public AbstractWriter {
|
||||
public:
|
||||
HtmlAndJsonWriter();
|
||||
|
||||
Format format() override;
|
||||
|
||||
Result start(
|
||||
const Settings &settings,
|
||||
const Environment &environment,
|
||||
Stats *stats) override;
|
||||
|
||||
Result writePersonal(const Data::PersonalInfo &data) override;
|
||||
|
||||
Result writeUserpicsStart(const Data::UserpicsInfo &data) override;
|
||||
Result writeUserpicsSlice(const Data::UserpicsSlice &data) override;
|
||||
Result writeUserpicsEnd() override;
|
||||
|
||||
Result writeStoriesStart(const Data::StoriesInfo &data) override;
|
||||
Result writeStoriesSlice(const Data::StoriesSlice &data) override;
|
||||
Result writeStoriesEnd() override;
|
||||
|
||||
Result writeContactsList(const Data::ContactsList &data) override;
|
||||
|
||||
Result writeSessionsList(const Data::SessionsList &data) override;
|
||||
|
||||
Result writeOtherData(const Data::File &data) override;
|
||||
|
||||
Result writeDialogsStart(const Data::DialogsInfo &data) override;
|
||||
Result writeDialogStart(const Data::DialogInfo &data) override;
|
||||
Result writeDialogSlice(const Data::MessagesSlice &data) override;
|
||||
Result writeDialogEnd() override;
|
||||
Result writeDialogsEnd() override;
|
||||
|
||||
Result finish() override;
|
||||
|
||||
QString mainFilePath() override;
|
||||
|
||||
~HtmlAndJsonWriter();
|
||||
|
||||
private:
|
||||
using WriterPtr = const std::unique_ptr<AbstractWriter> &;
|
||||
Result invoke(Fn<Result(WriterPtr)> method) const;
|
||||
|
||||
std::vector<std::unique_ptr<AbstractWriter>> _writers;
|
||||
|
||||
};
|
||||
|
||||
} // namespace Export::Output
|
|
@ -26,6 +26,8 @@ PRIVATE
|
|||
export/output/export_output_file.h
|
||||
export/output/export_output_html.cpp
|
||||
export/output/export_output_html.h
|
||||
export/output/export_output_html_and_json.cpp
|
||||
export/output/export_output_html_and_json.h
|
||||
export/output/export_output_json.cpp
|
||||
export/output/export_output_json.h
|
||||
export/output/export_output_result.h
|
||||
|
|
Loading…
Add table
Reference in a new issue