export_output_abstract.h 2.4 KB

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