packages/gentoo | ||
src | ||
.gitignore | ||
.travis.yml | ||
build_doc.sh | ||
build.sh | ||
CMakeLists.txt | ||
Doxyfile | ||
ISSUE_TEMPLATE.md | ||
LICENSE | ||
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
Get sourcecode
Release
Download the current release at GitHub.
Development version
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.
Useful links
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.