/* 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_both.h" #include "export/output/export_output_result.h" #include "export/data/export_data_types.h" #include "core/utils.h" #include #include #include #include #include namespace Export { namespace Output { Result BothWriter::start( const Settings &settings, const Environment &environment, Stats *stats) { Expects(settings.path.endsWith('/')); _settings = base::duplicate(settings); _environment = environment; _stats = stats; if (_settings.onlySinglePeer()) { return Result::Success(); } // init json Settings jsonSettings(settings); jsonSettings.path += "json/"; jsonSettings.format = Format::Json; jsonW = std::make_unique(); Result jres = jsonW->start(jsonSettings, environment, stats); if(!jres) { return jres; } // html json Settings htmlSettings(settings); htmlSettings.path += "html/"; htmlSettings.format = Format::Html; htmlW = std::make_unique(); Result hres = htmlW->start(htmlSettings, environment, stats); return hres; } Result BothWriter::writePersonal(const Data::PersonalInfo &data) { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->writePersonal(data); if(!r) return r; return htmlW->writePersonal(data); } Result BothWriter::writeUserpicsStart(const Data::UserpicsInfo &data) { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->writeUserpicsStart(data); if(!r) return r; return htmlW->writeUserpicsStart(data); } Result BothWriter::writeUserpicsSlice(const Data::UserpicsSlice &data) { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Expects(!data.list.empty()); Result r = jsonW->writeUserpicsSlice(data); if(!r) return r; return htmlW->writeUserpicsSlice(data); } Result BothWriter::writeUserpicsEnd() { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->writeUserpicsEnd(); if(!r) return r; return htmlW->writeUserpicsEnd(); } Result BothWriter::writeContactsList(const Data::ContactsList &data) { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->writeContactsList(data); if(!r) return r; return htmlW->writeContactsList(data); } Result BothWriter::writeSessionsList(const Data::SessionsList &data) { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->writeSessionsList(data); if(!r) return r; return htmlW->writeSessionsList(data); } Result BothWriter::writeOtherData(const Data::File &data) { Expects(data.skipReason == Data::File::SkipReason::None); Expects(!data.relativePath.isEmpty()); Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->writeOtherData(data); if(!r) return r; return htmlW->writeOtherData(data); } Result BothWriter::writeDialogsStart(const Data::DialogsInfo &data) { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->writeDialogsStart(data); if(!r) return r; return htmlW->writeDialogsStart(data); } Result BothWriter::writeDialogStart(const Data::DialogInfo &data) { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->writeDialogStart(data); if(!r) return r; return htmlW->writeDialogStart(data); } Result BothWriter::writeDialogSlice(const Data::MessagesSlice &data) { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->writeDialogSlice(data); if(!r) return r; return htmlW->writeDialogSlice(data); } Result BothWriter::writeDialogEnd() { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->writeDialogEnd(); if(!r) return r; return htmlW->writeDialogEnd(); } Result BothWriter::writeDialogsEnd() { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->writeDialogsEnd(); if(!r) return r; return htmlW->writeDialogsEnd(); } Result BothWriter::finish() { Expects(jsonW != nullptr); Expects(htmlW != nullptr); Result r = jsonW->finish(); if(!r) return r; return htmlW->finish(); } QString BothWriter::mainFilePath() { return _settings.path; } } // namespace Output } // namespace Export