C++ wrapper for the Mastodon API.
This repository has been archived on 2020-05-10. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
tastytea 61878d6371
Added note that media attachements can not be base64-encoded
2018-03-13 14:16:45 +01:00
packages/gentoo added automatic deployment of packages via travis 2018-03-12 10:38:52 +01:00
src Added note that media attachements can not be base64-encoded 2018-03-13 14:16:45 +01:00
.gitignore gh-pages update script 2018-02-11 17:29:44 +01:00
.travis.yml travis deployment 9 2018-03-12 12:39:38 +01:00
CMakeLists.txt Bugfixes: answer was not deleted before filled again; Header/Body separation was broken 2018-03-13 13:22:17 +01:00
Doxyfile updated documentation 2018-01-15 15:34:18 +01:00
ISSUE_TEMPLATE.md created issue template 2018-03-01 05:20:24 +00:00
LICENSE initial commit 2018-01-09 12:36:05 +01:00
README.md travis deployment 7 2018-03-12 11:48:41 +01:00
build.sh fixed build script 2018-03-01 06:21:40 +01:00
build_doc.sh Parameter support, added documentation. 2018-01-13 01:41:30 +01:00

README.md

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.

Install

Dependencies

  • Tested OS: GNU/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
    • Documentation: doxygen (tested: 1.8.13)
    • Examples: boost (tested: 1.63.0/1.54.0)
    • 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

Build Status

git clone https://github.com/tastytea/mastodon-cpp.git

Compile

mkdir build
cd build/
cmake ..
make

cmake options:

  • -DCMAKE_BUILD_TYPE=Debug for a debug build
  • -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.

Packages

Gentoo

Put the ebuild in packages/gentoo into your local overlay and rename it to match the desired version.

Or use the ebuild from the releases page.

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.

RPM packages are untested and DEB packages are tested sporadically. To use the DEB package on stretch, you will need libcurlpp0 from buster or jessie.

Prebuilt packages for x86_64(amd64) are provided with each release.

Other

Run make install from the build directory to install.

Usage

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

Most basic example

#include <iostream>
#include <string>
#include <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';
}

Compiling your project

After you did a make install, 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
20 Failed to connect
21 Couldn't resolve host
22 Network is unreachable
100 - 999 HTTP status codes
65535 Unknown error

If you use a debug build, you get more verbose error messages.

Status of implementation

Feature complete as of Mastodon 2.2.0

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

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.