diff --git a/README.adoc b/README.adoc index 4763632..c250496 100644 --- a/README.adoc +++ b/README.adoc @@ -83,8 +83,8 @@ Not included in this list are entities. ==== Other types -* `Mastodon::parameters`: Vector of `Mastodon::param`, for specifying parameters - to an `Mastodon::API` call. +* `Mastodon::parameters`: Vector of `Mastodon::param` with custom `find()`, for + specifying parameters to an `Mastodon::API` call. * `Mastodon::http_method`: HTTP method of an `Mastodon::API` call. * `Mastodon::Easy::event_type`: Event types returned in streams. * `Mastodon::Easy::visibility_type`: Describes the visibility of a post. @@ -92,13 +92,12 @@ Not included in this list are entities. * `Mastodon::Easy::card_type`: Describes the type of card. * `Mastodon::Easy::notification_type`: The type of the notification. * `Mastodon::Easy::context_type`: Describes the context of a filter. -* `Mastodon::Easy::stream_event`: Type and data of an events returned in +* `Mastodon::Easy::stream_event_type`: Type and data of an events returned in streams. -* `Mastodon::Easy::alerts`: Vector of `Mastodon::Easy::alert_type`, used for - push subscriptions. -* `Mastodon::Easy::time`: Type for time, can be converted to `time_point` and - `string`. -* `Mastodon::Easy::Account::account_fields`: Type for fields in accounts. +* `Mastodon::Easy::alert_type`, used for push subscriptions. +* `Mastodon::Easy::time_type`: Type for time, can be converted to `time_point` + and `string`. +* `Mastodon::Easy::Account::account_field_type`: Type for fields in accounts. === Error codes diff --git a/examples/example02_stream.cpp b/examples/example02_stream.cpp index f8297de..0eaac72 100644 --- a/examples/example02_stream.cpp +++ b/examples/example02_stream.cpp @@ -51,11 +51,12 @@ int main(int argc, char *argv[]) // Acquire lock for the stream variable to avoid simultaneous access. std::lock_guard lock(ptr->get_mutex()); // Parse event stream into a vector. - std::vector events = Easy::parse_stream(stream); + std::vector events + = Easy::parse_stream(stream); // Clear the stream buffer. stream.clear(); - for (const Easy::stream_event &event : events) + for (const Easy::stream_event_type &event : events) { // Print out some information about the events. switch (event.type) diff --git a/src/easy/easy.cpp b/src/easy/easy.cpp index b25f464..756d182 100644 --- a/src/easy/easy.cpp +++ b/src/easy/easy.cpp @@ -49,13 +49,13 @@ const std::vector Easy::json_array_to_vector(const string &json) return {}; } -const vector Easy::parse_stream( +const vector Easy::parse_stream( const std::string &streamdata) { string stream = streamdata; std::regex reevent("event: (update|notification|delete|ERROR)\ndata: (.*)\n"); std::smatch match; - std::vector vec = {}; + std::vector vec = {}; while (std::regex_search(stream, match, reevent)) { @@ -79,7 +79,7 @@ const vector Easy::parse_stream( return vec; } -const Easy::time Easy::string_to_time(const string &strtime) +const Easy::time_type Easy::string_to_time(const string &strtime) { std::stringstream sstime(strtime); struct std::tm tm = {}; diff --git a/src/easy/easy.hpp b/src/easy/easy.hpp index de84abb..fdf7360 100644 --- a/src/easy/easy.hpp +++ b/src/easy/easy.hpp @@ -112,7 +112,7 @@ namespace Easy * * @since before 0.11.0 */ - const std::vector json_array_to_vector(const string &json); + const vector json_array_to_vector(const string &json); /*! * @brief Split stream into a vector of events @@ -123,14 +123,14 @@ namespace Easy * * @since before 0.11.0 */ - const std::vector parse_stream(const std::string &streamdata); + const vector parse_stream(const std::string &streamdata); /*! * @brief Convert ISO 8601 time string to Easy::time. * * @param strtime Time string as returned by Mastodon. */ - const Easy::time string_to_time(const string &strtime); + const Easy::time_type string_to_time(const string &strtime); /*! * @brief Child of Mastodon::API with abstract methods. diff --git a/src/easy/entities/account.cpp b/src/easy/entities/account.cpp index dc28f55..6b8c19d 100644 --- a/src/easy/entities/account.cpp +++ b/src/easy/entities/account.cpp @@ -65,7 +65,7 @@ bool Account::bot() const return get_bool("bot"); } -const Easy::time Account::created_at() const +const Easy::time_type Account::created_at() const { return get_time("created_at"); } @@ -93,13 +93,13 @@ const std::vector Account::emojis() return {}; } -const Easy::account_fields Account::fields() const +const vector Account::fields() const { const Json::Value &node = get("fields"); if (node.isArray()) { - Easy::account_fields vec; + vector vec; std::transform(node.begin(), node.end(), std::back_inserter(vec), [](const Json::Value &value) { @@ -221,13 +221,13 @@ bool Account::Source::valid() const }); } -const Easy::account_fields Account::Source::fields() const +const vector Account::Source::fields() const { const Json::Value &node = get("fields"); if (node.isArray()) { - Easy::account_fields vec; + vector vec; std::transform(node.begin(), node.end(), std::back_inserter(vec), [](const Json::Value &value) { diff --git a/src/easy/entities/account.hpp b/src/easy/entities/account.hpp index c1835f2..9b3c791 100644 --- a/src/easy/entities/account.hpp +++ b/src/easy/entities/account.hpp @@ -35,6 +35,7 @@ using std::string; using std::uint64_t; +using std::vector; namespace Mastodon { @@ -88,7 +89,7 @@ namespace Easy * * @since before 0.11.0 */ - const Easy::time created_at() const; + const Easy::time_type created_at() const; /*! * @brief Returns display name. @@ -109,7 +110,7 @@ namespace Easy * * @since 0.16.1 */ - const Easy::account_fields fields() const; + const vector fields() const; /*! * @brief Returns number of followers. @@ -206,7 +207,7 @@ namespace Easy * * @since 0.18.5 */ - const Easy::account_fields fields() const; + const vector fields() const; /*! * @brief Returns the language as ISO 6391 string. diff --git a/src/easy/entities/filter.cpp b/src/easy/entities/filter.cpp index fb50512..77d6db7 100644 --- a/src/easy/entities/filter.cpp +++ b/src/easy/entities/filter.cpp @@ -71,7 +71,7 @@ const vector Filter::context() const return {}; } -const Easy::time Filter::expires_at() const +const Easy::time_type Filter::expires_at() const { return get_time("expires_at"); } diff --git a/src/easy/entities/filter.hpp b/src/easy/entities/filter.hpp index da7d64c..a9b2327 100644 --- a/src/easy/entities/filter.hpp +++ b/src/easy/entities/filter.hpp @@ -72,7 +72,7 @@ namespace Easy * * @since 0.104.0 */ - const Easy::time expires_at() const; + const Easy::time_type expires_at() const; /*! * @brief Returns if the phrase should disappear irreversibly. diff --git a/src/easy/entities/instance.cpp b/src/easy/entities/instance.cpp index b485305..dc7b0d7 100644 --- a/src/easy/entities/instance.cpp +++ b/src/easy/entities/instance.cpp @@ -32,6 +32,7 @@ bool Instance::valid() const "email", "version", "urls", + "stats", "languages" }); } @@ -44,7 +45,6 @@ const Easy::Account Instance::contact_account() const return Easy::Account(node.toStyledString()); } - ttdebug << "Could not get data: contact_account\n"; return Easy::Account(); } @@ -83,6 +83,11 @@ const string Instance::streaming_api() const return get_string("urls.streaming_api"); } +const string Instance::thumbnail() const +{ + return get_string("thumbnail"); +} + uint64_t Instance::max_toot_chars() const { const uint64_t max_chars = get_uint64("max_toot_chars"); diff --git a/src/easy/entities/instance.hpp b/src/easy/entities/instance.hpp index 849e4dc..82eeff7 100644 --- a/src/easy/entities/instance.hpp +++ b/src/easy/entities/instance.hpp @@ -81,6 +81,13 @@ namespace Easy */ const std::vector languages() const; + /*! + * @brief Returns the thumbnail of the instance. + * + * @since 0.106.0 + */ + const string thumbnail() const; + /*! * @brief Returns the title of the instance * diff --git a/src/easy/entities/notification.cpp b/src/easy/entities/notification.cpp index b0b3eeb..95d619e 100644 --- a/src/easy/entities/notification.cpp +++ b/src/easy/entities/notification.cpp @@ -43,7 +43,7 @@ const Easy::Account Notification::account() const return Easy::Account(); } -const Easy::time Notification::created_at() const +const Easy::time_type Notification::created_at() const { return get_time("created_at"); } diff --git a/src/easy/entities/notification.hpp b/src/easy/entities/notification.hpp index 4131c9c..3460c5f 100644 --- a/src/easy/entities/notification.hpp +++ b/src/easy/entities/notification.hpp @@ -64,7 +64,7 @@ namespace Easy * * @since before 0.11.0 */ - const Easy::time created_at() const; + const Easy::time_type created_at() const; /*! * @brief Returns notification ID diff --git a/src/easy/entities/pushsubscription.cpp b/src/easy/entities/pushsubscription.cpp index 280df43..76cf58d 100644 --- a/src/easy/entities/pushsubscription.cpp +++ b/src/easy/entities/pushsubscription.cpp @@ -44,9 +44,9 @@ const string PushSubscription::server_key() const return get_string("server_key"); } -const Easy::alerts PushSubscription::alerts() const +const vector PushSubscription::alerts() const { - Easy::alerts alerts; + vector alerts; const Json::Value node = get("alerts"); for (auto it = node.begin(); it != node.end(); ++it) { diff --git a/src/easy/entities/pushsubscription.hpp b/src/easy/entities/pushsubscription.hpp index a0ac5a8..982bc73 100644 --- a/src/easy/entities/pushsubscription.hpp +++ b/src/easy/entities/pushsubscription.hpp @@ -18,6 +18,7 @@ #define MASTODON_CPP_EASY_PUSHSUBSCRIPTION_HPP #include +#include #include #include @@ -31,6 +32,7 @@ #endif using std::string; +using std::vector; namespace Mastodon { @@ -75,7 +77,7 @@ namespace Easy * * @since 0.100.0 */ - const Easy::alerts alerts() const; + const vector alerts() const; protected: /*! diff --git a/src/easy/entities/status.cpp b/src/easy/entities/status.cpp index b69b152..d9be5bf 100644 --- a/src/easy/entities/status.cpp +++ b/src/easy/entities/status.cpp @@ -78,7 +78,7 @@ const Easy::Card Status::card() const return Easy::Card(); } -const Easy::time Status::created_at() const +const Easy::time_type Status::created_at() const { return get_time("created_at"); } diff --git a/src/easy/entities/status.hpp b/src/easy/entities/status.hpp index 194e62a..91589eb 100644 --- a/src/easy/entities/status.hpp +++ b/src/easy/entities/status.hpp @@ -89,7 +89,7 @@ namespace Easy * * @since before 0.11.0 */ - const Easy::time created_at() const; + const Easy::time_type created_at() const; /*! * @brief Returns content of status diff --git a/src/easy/entities/tag.cpp b/src/easy/entities/tag.cpp index 6f17a77..3421144 100644 --- a/src/easy/entities/tag.cpp +++ b/src/easy/entities/tag.cpp @@ -75,7 +75,7 @@ uint64_t Tag::History::accounts() return stouint64(get_string("accounts")); } -const Easy::time Tag::History::day() +const Easy::time_type Tag::History::day() { const Json::Value node = get("day"); @@ -86,7 +86,7 @@ const Easy::time Tag::History::day() } ttdebug << "Could not get data: day\n"; - return Easy::time(); + return Easy::time_type(); } uint64_t Tag::History::uses() diff --git a/src/easy/entities/tag.hpp b/src/easy/entities/tag.hpp index 5c4f946..6c14ae0 100644 --- a/src/easy/entities/tag.hpp +++ b/src/easy/entities/tag.hpp @@ -68,7 +68,7 @@ namespace Easy * * @since 0.16.0 */ - const Easy::time day(); + const Easy::time_type day(); /*! * @brief Returns the number of accounts using that hashtag. diff --git a/src/easy/entities/token.cpp b/src/easy/entities/token.cpp index f6a5254..c4dfec0 100644 --- a/src/easy/entities/token.cpp +++ b/src/easy/entities/token.cpp @@ -45,7 +45,7 @@ const string Token::scope() const return get_string("scope"); } -const Easy::time Token::created_at() const +const Easy::time_type Token::created_at() const { return get_time("created_at"); } diff --git a/src/easy/entities/token.hpp b/src/easy/entities/token.hpp index 97f4c3e..88e7c6b 100644 --- a/src/easy/entities/token.hpp +++ b/src/easy/entities/token.hpp @@ -72,7 +72,7 @@ namespace Easy * * @since 0.103.0 */ - const Easy::time created_at() const; + const Easy::time_type created_at() const; }; } } diff --git a/src/easy/entity.cpp b/src/easy/entity.cpp index aa6fa83..cebc263 100644 --- a/src/easy/entity.cpp +++ b/src/easy/entity.cpp @@ -227,7 +227,7 @@ bool Easy::Entity::get_bool(const string &key) const return false; } -const Easy::time Easy::Entity::get_time(const string &key) const +const Easy::time_type Easy::Entity::get_time(const string &key) const { const Json::Value node = get(key); diff --git a/src/easy/entity.hpp b/src/easy/entity.hpp index 4b38750..56ad444 100644 --- a/src/easy/entity.hpp +++ b/src/easy/entity.hpp @@ -203,7 +203,7 @@ namespace Easy * * Returns clocks epoch if the value does not exist or is null. */ - const Easy::time get_time(const string &key) const; + const Easy::time_type get_time(const string &key) const; /*! * @brief Returns the value of key as vector diff --git a/src/easy/types_easy.cpp b/src/easy/types_easy.cpp index dbb022d..c469ed4 100644 --- a/src/easy/types_easy.cpp +++ b/src/easy/types_easy.cpp @@ -20,17 +20,17 @@ namespace Mastodon { namespace Easy { - time::operator const system_clock::time_point() const + time_type::operator const system_clock::time_point() const { return timepoint; } - time::operator const string() const + time_type::operator const string() const { return strtime("%FT%T%z", true); } - const string time::strtime(const string &format, const bool &local) const + const string time_type::strtime(const string &format, const bool &local) const { constexpr std::uint16_t bufsize = 1024; std::time_t time = system_clock::to_time_t(timepoint); @@ -51,7 +51,7 @@ namespace Easy } std::ostream &operator <<(std::ostream &out, - const time &t) + const time_type &t) { const string s = t; // Converts using operator const string(). out << s; diff --git a/src/easy/types_easy.hpp b/src/easy/types_easy.hpp index 7b01051..d768ab1 100644 --- a/src/easy/types_easy.hpp +++ b/src/easy/types_easy.hpp @@ -20,11 +20,9 @@ #include #include #include -#include using std::string; using std::chrono::system_clock; -using std::vector; namespace Mastodon { @@ -121,11 +119,14 @@ namespace Easy * * @since 0.100.0 */ - typedef struct stream_event + typedef struct stream_event_type { event_type type = event_type::Undefined; string data; - } stream_event; + } stream_event_type; + + [[deprecated("Replaced by Mastodon::Easy::stream_event_type")]] + typedef stream_event_type stream_event; /*! * @brief Type of notification and 'push is requested or not'. @@ -138,21 +139,12 @@ namespace Easy bool pushreq = false; } alert_type; - /*! - * @brief Vector of Easy::alert_type. - * - * Used in PushSubscription::alerts(). - * - * @since 0.100.0 - */ - typedef vector alerts; - /*! * @brief Type for time. Converts to time_point and string. * * @since 0.100.0 */ - struct time + struct time_type { system_clock::time_point timepoint = system_clock::time_point(); @@ -171,7 +163,7 @@ namespace Easy * @since 0.100.0 */ friend std::ostream &operator <<(std::ostream &out, - const Easy::time &t); + const Easy::time_type &t); /*! * @brief Converts time to a string. @@ -196,6 +188,9 @@ namespace Easy const bool &local = true) const; }; + [[deprecated("Replaced by Mastodon::Easy::time_type")]] + typedef time_type time; + /*! * @brief Describes an account-field. * @@ -205,17 +200,18 @@ namespace Easy { const string name; const string value; - Easy::time verified_at; + Easy::time_type verified_at; } account_field_type; /*! - * @brief Vector of Easy::account_field_type. - * - * Used in Easy::Account. + * @brief URLs returned by Instance::urls(). * * @since 0.106.0 */ - typedef vector account_fields; + typedef struct urls_type + { + string streaming_api; + } urls_type; } } #endif // MASTODON_CPP_EASY_TYPES_EASY_HPP