Added support for /api/v1/accounts.
the build was successful Details

This commit is contained in:
tastytea 2019-04-16 18:41:09 +02:00
parent b54d54666a
commit 4a3432e339
Signed by: tastytea
GPG Key ID: CFC39497F1B26E07
6 changed files with 238 additions and 98 deletions

View File

@ -234,7 +234,7 @@ Run `make package` from the build directory to generate a tar.gz archive.
~~Feature complete as of Mastodon 2.6.1~~
* [x] GET /api/v1/accounts/:id
* [ ] POST /api/v1/accounts
* [x] POST /api/v1/accounts
* [x] GET /api/v1/accounts/verify_credentials
* [x] PATCH /api/v1/accounts/update_credentials
* [x] GET /api/v1/accounts/:id/followers

View File

@ -35,100 +35,166 @@ return_call API::post(const Mastodon::API::v1 &call,
switch (call)
{
case v1::apps:
strcall = "/api/v1/apps";
break;
case v1::domain_blocks:
strcall = "/api/v1/domain_blocks";
break;
case v1::lists:
strcall = "/api/v1/lists";
break;
case v1::media:
strcall = "/api/v1/media";
break;
case v1::notifications_clear:
strcall = "/api/v1/notifications/clear";
break;
case v1::notifications_dismiss:
strcall = "/api/v1/notifications/dismiss";
break;
case v1::reports:
strcall = "/api/v1/reports";
break;
case v1::statuses:
strcall = "/api/v1/statuses";
break;
case v1::accounts_id_follow:
strcall = "/api/v1/accounts/" + strid + "/follow";
break;
case v1::accounts_id_unfollow:
strcall = "/api/v1/accounts/" + strid + "/unfollow";
break;
case v1::accounts_id_block:
strcall = "/api/v1/accounts/" + strid + "/block";
break;
case v1::accounts_id_unblock:
strcall = "/api/v1/accounts/" + strid + "/unblock";
break;
case v1::accounts_id_mute:
strcall = "/api/v1/accounts/" + strid + "/mute";
break;
case v1::accounts_id_unmute:
strcall = "/api/v1/accounts/" + strid + "/unmute";
break;
case v1::follow_requests_id_authorize:
strcall = "/api/v1/folow_requests/" + strid + "/authorize";
break;
case v1::follow_requests_id_reject:
strcall = "/api/v1/folow_requests/" + strid + "/reject";
break;
case v1::lists_id_accounts:
strcall = "/api/v1/lists/" + strid + "/accounts";
break;
case v1::statuses_id_reblog:
strcall = "/api/v1/statuses/" + strid + "/reblog";
break;
case v1::statuses_id_unreblog:
strcall = "/api/v1/statuses/" + strid + "/unreblog";
break;
case v1::statuses_id_favourite:
strcall = "/api/v1/statuses/" + strid + "/favourite";
break;
case v1::statuses_id_unfavourite:
strcall = "/api/v1/statuses/" + strid + "/unfavourite";
break;
case v1::statuses_id_pin:
strcall = "/api/v1/statuses/" + strid + "/pin";
break;
case v1::statuses_id_unpin:
strcall = "/api/v1/statuses/" + strid + "/unpin";
break;
case v1::statuses_id_mute:
strcall = "/api/v1/statuses/" + strid + "/mute";
break;
case v1::statuses_id_unmute:
strcall = "/api/v1/statuses/" + strid + "/unmute";
break;
case v1::push_subscription:
strcall = "/api/v1/push/subscription";
break;
case v1::accounts_id_pin:
strcall = "/api/v1/accounts/" + strid + "/pin";
break;
case v1::accounts_id_unpin:
strcall = "/api/v1/accounts/" + strid + "/unpin";
break;
case v1::statuses_id_bookmark:
strcall = "/api/v1/statuses/" + strid + "/bookmark";
break;
case v1::statuses_id_unbookmark:
strcall = "/api/v1/statuses/" + strid + "/unbookmark";
break;
default:
ttdebug << "ERROR: Invalid argument.\n";
return { 22, "Invalid argument", 0, ""};
break;
case v1::apps:
{
strcall = "/api/v1/apps";
break;
}
case v1::domain_blocks:
{
strcall = "/api/v1/domain_blocks";
break;
}
case v1::lists:
{
strcall = "/api/v1/lists";
break;
}
case v1::media:
{
strcall = "/api/v1/media";
break;
}
case v1::notifications_clear:
{
strcall = "/api/v1/notifications/clear";
break;
}
case v1::notifications_dismiss:
{
strcall = "/api/v1/notifications/dismiss";
break;
}
case v1::reports:
{
strcall = "/api/v1/reports";
break;
}
case v1::statuses:
{
strcall = "/api/v1/statuses";
break;
}
case v1::accounts:
{
strcall = "/api/v1/accounts";
break;
}
case v1::accounts_id_follow:
{
strcall = "/api/v1/accounts/" + strid + "/follow";
break;
}
case v1::accounts_id_unfollow:
{
strcall = "/api/v1/accounts/" + strid + "/unfollow";
break;
}
case v1::accounts_id_block:
{
strcall = "/api/v1/accounts/" + strid + "/block";
break;
}
case v1::accounts_id_unblock:
{
strcall = "/api/v1/accounts/" + strid + "/unblock";
break;
}
case v1::accounts_id_mute:
{
strcall = "/api/v1/accounts/" + strid + "/mute";
break;
}
case v1::accounts_id_unmute:
{
strcall = "/api/v1/accounts/" + strid + "/unmute";
break;
}
case v1::follow_requests_id_authorize:
{
strcall = "/api/v1/folow_requests/" + strid + "/authorize";
break;
}
case v1::follow_requests_id_reject:
{
strcall = "/api/v1/folow_requests/" + strid + "/reject";
break;
}
case v1::lists_id_accounts:
{
strcall = "/api/v1/lists/" + strid + "/accounts";
break;
}
case v1::statuses_id_reblog:
{
strcall = "/api/v1/statuses/" + strid + "/reblog";
break;
}
case v1::statuses_id_unreblog:
{
strcall = "/api/v1/statuses/" + strid + "/unreblog";
break;
}
case v1::statuses_id_favourite:
{
strcall = "/api/v1/statuses/" + strid + "/favourite";
break;
}
case v1::statuses_id_unfavourite:
{
strcall = "/api/v1/statuses/" + strid + "/unfavourite";
break;
}
case v1::statuses_id_pin:
{
strcall = "/api/v1/statuses/" + strid + "/pin";
break;
}
case v1::statuses_id_unpin:
{
strcall = "/api/v1/statuses/" + strid + "/unpin";
break;
}
case v1::statuses_id_mute:
{
strcall = "/api/v1/statuses/" + strid + "/mute";
break;
}
case v1::statuses_id_unmute:
{
strcall = "/api/v1/statuses/" + strid + "/unmute";
break;
}
case v1::push_subscription:
{
strcall = "/api/v1/push/subscription";
break;
}
case v1::accounts_id_pin:
{
strcall = "/api/v1/accounts/" + strid + "/pin";
break;
}
case v1::accounts_id_unpin:
{
strcall = "/api/v1/accounts/" + strid + "/unpin";
break;
}
case v1::statuses_id_bookmark:
{
strcall = "/api/v1/statuses/" + strid + "/bookmark";
break;
}
case v1::statuses_id_unbookmark:
{
strcall = "/api/v1/statuses/" + strid + "/unbookmark";
break;
}
default:
{
ttdebug << "ERROR: Invalid argument.\n";
return { 22, "Invalid argument", 0, ""};
}
}
return post(strcall, params);

View File

@ -179,7 +179,7 @@ namespace Mastodon
{
// Mastodon
accounts_id,
// accounts,
accounts,
accounts_verify_credentials,
accounts_update_credentials,
accounts_id_followers,

View File

@ -0,0 +1,74 @@
/* This file is part of mastodon-cpp.
* Copyright © 2019 tastytea <tastytea@tastytea.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <exception>
#include <string>
#include <catch.hpp>
#include "mastodon-cpp.hpp"
#include "easy/easy.hpp"
#include "easy/entities/token.hpp"
#include "environment_variables.hpp"
using namespace Mastodon;
SCENARIO ("/api/v1/accounts can be called successfully",
"[api][mastodon][glitch-soc]")
{
GIVEN ("instance = " + instance)
{
Mastodon::Easy::API masto(instance, "");
return_call ret;
Easy::Token token;
bool exception = false;
WHEN ("/api/v1/accounts is called")
{
try
{
ret = masto.post(API::v1::accounts,
{
{ "username", { "testaccount" }},
{ "email", { "user@example.com" }},
{ "password", { "..,-fidm" }},
{ "agreement", { "true" }},
{ "locale", { "en" }},
});
token.from_string(ret.answer);
}
catch (const std::exception &e)
{
exception = true;
WARN(e.what());
}
THEN("No exception is thrown")
AND_THEN ("No errors are returned")
AND_THEN ("The answer makes sense")
{
REQUIRE_FALSE(exception);
// The account probably exists already, so we look for errors too.
REQUIRE((ret.error_code == 0
|| ret.error_code == 111));
REQUIRE((ret.http_error_code == 200
|| ret.http_error_code == 500));
REQUIRE((token.access_token() != ""
|| token.error() != ""));
}
}
}
}

View File

@ -52,7 +52,7 @@ SCENARIO ("/api/v1/accounts/:id/block can be called successfully",
}
THEN ("No exception is thrown")
AND_THEN ("No errors are returned")
AND_THEN ("No unexpected errors are returned")
AND_THEN ("The answer makes sense")
{
REQUIRE_FALSE(exception);

View File

@ -52,7 +52,7 @@ SCENARIO ("/api/v1/accounts/:id/unblock can be called successfully",
}
THEN ("No exception is thrown")
AND_THEN ("No errors are returned")
AND_THEN ("No unexpected errors are returned")
AND_THEN ("The answer makes sense")
{
REQUIRE_FALSE(exception);