Added Easy::time as time type.
the build was successful Details

This commit is contained in:
tastytea 2019-03-29 14:44:39 +01:00
parent dff3b11c00
commit 54a1fb0d3e
Signed by: tastytea
GPG Key ID: CFC39497F1B26E07
38 changed files with 395 additions and 339 deletions

View File

@ -25,6 +25,43 @@
using namespace Mastodon;
using std::string;
Easy::time::operator const system_clock::time_point()
{
return timepoint;
}
Easy::time::operator const string()
{
return strtime("%FT%T%z", true);
}
const string Easy::time::strtime(const string &format, const bool &local) const
{
constexpr std::uint16_t bufsize = 1024;
std::time_t time = system_clock::to_time_t(timepoint);
std::tm *timeinfo;
if (local)
{
timeinfo = std::localtime(&time);
}
else
{
timeinfo = std::gmtime(&time);
}
char buffer[bufsize];
std::strftime(buffer, bufsize, format.c_str(), timeinfo);
return buffer;
}
std::ostream &Mastodon::Easy::operator <<(std::ostream &out,
const Easy::time &t)
{
out << t.strtime("%FT%T%z", true);
return out;
}
Easy::API::API(const string &instance, const string &access_token)
: Mastodon::API(instance, access_token)
{}
@ -83,39 +120,6 @@ const Easy::Link Easy::API::get_link() const
return Link(get_header("Link"));
}
const string Easy::API::strtime_utc(const system_clock::time_point &timepoint,
const string &format)
{
return strtime(timepoint, format, true);
}
const string Easy::API::strtime_local(const system_clock::time_point &timepoint,
const string &format)
{
return strtime(timepoint, format, false);
}
const string Easy::API::strtime(const system_clock::time_point &timepoint,
const string &format, const bool &utc)
{
constexpr std::uint16_t bufsize = 1024;
std::time_t time = system_clock::to_time_t(timepoint);
std::tm *timeinfo;
if (utc)
{
timeinfo = std::gmtime(&time);
}
else
{
timeinfo = std::localtime(&time);
}
char buffer[bufsize];
std::strftime(buffer, bufsize, format.c_str(), timeinfo);
return buffer;
}
Easy::Link::Link(const string &link_header)
: _next()
, _prev()

View File

@ -25,13 +25,14 @@
#include <functional>
#include <ostream>
#include <jsoncpp/json/json.h>
#include "return_types_easy.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/return_types_easy.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/return_types_easy.hpp>
#endif
using std::string;
@ -134,6 +135,38 @@ namespace Easy
*/
typedef std::map<Easy::notification_type, bool> alertmap;
struct time
{
system_clock::time_point timepoint = system_clock::time_point();
operator const system_clock::time_point();
operator const string();
friend std::ostream &operator <<(std::ostream &out,
const Easy::time &t);
/*!
* @brief Converts time to a string.
*
* The return value can not exceed 1023 chars.
*
* @param format The format of the string, same as with
* `strftime`.
* @param local Use local time (default).
*
* Example:
* @code
* Mastodon::Easy::time timepoint = status.created_at();
* std::cout << timepoint.strtime("%F, %T UTC", false) << '\n';
* @endcode
*
* @return The time as string.
*
* @since 0.100.0
*/
const string strtime (const string &format,
const bool &local = true) const;
};
// TODO: Get rid of forward declarations.
class Account;
class Application;
@ -253,42 +286,6 @@ namespace Easy
*/
const Link get_link() const;
/*!
* @brief Converts a time_point to a string
*
* The return value can not exceed 1023 chars.
*
* @param timepoint The timepoint
* @param format The format of the string, same as with
* `strftime`.
*
* Example:
* @code
* auto timepoint = status.created_at();
* cout << Easy::strtime_utc(timepoint, "%F, %T") << '\n';
* @endcode
*
* @return The UTC time as string
*
* @since 0.11.0
*/
// TODO: Time type, convertible to time_point, str_utc and str_local.
static const string strtime_utc(const system_clock::time_point &timepoint,
const string &format);
/*!
* @brief See strtime_utc
*
* @return The local time as string
*
* @since 0.11.0
*/
static const string strtime_local(const system_clock::time_point &timepoint,
const string &format);
// #### simple calls ####
// TODO: Own file.
/*!
* @brief Sends a post.
*
@ -323,12 +320,7 @@ namespace Easy
const return_entity_vector<Easy::Notification> get_notifications(
const uint16_t limit = 20, const string since_id = "",
const string max_id = "");
protected:
inline static const string strtime
(const system_clock::time_point &timepoint,
const string &format, const bool &utc);
};
};
}
}

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
@ -71,9 +71,9 @@ bool Account::bot() const
return get_bool("bot");
}
const system_clock::time_point Account::created_at() const
const Easy::time Account::created_at() const
{
return get_time_point("created_at");
return get_time("created_at");
}
const string Account::display_name() const
@ -296,27 +296,27 @@ Account::Source Account::Source::privacy(const Easy::visibility_type &privacy)
{
case visibility_type::Public:
{
strprivacy = "public";
strprivacy = "public";
break;
}
case visibility_type::Unlisted:
{
strprivacy = "unlisted";
strprivacy = "unlisted";
break;
}
case visibility_type::Private:
{
strprivacy = "private";
strprivacy = "private";
break;
}
case visibility_type::Direct:
{
strprivacy = "direct";
strprivacy = "direct";
break;
}
default:
{
strprivacy = "undefined";
strprivacy = "undefined";
break;
}
}

View File

@ -19,32 +19,33 @@
#include <string>
#include <cstdint>
#include <chrono>
#include <vector>
#include <utility>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
using std::uint64_t;
using std::chrono::system_clock;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold accounts.
*
*
* @since before 0.11.0
*/
class Easy::Account : public Easy::Entity
class Account : public Entity
{
public:
using Entity::Entity;
@ -63,137 +64,137 @@ namespace Mastodon
*
* `username` for users on the same instance, `user@hostname`
* for users on other instances.
*
*
* @since before 0.11.0
*/
const string acct() const;
/*!
* @brief Returns URL of avatar
*
*
* @since before 0.11.0
*/
const string avatar() const;
/*!
* @brief Sets avatar
*
*
* Filename or base64-encoded
*
*
* @since 0.18.5
*/
Account avatar(const string &avatar);
/*!
* @brief Returns URL of static avatar
*
*
* @since before 0.11.0
*/
const string avatar_static() const;
/*!
* @brief Returns true if the account performs automated actions
*
*
* @since 0.16.0
*/
bool bot() const;
/*!
* @brief Returns time of creation
*
*
* @since before 0.11.0
*/
const system_clock::time_point created_at() const;
const Easy::time created_at() const;
/*!
* @brief Returns display name
*
*
* @since before 0.11.0
*/
const string display_name() const;
/*!
* @brief Sets display name
*
*
* @since 0.18.5
*/
Account display_name(const string &display_name);
/*!
* @brief Returns metadata fields
*
*
* @since 0.16.1
*/
const std::vector<fields_pair> fields() const;
/*!
* @brief Sets metadata fields
*
*
* @since 0.18.5
*/
Account fields(std::vector<fields_pair> &fields);
/*!
* @brief Returns number of followers
*
*
* @since before 0.11.0
*/
uint64_t followers_count() const;
/*!
* @brief Returns number of people this account follows
*
*
* @since before 0.11.0
*/
uint64_t following_count() const;
/*!
* @brief Returns URL of header image
*
*
* @since before 0.11.0
*/
const string header() const;
/*!
* @brief Sets header image
*
*
* Filename or base64-encoded.
*
*
* @since 0.18.5
*/
Account header(const string &header);
/*!
* @brief Returns URL of static header image
*
*
* @since before 0.11.0
*/
const string header_static() const;
/*!
* @brief Returns account-ID
*
*
* @since before 0.11.0
*/
const string id() const;
/*!
* @brief Returns true if the account is locked
*
*
* @since before 0.11.0
*/
bool locked() const;
/*!
* @brief Sets locked state
*
*
* @since 0.18.5
*/
Account locked(const bool &locked);
/*!
* @brief Returns true if the account has been moved
*
*
* @since before 0.11.0
*/
bool has_moved() const;
@ -201,42 +202,42 @@ namespace Mastodon
/*!
* @brief If the owner decided to switch accounts, new account is in
* this attribute
*
*
* @since before 0.11.0
*/
const Account moved() const;
/*!
* @brief Returns note
*
*
* @since before 0.11.0
*/
const string note() const;
/*!
* @brief Sets note
*
*
* @since 0.18.5
*/
Account note(const string &note);
/*!
* @brief Returns default privacy of new toots
*
*
* @since before 0.11.0
*/
visibility_type privacy() const;
/*!
* @brief Returns if media is marked as sensitive by default
*
*
* @since before 0.11.0
*/
bool sensitive() const;
/*!
* @brief Class to hold source attribute
*
*
* @since 0.18.5
*/
class Source : public Easy::Entity
@ -246,14 +247,14 @@ namespace Mastodon
* @brief Constructs an Account::Source object from a JSON string.
*
* @param json JSON string
*
*
* @since 0.18.5
*/
explicit Source(const string &json);
/*!
* @brief Constructs an empty Account::Source object.
*
*
* @since 0.18.5
*/
Source();
@ -262,56 +263,56 @@ namespace Mastodon
/*!
* @brief Returns metadata fields
*
*
* @since 0.18.5
*/
const std::vector<fields_pair> fields() const;
/*!
* @brief Sets metadata fields
*
*
* @since 0.18.5
*/
Source fields(std::vector<fields_pair> &fields);
/*!
* @brief Returns note in plain text
*
*
* @since 0.18.5
*/
const string note() const;
/*!
* @brief Sets note
*
*
* @since 0.18.5
*/
Source note(const string &note);
/*!
* @brief Returns default privacy of new toots
*
*
* @since 0.18.5
*/
visibility_type privacy() const;
/*!
* @brief Sets default privacy of new toots
*
*
* @since 0.18.5
*/
Source privacy(const visibility_type &privacy);
/*!
* @brief Returns if media is marked as sensitive by default
*
*
* @since 0.18.5
*/
bool sensitive() const;
/*!
* @brief Sets if media is marked as sensitive by default
*
*
* @since 0.18.5
*/
Source sensitive(const bool &sensitive);
@ -322,25 +323,26 @@ namespace Mastodon
/*!
* @brief Returns number of statuses
*
*
* @since before 0.11.0
*/
uint64_t statuses_count() const;
/*!
* @brief Returns URL of the profile
*
*
* @since before 0.11.0
*/
const string url() const;
/*!
* @brief Returns username (without \@hostname)
*
*
* @since before 0.11.0
*/
const string username() const;
};
}
}
#endif // MASTODON_CPP_EASY_ACCOUNT_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.

View File

@ -18,27 +18,30 @@
#define MASTODON_CPP_EASY_APPLICATION_HPP
#include <string>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold applications.
*
*
* @since before 0.11.0
*/
class Easy::Application : public Easy::Entity
class Application : public Entity
{
public:
using Entity::Entity;
@ -47,18 +50,19 @@ namespace Mastodon
/*!
* @brief Returns the name of the application
*
*
* @since before 0.11.0
*/
const string name() const;
/*!
* @brief Returns the website of the application
*
*
* @since before 0.11.0
*/
const string website() const;
};
}
}
#endif // MASTODON_CPP_EASY_APPLICATION_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.

View File

@ -21,28 +21,31 @@
#include <cstdint>
#include <chrono>
#include <array>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
using std::uint64_t;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold attachments
*
*
* @since before 0.11.0
*/
class Easy::Attachment : public Easy::Entity
class Attachment : public Entity
{
public:
using Entity::Entity;
@ -51,56 +54,56 @@ namespace Mastodon
/*!
* @brief Aspect of original image
*
*
* @since before 0.11.0
*/
double aspect() const;
/*!
* @brief Aspect of preview image
*
*
* @since before 0.11.0
*/
double aspect_small() const;
/*!
* @brief Returns the bitrate of a video
*
*
* @since before 0.11.0
*/
uint64_t bitrate() const;
/*!
* @brief Returns the image description
*
*
* @since before 0.11.0
*/
const string description() const;
/*!
* @brief Sets the image description
*
*
* @since 0.17.0
*/
Attachment description(const string &description);
/*!
* @brief Returns the duration of a video in seconds
*
*
* @since before 0.11.0
*/
const std::chrono::duration<double> duration() const;
/*!
* @brief Gets file to upload
*
*
* @since 0.17.0
*/
const string file() const;
/*!
* @brief Sets file to upload
*
*
* @since 0.17.0
*
* @param file Filename
@ -109,109 +112,109 @@ namespace Mastodon
/*!
* @brief Returns the focus point (x, y)
*
*
* Values are between -1.0 and 1.0.
*
*
* @since before 0.11.0
*/
const std::array<double, 2> focus() const;
/*!
* @brief Sets the focus point (x, y)
*
*
* Values are between -1.0 and 1.0.
*
*
* @since 0.17.0
*/
Attachment focus(const std::array<double, 2> &focus);
/*!
* @brief Returns the framerate of a video in frames per second
*
*
* @since before 0.11.0
*/
double framerate() const;
/*!
* @brief Returns the height of the original image
*
*
* @since before 0.11.0
*/
uint64_t height() const;
/*!
* @brief Returns the height of the preview image
*
*
* @since before 0.11.0
*/
uint64_t height_small() const;
/*!
* @brief Returns the ID of the attachment
*
*
* @since before 0.11.0
*/
const string id() const;
/*!
* @brief Returns the URL of the preview image
*
*
* @since before 0.11.0
*/
const string preview_url() const;
/*!
* @brief Returns the remote URL of the original image
*
*
* @since before 0.11.0
*/
const string remote_url() const;
/*!
* @brief Returns the size of the original image
*
*
* @since before 0.11.0
*/
const string size() const;
/*!
* @brief Returns the size of the preview image
*
*
* @since before 0.11.0
*/
const string size_small() const;
/*!
* @brief Returns shorter URL for the image
*
*
* @since before 0.11.0
*/
const string text_url() const;
/*!
* @brief Returns attachment type
*
*
* @since before 0.11.0
*/
attachment_type type() const;
/*!
* @brief Returns URL of the locally hosted version of the image
*
*
* @since before 0.11.0
*/
const string url() const;
/*!
* @brief Returns the width of the original image
*
*
* @since before 0.11.0
*/
uint64_t width() const;
/*!
* @brief Returns the width of the preview image
*
*
* @since before 0.11.0
*/
uint64_t width_small() const;
@ -219,5 +222,6 @@ namespace Mastodon
};
}
}
#endif // MASTODON_CPP_EASY_ATTACHMENT_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.

View File

@ -19,28 +19,31 @@
#include <string>
#include <cstdint>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
using std::uint64_t;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold cards
*
*
* @since before 0.11.0
*/
class Easy::Card : public Easy::Entity
class Card : public Entity
{
public:
using Entity::Entity;
@ -49,88 +52,89 @@ namespace Mastodon
/*!
* @brief Returns the name of the author
*
*
* @since before 0.11.0
*/
const string author_name() const;
/*!
* @brief Returns the URL of the author
*
*
* @since before 0.11.0
*/
const string author_url() const;
/*!
* @brief Returns the description
*
*
* @since before 0.11.0
*/
const string description() const;
/*!
* @brief Returns the height of the card
*
*
* @since before 0.11.0
*/
uint64_t height() const;
/*!
* @brief Returns the HTML
*
*
* @since before 0.11.0
*/
const string html() const;
/*!
* @brief Returns the URL of the image associated with the card
*
*
* @since before 0.11.0
*/
const string image() const;
/*!
* @brief Returns the name of the provider
*
*
* @since before 0.11.0
*/
const string provider_name() const;
/*!
* @brief Returns the URL of the provider
*
*
* @since before 0.11.0
*/
const string provider_url() const;
/*!
* @brief Returns the title
*
*
* @since before 0.11.0
*/
const string title() const;
/*!
* @brief Returns the type of the card
*
*
* @since before 0.11.0
*/
Easy::card_type type() const;
/*!
* @brief Returns the URL associated with the card
*
*
* @since before 0.11.0
*/
const string url() const;
/*!
* @brief Returns the width of the card
*
*
* @since before 0.11.0
*/
uint64_t width() const;
};
}
}
#endif // MASTODON_CPP_EASY_CARD_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.

View File

@ -19,29 +19,32 @@
#include <string>
#include <vector>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entities/status.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entities/status.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold contexts
*
*
* @since before 0.11.0
*/
class Easy::Context : public Easy::Entity
class Context : public Entity
{
public:
using Entity::Entity;
@ -50,18 +53,19 @@ namespace Mastodon
/*!
* @brief Returns the ancestors of the Status as vector of Statuses
*
*
* @since before 0.11.0
*/
const std::vector<Status> ancestors() const;
/*!
* @brief Returns the descendants of the Status as vector of Statuses
*
*
* @since before 0.11.0
*/
const std::vector<Status> descendants() const;
};
}
}
#endif // MASTODON_CPP_EASY_CONTEXT_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.

View File

@ -18,27 +18,30 @@
#define MASTODON_CPP_EASY_EMOJI_HPP
#include <string>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold emojis
*
*
* @since before 0.11.0
*/
class Easy::Emoji : public Easy::Entity
class Emoji : public Entity
{
public:
using Entity::Entity;
@ -47,25 +50,26 @@ namespace Mastodon
/*!
* @brief Returns the shortcode of the emoji
*
*
* @since before 0.11.0
*/
const string shortcode() const;
/*!
* @brief Returns the URL to the emoji static image
*
*
* @since before 0.11.0
*/
const string static_url() const;
/*!
* @brief Returns the URL to the emoji image
*
*
* @since before 0.11.0
*/
const string url() const;
};
}
}
#endif // MASTODON_CPP_EASY_EMOJI_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.

View File

@ -19,7 +19,6 @@
#include <string>
#include <vector>
#include "easy/entity.hpp"
using std::uint64_t;
@ -28,22 +27,26 @@ using std::uint64_t;
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entities/account.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entities/account.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold instances
*
*
* @since before 0.11.0
*/
class Easy::Instance : public Easy::Entity
class Instance : public Entity
{
public:
using Entity::Entity;
@ -52,14 +55,14 @@ namespace Mastodon
/*!
* @brief Returns the Account of the admin or another contact person
*
*
* @since before 0.11.0
*/
const Account contact_account() const;
/*!
* @brief Returns the description of the instance
*
*
* @since before 0.11.0
*/
const string description() const;
@ -67,7 +70,7 @@ namespace Mastodon
/*!
* @brief Returns the email address which can be used to contact the
* instance administrator
*
*
* @since before 0.11.0
*/
const string email() const;
@ -75,35 +78,35 @@ namespace Mastodon
/*!
* @brief Returns a vector of ISO 6391 language codes the instance has
* chosen to advertise
*
*
* @since before 0.11.0
*/
const std::vector<string> languages() const;
/*!
* @brief Returns the title of the instance
*
*
* @since before 0.11.0
*/
const string title() const;
/*!
* @brief Returns the URI of the instance
*
*
* @since before 0.11.0
*/
const string uri() const;
/*!
* @brief Returns the version used by the instance
*
*
* @since before 0.11.0
*/
const string version() const;
/*!
* @brief Returns the URL for the streaming API
*
*
* @since before 0.11.0
*/
const string streaming_api() const;
@ -119,5 +122,6 @@ namespace Mastodon
uint64_t max_toot_chars() const;
};
}
}
#endif // MASTODON_CPP_EASY_INSTANCE_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.

View File

@ -20,28 +20,31 @@
#include <string>
#include <vector>
#include <cstdint>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
using std::uint64_t;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold lists
*
*
* @since before 0.11.0
*/
class Easy::List : public Easy::Entity
class List : public Entity
{
public:
using Entity::Entity;
@ -50,18 +53,19 @@ namespace Mastodon
/*!
* @brief Returns list-ID
*
*
* @since before 0.11.0
*/
const string id() const;
/*!
* @brief Returns title
*
*
* @since before 0.11.0
*/
const string title() const;
};
}
}
#endif // MASTODON_CPP_EASY_LIST_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.

View File

@ -19,15 +19,16 @@
#include <string>
#include <cstdint>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
@ -35,13 +36,15 @@ using std::uint64_t;
using std::chrono::system_clock;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold mentions
*
*
* before 0.11.0
*/
class Easy::Mention : public Easy::Entity
class Mention : public Entity
{
public:
using Entity::Entity;
@ -50,32 +53,33 @@ namespace Mastodon
/*!
* @brief Returns acct
*
*
* @since before 0.11.0
*/
const string acct() const;
/*!
* @brief Returns account ID
*
*
* @since before 0.11.0
*/
const string id() const;
/*!
* @brief Returns the URL of user's profile
*
*
* @since before 0.11.0
*/
const string url() const;
/*!
* @brief Returns the username of the account
*
*
* @since before 0.11.0
*/
const string username() const;
};
}
}
#endif // MASTODON_CPP_EASY_MENTION_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
@ -45,9 +45,9 @@ const Easy::Account Notification::account() const
return Easy::Account();
}
const system_clock::time_point Notification::created_at() const
const Easy::time Notification::created_at() const
{
return get_time_point("created_at");
return get_time("created_at");
}
const string Notification::id() const

View File

@ -19,8 +19,6 @@
#include <string>
#include <cstdint>
#include <chrono>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
@ -28,25 +26,28 @@
#include "easy/easy.hpp"
#include "easy/entities/account.hpp"
#include "easy/entities/status.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entities/account.hpp>
#include <mastodon-cpp/easy/entities/status.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
using std::uint64_t;
using std::chrono::system_clock;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold notifications
*
*
* @since before 0.11.0
*/
class Easy::Notification : public Easy::Entity
class Notification : public Entity
{
public:
using Entity::Entity;
@ -55,21 +56,21 @@ namespace Mastodon
/*!
* @brief Returns the Account sending the notification to the user
*
*
* @since before 0.11.0
*/
const Account account() const;
/*!
* @brief Returns time of creation
*
*
* @since before 0.11.0
*/
const system_clock::time_point created_at() const;
const Easy::time created_at() const;
/*!
* @brief Returns notification ID
*
*
* @since before 0.11.0
*/
const string id() const;
@ -77,18 +78,19 @@ namespace Mastodon
/*!
* @brief Returns the Status associated with the notification, if
* applicable
*
*
* @since before 0.11.0
*/
const Status status() const;
/*!
* @brief Returns notification type
*
*
* @since before 0.11.0
*/
Easy::notification_type type() const;
};
}
}
#endif // MASTODON_CPP_EASY_NOTIFICATION_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.

View File

@ -20,27 +20,30 @@
#include <string>
#include <cstdint>
#include <map>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold push subscriptions.
*
* @since 0.14.0
*/
class Easy::PushSubscription : public Easy::Entity
class PushSubscription : public Entity
{
public:
using Entity::Entity;
@ -49,21 +52,21 @@ namespace Mastodon
/*!
* @brief Returns push subscription ID
*
*
* @since 0.14.0
*/
const string id() const;
/*!
* @brief Returns the endpoint URL
*
*
* @since 0.14.0
*/
const string endpoint() const;
/*!
* @brief Returns the server public key for signature verification
*
*
* @since 0.14.0
*/
const string server_key() const;
@ -72,7 +75,7 @@ namespace Mastodon
/*!
* @brief Returns a map of 'notification event type' and
* 'push is requested or not'
*
*
* @since 0.14.0
*/
const Easy::alertmap alerts() const;
@ -86,5 +89,6 @@ namespace Mastodon
bool s_to_b(const string &str) const;
};
}
}
#endif // MASTODON_CPP_EASY_PUSHSUBSCRIPTION_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.

View File

@ -19,28 +19,31 @@
#include <string>
#include <cstdint>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
using std::uint64_t;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold relationships
*
*
* before 0.11.0
*/
class Easy::Relationship : public Easy::Entity
class Relationship : public Entity
{
public:
using Entity::Entity;
@ -49,74 +52,75 @@ namespace Mastodon
/*!
* @brief Returns true if the user is blocking the account
*
*
* @since before 0.11.0
*/
bool blocking() const;
/*!
* @brief Returns true if the user is blocking the account's domain
*
*
* @since before 0.11.0
*/
bool domain_blocking() const;
/*!
* @brief Returns true if the account is endorsed by the user
*
*
* @since 0.19.0
*/
bool endorsed() const;
/*!
* @brief Returns true if the user is being followed by the account
*
*
* @since before 0.11.0
*/
bool followed_by() const;
/*!
* @brief Returns true if the user is being following the account
*
*
* @since before 0.11.0
*/
bool following() const;
/*!
* @brief Returns the target account ID
*
*
* @since before 0.11.0
*/
const string id() const;
/*!
* @brief Returns true if the user is muting the account
*
*
* @since before 0.11.0
*/
bool muting() const;
/*!
* @brief Returns true if the user is also muting notifications
*
*
* @since before 0.11.0
*/
bool muting_notifications() const;
/*!
* @brief Returns true if the user has requested to follow the account
*
*
* @since before 0.11.0
*/
bool requested() const;
/*!
* @brief Returns true if the user is showing notifications
*
*
* @since 0.19.0
*/
bool showing_notifications() const;
};
}
}
#endif // MASTODON_CPP_EASY_RELATIONSHIP_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
@ -39,4 +39,3 @@ const string Report::id() const
{
return get_string("id");
}

View File

@ -19,27 +19,30 @@
#include <string>
#include <cstdint>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold reports
*
*
* before 0.11.0
*/
class Easy::Report : public Easy::Entity
class Report : public Entity
{
public:
using Entity::Entity;
@ -49,18 +52,19 @@ namespace Mastodon
/*!
* @brief Returns true if an action was taken in response to the
* report
*
*
* @since before 0.11.0
*/
bool action_taken() const;
/*!
* @brief Returns the ID of the report
*
*
* @since before 0.11.0
*/
const string id() const;
};
}
}
#endif // MASTODON_CPP_EASY_REPORT_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.

View File

@ -19,7 +19,6 @@
#include <string>
#include <vector>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
@ -28,24 +27,28 @@
#include "easy/entities/account.hpp"
#include "easy/entities/status.hpp"
#include "easy/entities/tag.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entities/account.hpp>
#include <mastodon-cpp/easy/entities/status.hpp>
#include <mastodon-cpp/easy/entities/tag.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold results
*
*
* @since before 0.11.0
*/
class Easy::Results : public Easy::Entity
class Results : public Entity
{
public:
using Entity::Entity;
@ -54,21 +57,21 @@ namespace Mastodon
/*!
* @brief Returns an array of matched Accounts
*
*
* @since before 0.11.0
*/
const std::vector<Account> accounts() const;
/*!
* @brief Returns an array of matched Statuses
*
*
* @since before 0.11.0
*/
const std::vector<Status> statuses() const;
/*!
* @brief Returns an array of matched hashtags as string
*
*
* @since 0.16.0
*/
const std::vector<string> hashtags_v1() const;
@ -81,5 +84,6 @@ namespace Mastodon
const std::vector<Tag> hashtags_v2() const;
};
}
}
#endif // MASTODON_CPP_EASY_RESULTS_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
@ -77,9 +77,9 @@ const Easy::Card Status::card() const
return Easy::Card();
}
const system_clock::time_point Status::created_at() const
const Easy::time Status::created_at() const
{
return get_time_point("created_at");
return get_time("created_at");
}
const string Status::content() const

View File

@ -19,9 +19,7 @@
#include <string>
#include <cstdint>
#include <chrono>
#include <vector>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
@ -34,6 +32,7 @@
#include "easy/entities/tag.hpp"
#include "easy/entities/application.hpp"
#include "easy/entities/card.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
@ -44,20 +43,22 @@
#include <mastodon-cpp/easy/entities/tag.hpp>
#include <mastodon-cpp/easy/entities/application.hpp>
#include <mastodon-cpp/easy/entities/card.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
using std::uint64_t;
using std::chrono::system_clock;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold statuses
*
*
* @since before 0.11.0
*/
class Easy::Status : public Easy::Entity
class Status : public Entity
{
public:
using Entity::Entity;
@ -66,119 +67,119 @@ namespace Mastodon
/*!
* @brief Returns an array of matched accounts.
*
*
* @since before 0.11.0
*/
const Account account() const;
/*!
* @brief Returns application from which the status was posted.
*
*
* @since before 0.11.0
*/
const Application application() const;
/*!
* @brief Returns card
*
*
* @since 0.19.0
*/
const Card card() const;
/*!
* @brief Returns time of creation
*
*
* @since before 0.11.0
*/
const system_clock::time_point created_at() const;
const Easy::time created_at() const;
/*!
* @brief Returns content of status
*
*
* @since before 0.11.0
*/
const string content() const;
/*!
* @brief Sets content of status
*
*
* @since 0.17.0
*/
Status content(const string &content);
/*!
* @brief Returns an array of emojis
*
*
* @since before 0.11.0
*/
const std::vector<Emoji> emojis() const;
/*!
* @brief Returns true if the user has favourited the status
*
*
* @since before 0.11.0
*/
bool favourited() const;
/*!
* @brief Returns the number of favourites
*
*
* @since before 0.11.0
*/
uint64_t favourites_count() const;
/*!
* @brief Returns the ID of the status
*
*
* @since before 0.11.0
*/
const string id() const;
/*!
* @brief Returns the ID of the status it replies to
*
*
* @since before 0.11.0
*/
const string in_reply_to_id() const;
/*!
* @brief Sets the ID of the status it replies to
*
*
* @since 0.17.0
*/
Status in_reply_to_id(const string &in_reply_to_id);
/*!
* @brief Returns the ID of the account it replies to
*
*
* @since before 0.11.0
*/
const string in_reply_to_account_id() const;
/*!
* @brief Returns the language of the status
*
*
* @since before 0.11.0
*/
const string language() const;
/*!
* @brief Overrides the language of the status (ISO 639-2)
*
*
* @since 0.17.0
*/
Status language(const string &language);
/*!
* @brief Returns the attachments
*
*
* @since before 0.11.0
*/
const std::vector<Attachment> media_attachments() const;
/*!
* @brief Sets the attachments
*
*
* @since 0.17.0
*/
Status media_attachments
@ -186,116 +187,117 @@ namespace Mastodon
/*!
* @brief Returns the mentions
*
*
* @since before 0.11.0
*/
const std::vector<Mention> mentions() const;
/*!
* @brief Returns true if the user muted the conversation
*
*
* @since before 0.11.0
*/
bool muted() const;
/*!
* @brief Returns true if the status is pinned
*
*
* @since before 0.11.0
*/
bool pinned() const;
/*!
* @brief Returns the reblogged Status
*
*
* @since before 0.11.0
*/
const Status reblog() const;
/*!
* @brief Returns true if the user has reblogged the status
*
*
* @since before 0.11.0
*/
bool reblogged() const;
/*!
* @brief Returns the number of reblogs for the status
*
*
* @since before 0.11.0
*/
uint64_t reblogs_count() const;
/*!
* @brief Returns the number of replies for the status
*
*
* @since 0.19.0
*/
uint64_t replies_count() const;
/*!
* @brief Returns true if the attachments should be hidden by default
*
*
* @since before 0.11.0
*/
bool sensitive() const;
/*!
* @brief Sets sensitive flag for attachments
*
*
* @since 0.17.0
*/
Status sensitive(const bool &sensitive);
/*!
* @brief Returns the spoiler text
*
*
* @since before 0.11.0
*/
const string spoiler_text() const;
/*!
* @brief Sets the spoiler text
*
*
* @since 0.17.0
*/
Status spoiler_text(const string &spoiler_text);
/*!
* @brief Returns the tags
*
*
* @since before 0.11.0
*/
const std::vector<Tag> tags() const;
/*!
* @brief Returns the Fediverse-unique resource ID
*
*
* @since before 0.11.0
*/
const string uri() const;
/*!
* @brief Returns the URL to the status page
*
*
* @since before 0.11.0
*/
const string url() const;
/*!
* @brief Returns the visibility of the status
*
*
* @since before 0.11.0
*/
visibility_type visibility() const;
/*!
* @brief Sets the visibility of the status
*
*
* @since 0.17.0
*/
Status visibility(const visibility_type &visibility);
};
}
}
#endif // MASTODON_CPP_EASY_STATUS_HPP

View File

@ -1,6 +1,6 @@
/* This file is part of mastodon-cpp.
* Copyright © 2018, 2019 tastytea <tastytea@tastytea.de>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
@ -77,18 +77,18 @@ uint64_t Tag::History::accounts()
return stouint64(get_string("accounts"));
}
const system_clock::time_point Tag::History::day()
const Easy::time Tag::History::day()
{
const Json::Value node = get("day");
if (node.isString())
{
std::chrono::seconds seconds(stouint64(node.asString()));
return system_clock::time_point(seconds);
return {system_clock::time_point(seconds)};
}
ttdebug << "Could not get data: day\n";
return system_clock::time_point();
return Easy::time();
}
uint64_t Tag::History::uses()

View File

@ -18,36 +18,37 @@
#define MASTODON_CPP_EASY_TAG_HPP
#include <string>
#include <chrono>
#include <cstdint>
#include "easy/entity.hpp"
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entity.hpp"
#else
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/easy.hpp>
#include <mastodon-cpp/easy/entity.hpp>
#endif
using std::string;
using std::chrono::system_clock;
using std::uint64_t;
namespace Mastodon
{
namespace Easy
{
/*!
* @brief Class to hold tags.
*
*
* @since before 0.11.0
*/
class Easy::Tag : public Easy::Entity
class Tag : public Entity
{
public:
/*!
* @brief Class to hold Tag history
*
*
* @since 0.16.0
*/
class History : public Easy::Entity
@ -59,21 +60,21 @@ namespace Mastodon
/*!
* @brief Returns the number of accounts using that hashtag.
*
*
* @since 0.16.0
*/
uint64_t accounts();
/*!
* @brief Returns the day.
*
*
* @since 0.16.0
*/
const system_clock::time_point day();
const Easy::time day();
/*!
* @brief Returns the number of accounts using that hashtag.
*
*
* @since 0.16.0
*/
uint64_t uses();
@ -85,25 +86,26 @@ namespace Mastodon
/*!
* @brief Returns the name of the tag
*
*
* @since before 0.11.0
*/
const string name() const;
/*!
* @brief Returns the URL of the tag
*
*
* @since before 0.11.0
*/
const string url() const;
/*!
* @brief Returns the history of the tag
*
*
* @since 0.16.0
*/
const std::vector<History> history() const;
};
}
}
#endif // MASTODON_CPP_EASY_TAG_HPP

View File

@ -19,7 +19,6 @@
#include <sstream>
#include <chrono>
#include <regex>
// #include "easy.hpp"
#include "easy/entity.hpp"
#include "debug.hpp"
@ -212,8 +211,7 @@ bool Easy::Entity::get_bool(const string &key) const
return false;
}
const system_clock::time_point
Easy::Entity::get_time_point(const string &key) const
const Easy::time Easy::Entity::get_time(const string &key) const
{
const Json::Value node = get(key);
@ -224,12 +222,12 @@ const system_clock::time_point
sstime >> std::get_time(&tm, "%Y-%m-%dT%T");
std::time_t time = timegm(&tm);
_was_set = true;
return system_clock::from_time_t(time);
return { system_clock::from_time_t(time) };
}
_was_set = false;
// Return clocks epoch
return system_clock::time_point();
return { system_clock::time_point() };
}
const std::vector<string> Easy::Entity::get_vector(const string &key) const

View File

@ -18,11 +18,16 @@
#define ENTITY_HPP
#include <string>
#include <chrono>
#include <jsoncpp/json/json.h>
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
#include "easy/easy.hpp"
#else
#include <mastodon-cpp/easy/easy.hpp>
#endif
using std::string;
using std::chrono::system_clock;
namespace Mastodon
{
@ -194,11 +199,11 @@ namespace Easy
bool get_bool(const string &key) const;
/*!
* @brief Returns the value of key as time_point
* @brief Returns the value of key as Easy::time.
*
* Returns clocks epoch if the value does not exist or is null.
*/
const system_clock::time_point get_time_point(const string &key) const;
const Easy::time get_time(const string &key) const;
/*!
* @brief Returns the value of key as vector

View File

@ -38,6 +38,8 @@ namespace Easy
/*!
* @brief Return types for calls that return a single `Easy::Entity`.
*
* @since 0.100.0
*/
template <typename T>
struct return_entity : return_base

View File

@ -47,7 +47,7 @@ return_call::operator const string() const
return answer;
}
std::ostream &operator <<(std::ostream &out, const return_call &ret)
std::ostream &Mastodon::operator <<(std::ostream &out, const return_call &ret)
{
out << ret.answer;
return out;