diff --git a/include/mastodont.h b/include/mastodont.h index 03b2d9d..7fa3e1a 100644 --- a/include/mastodont.h +++ b/include/mastodont.h @@ -25,6 +25,7 @@ #include #include #include +#include /* Functions required form curl */ void mastodont_global_curl_init(); diff --git a/include/mastodont_emoji.h b/include/mastodont_emoji.h index 6f03b16..99fc2a2 100644 --- a/include/mastodont_emoji.h +++ b/include/mastodont_emoji.h @@ -34,6 +34,10 @@ struct mstdnt_emoji_reaction char* name; size_t count; mstdnt_bool me; + // The following below are for custom emoji reactions + // They do not exist in Pleroma :^) + char* url; + char* static_url; /* TODO Accounts */ }; diff --git a/include/mastodont_status.h b/include/mastodont_status.h index e1a7a38..853f42c 100644 --- a/include/mastodont_status.h +++ b/include/mastodont_status.h @@ -104,6 +104,8 @@ int mstdnt_status_from_result(struct mstdnt_fetch_results* results, struct mstdnt_status* status); int mstdnt_status_from_json(struct mstdnt_status* status, cJSON* js); +int mastodont_status_emoji_react(mastodont_t* api, char* id, char* emoji, + struct mstdnt_storage* storage, struct mstdnt_status* status); // Generated function int mstdnt_statuses_json(struct mstdnt_status* statuses[], diff --git a/src/application.c b/src/application.c index 8765e17..173838a 100644 --- a/src/application.c +++ b/src/application.c @@ -150,3 +150,4 @@ int mastodont_obtain_oauth_token(mastodont_t* data, return mastodont_request(data, &req_args); } + diff --git a/src/emoji.c b/src/emoji.c index a1e5d12..1e52ce7 100644 --- a/src/emoji.c +++ b/src/emoji.c @@ -46,6 +46,8 @@ void load_emoji_react_from_json(struct mstdnt_emoji_reaction* emo, cJSON* emo_js struct _mstdnt_val_ref refs[] = { { "name", &(emo->name), _mstdnt_val_string_call }, + { "url", &(emo->url), _mstdnt_val_string_call }, + { "static_url", &(emo->static_url), _mstdnt_val_string_call }, { "count", &(emo->count), _mstdnt_val_uint_call }, { "me", &(emo->me), _mstdnt_val_bool_call }, }; diff --git a/src/status.c b/src/status.c index bfa9ad2..dfdb9ff 100644 --- a/src/status.c +++ b/src/status.c @@ -528,6 +528,24 @@ int mastodont_get_favourites(mastodont_t* data, return mastodont_request(data, &req_args); } +int mastodont_status_emoji_react(mastodont_t* api, char* id, char* emoji, + struct mstdnt_storage* storage, struct mstdnt_status* status) +{ + char url[MSTDNT_URLSIZE]; + snprintf(url, MSTDNT_URLSIZE, "api/v1/pleroma/statuses/%s/reactions/%s", id, emoji); + + struct mastodont_request_args req_args = { + storage, + url, + NULL, 0, + NULL, 0, + CURLOPT_PUT, + &status, + _mstdnt_status_from_result_callback + }; + + return mastodont_request(api, &req_args); +} void mstdnt_cleanup_status(struct mstdnt_status* status) {