#pragma once #include "src/activitypub/apactivity.h" #include "src/activitypub/apactor.h" #include "src/types.h" #include #include #include enum ArchiveType { MASTODON }; class Archive { public: enum InitError { NoError = 0, FailedOpeningFile, JsonParseError, JsonEmpty, JsonNull, JsonNotObject, JsonNotActivityStream // for ActivityPub archives }; typedef int ArchiveItemRef; struct Hinting_t { StatusType status_type = UNKNOWN; }; virtual ~Archive() {}; virtual InitError init() = 0; static Archive* create_archive(ArchiveType archive_type, const QString& main_filename); virtual void update_status_list(ViewStatusTypes allowed_types, QListWidget *parent) = 0; virtual APActivityPtr get_activity(ArchiveItemRef index, Hinting_t hinting) = 0; // Get the Actor that represents the data export, the user who's account data has been exported. // Return nullptr if the Actor cannot be retrieved virtual APActorPtr get_main_actor(); virtual const QString get_html_status_text(ArchiveItemRef status_index) = 0; virtual const QString get_instance_address(); protected: Archive(const QString& main_filename); QString main_filename; };