Try interact status

FossilOrigin-Name: 93df0b275019b31e976f67ca127abf4c96f433cdf638a055fc75e4f7ef97da45
This commit is contained in:
me@ow.nekobit.net 2022-02-18 20:27:39 +00:00
parent da2de57feb
commit c633d81f10
4 changed files with 53 additions and 1 deletions

View file

@ -50,6 +50,7 @@ void content_index(mastodont_t* api)
}
try_post_status(api);
try_interact_status(api);
easprintf(&output, "%s %s", data_post_html, status_format);

View file

@ -63,6 +63,7 @@ char* try_handle_post(void (*call)(struct http_query_info*, void*), void* arg)
}
read(STDIN_FILENO, post_query, content_length);
post_query[content_length] = '\0';
// For parse_query to shift through, so we can still free the original
p_query_read = post_query;

View file

@ -24,13 +24,53 @@
#include "cookie.h"
#include "../static/status.chtml"
enum post_interact_type
{
POST_INTERACT_NONE,
POST_INTERACT_LIKE,
POST_INTERACT_REBLOG
};
struct interact_args
{
mastodont_t* api;
enum post_interact_type type;
};
static void status_interact(struct http_query_info* info, void* _arg)
{
struct interact_args* arg = _arg;
if (strcmp(info->key, "itype") == 0)
{
if (strcmp(info->val, "like") == 0)
{
arg->type = POST_INTERACT_LIKE;
}
}
else if (strcmp(info->key, "id") == 0)
{
struct mstdnt_storage storage;
switch (arg->type)
{
case POST_INTERACT_LIKE:
mastodont_favourite_status(arg->api,
info->val,
&storage);
// mastodont_storage_cleanup(&storage);
return;
default:
return;
}
}
}
static void status_post(struct http_query_info* info, void* arg)
{
mastodont_t* api = arg;
if (strcmp(info->key, "content") == 0)
{
struct http_cookie_info ck;
struct mstdnt_storage storage;
// Cookie copy and read
@ -61,6 +101,15 @@ int try_post_status(mastodont_t* api)
return 0;
}
int try_interact_status(mastodont_t* api)
{
struct interact_args args;
args.api = api;
char* post_query = try_handle_post(status_interact, &args);
return 0;
}
char* construct_statuses(struct mstdnt_status* statuses, size_t size, size_t* ret_size)
{
char* stat_html, *result = NULL;

View file

@ -21,6 +21,7 @@
#include <mastodont.h>
int try_post_status(mastodont_t* api);
int try_interact_status(mastodont_t* api);
char* construct_statuses(struct mstdnt_status* statuses, size_t size, size_t* ret_size);
#endif // STATUS_H