cmake | ||
examples | ||
include | ||
pkg-config | ||
src | ||
tests | ||
.drone.yml | ||
.editorconfig | ||
.gitignore | ||
build_doc.sh | ||
CMakeLists.txt | ||
CODE_OF_CONDUCT.adoc | ||
CONTRIBUTING.adoc | ||
Doxyfile | ||
LICENSE | ||
README.adoc |
mastodonpp
mastodonpp is a C++ wrapper for the Mastodon and Pleroma APIs. It replaces mastodon-cpp.
We aim to create a library that is comfortable, yet minimal. All API endpoints
from Mastodon and Pleroma are stored in enum class
es, to counteract typos
and make your life easier. The network-facing code is built on
libcurl, a mature and stable library that is available on
most operating systems. The library does not parse the responses itself, but
returns to you the raw data, because we know everyone has their favorite JSON
library and we don’t want to impose our choice on you!
Features
Here is a rough overview of the features:
-
✓
GET
, StreamingGET
,POST
,PATCH
,PUT
andDELETE
requests. -
✓ Comfortable access to pagination headers.
-
✓ Report maximum allowed character per post.
-
✓ Simple function to register a new “app” (get an access token).
-
✓ Report which mime types are allowed for posting statuses.
-
✓ Find and retrieve NodeInfo.
-
✓ Easy access to the libcurl handle for maximum configurability.
-
✓ Set proxy server, User-Agent and the path to the CA bundle.
Usage
Have a look at the reference.
Example
#include <mastodonpp/mastodonpp.hpp>
#include <iostream>
int main()
{
mastodonpp::Instance instance{"example.com", "123AccessToken123"};
instance.set_proxy("socks4a://[::1]:9050");
mastodonpp::Connection connection{instance};
const mastodonpp::parametermap parameters
{
{"status", "How is the weather?"},
{"poll[options]", vector<string_view>{"Nice", "not nice"}},
{"poll[expires_in]", "86400"}
};
auto answer{connection.post(mastodonpp::API::v1::statuses, parameters)};
if (answer)
{
std::cout << answer << std::endl;
}
}
More examples are included in the reference.
Install
Gentoo
eselect repository enable tastytea
echo 'dev-cpp/mastodonpp' >> /etc/portage/package.accept_keywords/mastodonpp
emaint sync -r tastytea
emerge -a dev-cpp/mastodonpp
Debian and Ubuntu
We automatically generate packages for Debian buster (10) and Ubuntu bionic (18.04), but only for x86_64 (amd64). Download them at schlomp.space.
apt install ./libmastodonpp*.deb
CentOS
We automatically generate packages for CentOS 8, but only for x86_64 (amd64). Download them at schlomp.space.
yum install ./libmastodonpp*.rpm
From source
Dependencies
Get sourcecode
Release
Download the current release at schlomp.space.
Development version
git clone https://schlomp.space/tastytea/mastodonpp.git
Compile
mkdir -p build && cd build
cmake ..
cmake --build . -- -j$(nproc --ignore=1)
-
-DCMAKE_BUILD_TYPE=Debug
for a debug build. -
-DWITH_TESTS=YES
if you want to compile the tests. -
-DWITH_EXAMPLES=YES
if you want to compile the examples. -
One of:
-
-DWITH_DEB=YES
if you want to be able to generate a deb-package. -
-DWITH_RPM=YES
if you want to be able to generate an rpm-package.
-
To create a deb or rpm package, run make package
after compiling.