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, clang 5.0)
- cmake (tested: 3.9.6)
- libcurl (tested: 7.58.0)
- curlpp (tested: 0.8.1)
- 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.
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.
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.