From a46381b7967090f45e52a98179cef4e4602b7f4e Mon Sep 17 00:00:00 2001 From: tastytea Date: Thu, 7 Jun 2018 22:50:40 +0200 Subject: [PATCH] 2018-06-07 --- docs/index.html | 253 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 docs/index.html diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..660c7cb --- /dev/null +++ b/docs/index.html @@ -0,0 +1,253 @@ + + + + + + + +mastodon-cpp: Main Page + + + + + + +
+
+ + + + + + +
+
mastodon-cpp +  0.15.1 +
+
+
+ + + + + + +
+
+
+
mastodon-cpp Documentation
+
+
+

mastodon-cpp is a C++ wrapper for the Mastodon API. The library takes care of the network stuff. You submit a query and get the raw JSON. You can then put that JSON into easy to use classes.

+

TODO-list

+

Usage

+

The HTML reference can be generated with build_doc.sh, if doxygen is installed. It is also available at tastytea.github.io/mastodon-cpp/. There are examples in examples/.

+

Upgrading from below 0.13.0

+
    +
  • You have to recompile all applications linking against this library.
  • +
  • We use a mutex now to guard the string that is being written to. You can get a reference to it with Mastodon::API::http::get_mutex() (see examples 9 and 13 for more info). This is only relevant for streams.
  • +
+

Upgrading from below 0.10.0

+

Mastodon::API::get, ::get_stream, ::post, ::put and ::del don't take std::string as parameter to API-calls anymore, only parametermaps. The old behaviour is still supported but is deprecated and will be removed in version 1.0.0.

+

Upgrading from below 0.7.0

+

Your projects will break, sorry. Here are the important changes:

+
    +
  • The header location has changed. They are now in mastodon-cpp/.
  • +
  • Specific network error messages have been replaced by 15, "Network error". You can get the exceptions from curlpp with Mastodon::API::exceptions(true).
  • +
+

Most basic example

+
{C++}
#include <iostream>
#include <string>
#include <mastodon-cpp/mastodon-cpp.hpp>
int main()
{
Mastodon::API masto("social.example.com", "auth_token");
std::string answer;
masto.get(Mastodon::API::v1::accounts_verify_credentials, answer);
std::cout << answer << '\n';
}

Another simple example

+

Using the Easy-class.

+
{C++}
#include <iostream>
#include <string>
#include <vector>
#include <mastodon-cpp/mastodon-cpp.hpp>
#include <mastodon-cpp/easy/all.hpp>
using Mastodon::Easy;
int main()
{
Easy masto("social.example", "");
std::string answer;
masto.get(Mastodon::API::v1::timelines_public, answer);
for (const std::string &str : Easy::json_array_to_vector(answer))
{
Easy::Status status(str);
std::cout << " " << status.account().acct() << " wrote:\n";
std::cout << status.content() << '\n';
}
}

Compiling your project

+

A project consisting of one file can be compiled as follows:

g++ -std=c++14 -lmastodon-cpp example.cpp
+

Error codes

+

mastodon-cpp will never use error codes below 11, except 0.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Code Explanation
0 No error
11 Invalid call
12 Not implemented
13 URL changed (HTTP 301 or 308)
14 Aborted by user
15 Network error (curlpp exception)
~~20~~ ~~Failed to connect~~
~~21~~ ~~Couldn't resolve host~~
~~22~~ ~~Network is unreachable~~
~~23~~ ~~Transfer interrupted~~
~~24~~ ~~SSL error~~
~~25~~ ~~Timeout~~
100 - 999 HTTP status codes
65535 Unknown error
+

If you use a debug build, you get more verbose error messages. Errors 20-25 are no longer in use (since 0.8.9).

+

Useful links

+
    +
  • https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md "Mastodon API reference"
  • +
  • https://github.com/tootsuite/documentation/blob/master/Using-the-API/Streaming-API.md "Mastodon streaming API reference"
  • +
+

Install

+

Packages

+

Every release includes packages for the package managers of Gentoo, Debian and Red Hat.

+

Gentoo

+

Put the ebuild into your local overlay and run ebuild <ebuild path> manifest. Install with emerge mastodon-cpp.

+

Or add my repository and install it from there.

eselect repository add tastytea git https://git.tastytea.de/repos/overlay-tastytea.git
+echo 'dev-cpp/mastodon-cpp ~amd64' >> /etc/portage/package.keywords/mastodon-cpp
+emaint sync -r tastytea
+emerge -a dev-cpp/mastodon-cpp
+

DEB and RPM

+

Prebuilt DEB and RPM packages for x86_64(amd64) are provided with each release. These packages are automatically built and not tested. Install with dpkg -i or rpm -i, respectively.

+

To use the DEB package on stretch, you will need libcurlpp0 from buster or jessie.

+

From source

+

Dependencies

+
    +
  • Tested OS: Linux
  • +
  • C++ compiler (tested: gcc 6.4 / 5.4, clang 5.0)
  • +
  • cmake (tested: 3.9.6)
  • +
  • libcurl (tested: 7.58.0 / 7.35.0)
  • +
  • curlpp (tested: 0.8.1 / 0.7.3)
  • +
  • Optional
      +
    • Easy interface & Examples: jsoncpp (tested: 1.8.1 / 1.7.2)
    • +
    • Documentation: doxygen (tested: 1.8.13)
    • +
    • DEB package: dpkg (tested: 1.19.0.5)
    • +
    • RPM package: rpm (tested: 4.11.0.1)
    • +
    +
  • +
+

Get sourcecode

+

Release

+

Download the current release at GitHub.

+

Development version

+

git clone https://schlomp.space/tastytea/mastodon-cpp.git
+

Compile

+
mkdir build
+cd build/
+cmake ..
+make
+

cmake options:

+
    +
  • -DCMAKE_BUILD_TYPE=Debug for a debug build
  • +
  • -DWITHOUT_EASY=ON to not build the Easy abstractions and to get rid of the jsoncpp-dependency (not recommended)
  • +
  • -DWITH_EXAMPLES=ON if you want to compile the examples
  • +
  • -DWITH_TESTS=ON if you want to compile the tests
  • +
  • -DWITH_DOC=ON if you want to compile the HTML reference
  • +
  • -DWITH_DEB=ON if you want to be able to generate a deb-package
  • +
  • -DWITH_RPM=ON if you want to be able to generate an rpm-package
  • +
+

You can run the tests with ctest .. inside the build directory. To install, run make install.

+

Packages

+

Gentoo

+

Put the ebuild from packages/gentoo into your local overlay and rename it to match the desired version or use the live-ebuild (mastodon-cpp-9999.ebuild) to install the development version.

+

DEB and RPM

+

Compile with -DWITH_DEB=ON or -DWITH_RPM=ON. Run make package from the build directory to generate a DEB/RPM package.

+

Other

+

Run make package from the build directory to generate a tar.gz archive.

+

Status of implementation

+

Feature complete as of Mastodon 2.4.0

+
    +
  • [x] GET /api/v1/accounts/:id
  • +
  • [x] GET /api/v1/accounts/verify_credentials
  • +
  • [x] PATCH /api/v1/accounts/update_credentials
  • +
  • [x] GET /api/v1/accounts/:id/followers
  • +
  • [x] GET /api/v1/accounts/:id/following
  • +
  • [x] GET /api/v1/accounts/:id/statuses
  • +
  • [x] POST /api/v1/accounts/:id/follow
  • +
  • [x] POST /api/v1/accounts/:id/unfollow
  • +
  • [x] POST /api/v1/accounts/:id/block
  • +
  • [x] POST /api/v1/accounts/:id/unblock
  • +
  • [x] POST /api/v1/accounts/:id/mute
  • +
  • [x] POST /api/v1/accounts/:id/unmute
  • +
  • [x] GET /api/v1/accounts/relationships
  • +
  • [x] GET /api/v1/accounts/search
  • +
  • [x] POST /api/v1/apps
  • +
  • [x] GET /api/v1/blocks
  • +
  • [x] GET /api/v1/domain_blocks
  • +
  • [x] POST /api/v1/domain_blocks
  • +
  • [x] DELETE /api/v1/domain_blocks
  • +
  • [x] GET /api/v1/favourites
  • +
  • [x] GET /api/v1/follow_requests
  • +
  • [x] POST /api/v1/follow_requests/:id/authorize
  • +
  • [x] POST /api/v1/follow_requests/:id/reject
  • +
  • [x] POST /api/v1/follows
  • +
  • [x] GET /api/v1/instance
  • +
  • [x] GET /api/v1/custom_emojis
  • +
  • [x] GET /api/v1/lists
  • +
  • [x] GET /api/v1/accounts/:id/lists
  • +
  • [x] GET /api/v1/lists/:id/accounts
  • +
  • [x] GET /api/v1/lists/:id
  • +
  • [x] POST /api/v1/lists
  • +
  • [x] PUT /api/v1/lists/:id
  • +
  • [x] DELETE /api/v1/lists/:id
  • +
  • [x] POST /api/v1/lists/:id/accounts
  • +
  • [x] DELETE /api/v1/lists/:id/accounts
  • +
  • [x] POST /api/v1/media
  • +
  • [x] PUT /api/v1/media/:id
  • +
  • [x] GET /api/v1/mutes
  • +
  • [x] GET /api/v1/notifications
  • +
  • [x] GET /api/v1/notifications/:id
  • +
  • [x] POST /api/v1/notifications/clear
  • +
  • [x] POST /api/v1/notifications/dismiss
  • +
  • [x] GET /api/v1/reports
  • +
  • [x] POST /api/v1/reports
  • +
  • [x] GET /api/v1/search
  • +
  • [x] GET /api/v1/statuses/:id
  • +
  • [x] GET /api/v1/statuses/:id/context
  • +
  • [x] GET /api/v1/statuses/:id/card
  • +
  • [x] GET /api/v1/statuses/:id/reblogged_by
  • +
  • [x] GET /api/v1/statuses/:id/favourited_by
  • +
  • [x] POST /api/v1/statuses
  • +
  • [x] DELETE /api/v1/statuses/:id
  • +
  • [x] POST /api/v1/statuses/:id/reblog
  • +
  • [x] POST /api/v1/statuses/:id/unreblog
  • +
  • [x] POST /api/v1/statuses/:id/favourite
  • +
  • [x] POST /api/v1/statuses/:id/unfavourite
  • +
  • [x] POST /api/v1/statuses/:id/pin
  • +
  • [x] POST /api/v1/statuses/:id/unpin
  • +
  • [x] POST /api/v1/statuses/:id/mute
  • +
  • [x] POST /api/v1/statuses/:id/unmute
  • +
  • [x] GET /api/v1/timelines/home
  • +
  • [x] GET /api/v1/timelines/public
  • +
  • [x] GET /api/v1/timelines/tag/:hashtag
  • +
  • [x] GET /api/v1/timelines/list/:list_id
  • +
  • [x] GET /api/v1/streaming/user
  • +
  • [x] GET /api/v1/streaming/public
  • +
  • [x] GET /api/v1/streaming/public/local
  • +
  • [x] GET /api/v1/streaming/hashtag
  • +
  • [x] GET /api/v1/streaming/list
  • +
  • [x] POST /api/v1/push/subscription
  • +
  • [x] GET /api/v1/push/subscription
  • +
  • [x] PUT /api/v1/push/subscription
  • +
  • [x] DELETE /api/v1/push/subscription
  • +
+

Copyright

+
Copyright © 2018 tastytea <tastytea@tastytea.de>.
+License GPLv3: GNU GPL version 3 <https://www.gnu.org/licenses/gpl-3.0.html>.
+This program comes with ABSOLUTELY NO WARRANTY. This is free software,
+and you are welcome to redistribute it under certain conditions.
+ + + +