1 /* 2 This file is part of Telegram Desktop, 3 the official desktop application for the Telegram messaging service. 4 5 For license and copyright information please follow this link: 6 https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL 7 */ 8 #pragma once 9 10 #include <QtCore/QString> 11 12 namespace Export { 13 namespace Data { 14 struct PersonalInfo; 15 struct UserpicsInfo; 16 struct UserpicsSlice; 17 struct ContactsList; 18 struct SessionsList; 19 struct DialogsInfo; 20 struct DialogInfo; 21 struct MessagesSlice; 22 struct File; 23 } // namespace Data 24 25 struct Settings; 26 struct Environment; 27 28 namespace Output { 29 30 QString NormalizePath(const Settings &settings); 31 32 struct Result; 33 class Stats; 34 35 enum class Format { 36 Html, 37 Json, 38 }; 39 40 class AbstractWriter { 41 public: 42 [[nodiscard]] virtual Format format() = 0; 43 44 [[nodiscard]] virtual Result start( 45 const Settings &settings, 46 const Environment &environment, 47 Stats *stats) = 0; 48 49 [[nodiscard]] virtual Result writePersonal( 50 const Data::PersonalInfo &data) = 0; 51 52 [[nodiscard]] virtual Result writeUserpicsStart( 53 const Data::UserpicsInfo &data) = 0; 54 [[nodiscard]] virtual Result writeUserpicsSlice( 55 const Data::UserpicsSlice &data) = 0; 56 [[nodiscard]] virtual Result writeUserpicsEnd() = 0; 57 58 [[nodiscard]] virtual Result writeContactsList( 59 const Data::ContactsList &data) = 0; 60 61 [[nodiscard]] virtual Result writeSessionsList( 62 const Data::SessionsList &data) = 0; 63 64 [[nodiscard]] virtual Result writeOtherData( 65 const Data::File &data) = 0; 66 67 [[nodiscard]] virtual Result writeDialogsStart( 68 const Data::DialogsInfo &data) = 0; 69 [[nodiscard]] virtual Result writeDialogStart( 70 const Data::DialogInfo &data) = 0; 71 [[nodiscard]] virtual Result writeDialogSlice( 72 const Data::MessagesSlice &data) = 0; 73 [[nodiscard]] virtual Result writeDialogEnd() = 0; 74 [[nodiscard]] virtual Result writeDialogsEnd() = 0; 75 76 [[nodiscard]] virtual Result finish() = 0; 77 78 [[nodiscard]] virtual QString mainFilePath() = 0; 79 80 virtual ~AbstractWriter() = default; 81 82 Stats produceTestExample( 83 const QString &path, 84 const Environment &environment); 85 86 }; 87 88 std::unique_ptr<AbstractWriter> CreateWriter(Format format); 89 90 } // namespace Output 91 } // namespace Export 92