Fetch and cleanup

FossilOrigin-Name: 218a4d992019baaf31e448e9b205565c02b5dbcd54259facf43351eed9895ff5
This commit is contained in:
nekobit 2022-10-26 17:00:36 +00:00
parent 90393af306
commit 6e07fc0b96
13 changed files with 149 additions and 135 deletions

View file

@ -78,6 +78,8 @@ struct mstdnt_account_args
int mstdnt_account_action(mastodont_t* data,
struct mstdnt_args* args,
mstdnt_request_cb_t cb_request,
void* cb_args,
char* id,
struct mstdnt_storage* storage,
struct mstdnt_relationship* rel,
@ -87,9 +89,9 @@ int mstdnt_accounts_json(struct mstdnt_account* accounts[],
size_t* size,
cJSON* js);
#define MSTDNT_ACCOUNT_ACTION_DECL(type) int mstdnt_##type##_account(mastodont_t* data, struct mstdnt_args* args, char* id, struct mstdnt_storage* storage, struct mstdnt_relationship* relationship)
#define MSTDNT_ACCOUNT_ACTION_FUNC_URL(action) { \
return mstdnt_account_action(data, args, id, storage, relationship, "api/v1/accounts/%s/" action); \
#define MSTDNT_ACCOUNT_ACTION_DECL(type) int mstdnt_##type##_account(mastodont_t* data, struct mstdnt_args* args, mstdnt_request_cb_t cb_request, void* cb_args, char* id, struct mstdnt_storage* storage, struct mstdnt_relationship* relationship)
#define MSTDNT_ACCOUNT_ACTION_FUNC_URL(action) { \
return mstdnt_account_action(data, args, cb_request, cb_args, id, storage, relationship, "api/v1/accounts/%s/" action); \
}
MSTDNT_ACCOUNT_ACTION_DECL(follow);
@ -102,58 +104,58 @@ MSTDNT_ACCOUNT_ACTION_DECL(subscribe);
MSTDNT_ACCOUNT_ACTION_DECL(unsubscribe);
int mstdnt_verify_credentials(mastodont_t* data,
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
struct mstdnt_account* acct,
struct mstdnt_storage* storage);
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
struct mstdnt_account* acct,
struct mstdnt_storage* storage);
int mstdnt_get_account(mastodont_t* data,
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
int lookup_type,
char* id,
struct mstdnt_account* acct,
struct mstdnt_storage* storage);
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
int lookup_type,
char* id,
struct mstdnt_account* acct,
struct mstdnt_storage* storage);
int mstdnt_get_blocks(mastodont_t* data,
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
struct mstdnt_account_args* args,
struct mstdnt_storage* storage,
struct mstdnt_account* accts[],
size_t* accts_len);
int mstdnt_get_mutes(mastodont_t* data,
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
struct mstdnt_account_args* args,
struct mstdnt_storage* storage,
struct mstdnt_account* accts[],
size_t* accts_len);
int mstdnt_get_followers(mastodont_t* data,
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
char* id,
struct mstdnt_account_args* args,
struct mstdnt_storage* storage,
struct mstdnt_account* accts[],
size_t* accts_len);
int mstdnt_get_mutes(mastodont_t* data,
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
struct mstdnt_account_args* args,
struct mstdnt_storage* storage,
struct mstdnt_account* accts[],
size_t* accts_len);
int mstdnt_get_followers(mastodont_t* data,
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
char* id,
struct mstdnt_account_args* args,
struct mstdnt_storage* storage,
struct mstdnt_account* accts[],
size_t* accts_len);
int mstdnt_get_following(mastodont_t* data,
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
char* id,
struct mstdnt_account_args* args,
struct mstdnt_storage* storage,
struct mstdnt_account* accts[],
size_t* accts_len);
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
char* id,
struct mstdnt_account_args* args,
struct mstdnt_storage* storage,
struct mstdnt_account* accts[],
size_t* accts_len);
int mstdnt_account_json(struct mstdnt_account* acct, cJSON* js);
int mstdnt_account_json_callback(cJSON* json, void* _args);

View file

@ -47,6 +47,7 @@ void mstdnt_fetch_data_cleanup(struct mstdnt_fetch_data* res);
* @param args Mastodont General args passed
* @param url URL of request
* @param results Results from response
* @return Number of connections in progress
*/
int mstdnt_fetch_curl_async(mastodont_t* mstdnt,
CURL* curl,
@ -57,4 +58,16 @@ int mstdnt_fetch_curl_async(mastodont_t* mstdnt,
CURLoption request_t,
char* request_t_custom);
/**
* @brief Blocks until a transfer is complete.
*
* You can also check curl's socket
*
* @param mstdnt Mastodont struct
* @param opt Option, MSTDNT_AWAIT_ALL means it will keep going until
* there are no more transfers. MSTDNT_AWAIT_ONCE will run
int mstdnt_await(mstdnt_t* mstdnt, enum mstdnt_fetch_await opt)
{
}
#endif /* MASTODONT_FETCH_H */

View file

@ -57,8 +57,8 @@ int mstdnt_accounts_json_callback(cJSON* json, void* _args)
static int mstdnt_get_accounts_query(char* url,
mastodont_t* data,
struct mstdnt_args* m_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
mstdnt_request_cb_t cb_request,
void* cb_args,
struct mstdnt_account_args* args,
struct mstdnt_storage* storage,
struct mstdnt_account* accts[],
@ -89,7 +89,7 @@ void* cb_args,
mstdnt_accounts_json_callback,
};
return mstdnt_request(data, m_args, &req_args, );
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_get_followers(mastodont_t* data,
@ -104,7 +104,7 @@ void* cb_args,
{
char url[MSTDNT_URLSIZE];
snprintf(url, MSTDNT_URLSIZE, "api/v1/accounts/%s/followers", id);
return mstdnt_get_accounts_query(url, data, m_args, args, storage, accts, accts_len);
return mstdnt_get_accounts_query(url, data, m_args, cb_request, cb_args, args, storage, accts, accts_len);
}
int mstdnt_get_following(mastodont_t* data,
@ -119,7 +119,7 @@ void* cb_args,
{
char url[MSTDNT_URLSIZE];
snprintf(url, MSTDNT_URLSIZE, "api/v1/accounts/%s/following", id);
return mstdnt_get_accounts_query(url, data, m_args, args, storage, accts, accts_len);
return mstdnt_get_accounts_query(url, data, m_args, cb_request, cb_args, args, storage, accts, accts_len);
}
int mstdnt_get_blocks(mastodont_t* data, struct mstdnt_args* m_args,
@ -130,7 +130,7 @@ void* cb_args,
struct mstdnt_account* accts[],
size_t* accts_len)
{
return mstdnt_get_accounts_query("api/v1/blocks", data, m_args, args, storage, accts, accts_len);
return mstdnt_get_accounts_query("api/v1/blocks", data, m_args, cb_request, cb_args, args, storage, accts, accts_len);
}
int mstdnt_get_mutes(mastodont_t* data, struct mstdnt_args* m_args,
@ -141,7 +141,7 @@ void* cb_args,
struct mstdnt_account* accts[],
size_t* accts_len)
{
return mstdnt_get_accounts_query("api/v1/mutes", data, m_args, args, storage, accts, accts_len);
return mstdnt_get_accounts_query("api/v1/mutes", data, m_args, cb_request, cb_args, args, storage, accts, accts_len);
}
int mstdnt_get_account(mastodont_t* data,
@ -170,7 +170,7 @@ void* cb_args,
mstdnt_account_json_callback, /* callback */
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_verify_credentials(mastodont_t* data,
@ -191,7 +191,7 @@ void* cb_args,
mstdnt_account_json_callback, /* callback */
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_account_json(struct mstdnt_account* acct, cJSON* js)
@ -260,7 +260,7 @@ void* cb_args,
mstdnt_relationship_json_callback
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
/* These are all the same */

View file

@ -113,7 +113,7 @@ void* cb_args,
mstdnt_app_json_callback
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_obtain_oauth_token(mastodont_t* data,
@ -148,6 +148,6 @@ void* cb_args,
mstdnt_token_json_callback
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}

View file

@ -114,7 +114,7 @@ void* cb_args,
struct mstdnt_chat* chats[],
size_t* size)
{
struct _mstdnt_chats_cb_args cb_args = { chats, size };
struct _mstdnt_chats_cb_args req_cb_args = { chats, size };
struct _mstdnt_query_param params[] = {
{ _MSTDNT_QUERY_BOOL, "with_muted", { .b = args->with_muted } },
{ _MSTDNT_QUERY_STRING, "max_id", { .s = args->max_id } },
@ -133,11 +133,11 @@ void* cb_args,
.params_post_len = 0,
.request_type = CURLOPT_HTTPGET,
.request_type_custom = NULL,
.args = &cb_args,
.args = &req_cb_args,
.callback = mstdnt_chats_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_get_chat_messages(mastodont_t* data,
@ -152,7 +152,7 @@ void* cb_args,
{
char url[MSTDNT_URLSIZE];
snprintf(url, MSTDNT_URLSIZE, "api/v1/pleroma/chats/%s/messages", chat_id);
struct _mstdnt_messages_cb_args cb_args = { messages, size };
struct _mstdnt_messages_cb_args req_cb_args = { messages, size };
struct _mstdnt_query_param params[] = {
{ _MSTDNT_QUERY_BOOL, "with_muted", { .b = args->with_muted } },
@ -172,11 +172,11 @@ void* cb_args,
.params_post_len = 0,
.request_type = CURLOPT_HTTPGET,
.request_type_custom = NULL,
.args = &cb_args,
.args = &req_cb_args,
.callback = mstdnt_messages_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_get_chat(mastodont_t* data,
@ -203,7 +203,7 @@ void* cb_args,
.callback = mstdnt_chat_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
void mstdnt_cleanup_chat(struct mstdnt_chat* chat)

View file

@ -57,7 +57,7 @@ int mstdnt_fetch_curl_async(mastodont_t* mstdnt,
{
#define is_custom request_t_custom && request_t == CURLOPT_CUSTOMREQUEST
struct mstdnt_fetch_data* results = NULL;
CURLMcode res = 3;
CURLMcode res = 0;
char token[TOKEN_STR_SIZE] = { 0 };
struct curl_slist* list = NULL;
@ -77,8 +77,13 @@ int mstdnt_fetch_curl_async(mastodont_t* mstdnt,
// Setup data to pass into results
results = calloc(1, sizeof(struct mstdnt_fetch_data));
results.callback = cb_request;
results.callback_args = cb_args;
if (!results)
{
perror("calloc");
return -1;
}
results->callback = cb_request;
results->callback_args = cb_args;
// Set options
curl_easy_setopt(curl, CURLOPT_URL, url);
@ -102,47 +107,41 @@ int mstdnt_fetch_curl_async(mastodont_t* mstdnt,
// Add curl handle to multi, then run
curl_multi_add_handle(mstdnt->curl, curl);
// No docs on this?
int running;
res = curl_multi_perform(mstdnt->curl, &running);
if (!res)
return -1;
if (list) curl_slist_free_all(list);
return res;
return running;
}
int mstdnt_await(enum mstdnt_fetch_await opt)
int mstdnt_await(mastodont_t* mstdnt, enum mstdnt_fetch_await opt)
{
CURLMsg* msg;
int msgs_left = 1;
struct mstdnt_fetch_data* data;
int res;
// TODO
//curl_easy_getinfo(curl, CURLINFO_PRIVATE, &data);
do
res = curl_multi_poll(mstdnt->curl, NULL, 0, 1000, NULL);
// Check if our socket is done
while ((msg = curl_multi_info_read(mstdnt->curl, &msgs_left)))
{
res = curl_multi_poll(mstdnt->curl, NULL, 0, 1000, NULL);
// Check if our socket is done
while ((msg = curl_multi_info_read(mstdnt->curl, &msgs_left)))
if (msg->msg == CURLMSG_DONE && msg->easy_handle == curl)
{
if (msg->msg == CURLMSG_DONE && msg->easy_handle == curl)
{
status = msg->data.result;
goto out;
}
}
// Get easy info
curl_easy_getinfo(msg->curl, CURLINFO_PRIVATE, &data);
mstdnt_fetch_data_cleanup(&data);
if (res) break;
curl_multi_remove_handle(mstdnt->curl, curl);
curl_easy_cleanup(curl);
}
}
while (opt == MSTDNT_AWAIT_ALL && msgs_left);
//mstdnt_fetch_data_cleanup(&results);
// Note: the fetch removed the handle from our multi handle
out:
/* // Looks like we're done here */
/* curl_multi_remove_handle(mstdnt->curl, curl); */
//curl_easy_cleanup(curl);
return res;
}

View file

@ -97,7 +97,7 @@ void* cb_args,
mstdnt_lists_json_callback
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_get_list(mastodont_t* data,
@ -122,7 +122,7 @@ void* cb_args,
mstdnt_list_json_callback
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
static const char* replies_policy_str(enum mstdnt_list_replies_policy pol)
@ -193,7 +193,7 @@ void* cb_args,
mstdnt_list_json_callback
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_delete_list(mastodont_t* api,
@ -327,7 +327,7 @@ void* cb_args,
mstdnt_accounts_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
void mstdnt_cleanup_lists(struct mstdnt_list* lists)

View file

@ -123,7 +123,7 @@ void* cb_args,
struct mstdnt_notification** notifs,
size_t* size)
{
struct _mstdnt_notifications_result_cb_args cb_args = { notifs, size };
struct _mstdnt_notifications_result_cb_args req_cb_args = { notifs, size };
union param_value u_exclude_types, u_account_id, u_exclude_visibilities,
u_include_types, u_with_muted, u_max_id, u_min_id,
@ -154,11 +154,11 @@ void* cb_args,
NULL, 0,
CURLOPT_HTTPGET,
NULL,
&cb_args,
&req_cb_args,
mstdnt_notifications_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_notification_dismiss(mastodont_t* data,
@ -182,7 +182,7 @@ void* cb_args,
NULL,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_notifications_clear(mastodont_t* data,
@ -202,7 +202,7 @@ void* cb_args,
NULL,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_notifications_read(mastodont_t* data,
@ -229,7 +229,7 @@ void* cb_args,
mstdnt_notification_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}

View file

@ -106,7 +106,7 @@ void* cb_args,
struct mstdnt_relationship* relationships[],
size_t* size)
{
struct _mstdnt_relationships_cb_args cb_args = { relationships, size };
struct _mstdnt_relationships_cb_args req_cb_args = { relationships, size };
struct _mstdnt_query_param params[] = {
{ _MSTDNT_QUERY_ARRAY, "id",
{
@ -123,7 +123,7 @@ void* cb_args,
NULL, 0,
CURLOPT_HTTPGET,
NULL,
&cb_args,
&req_cb_args,
mstdnt_relationships_json_callback
};

View file

@ -62,7 +62,7 @@ void* cb_args,
struct mstdnt_scrobble* scrobbles[],
size_t* size)
{
struct _mstdnt_scrobbles_cb_args cb_args = { scrobbles, size };
struct _mstdnt_scrobbles_cb_args req_cb_args = { scrobbles, size };
char url[MSTDNT_URLSIZE];
snprintf(url, MSTDNT_URLSIZE, "api/v1/pleroma/accounts/%s/scrobbles", id);
@ -81,10 +81,10 @@ void* cb_args,
NULL, 0,
CURLOPT_HTTPGET,
NULL,
&cb_args,
&req_cb_args,
mstdnt_scrobbles_json_callback
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}

View file

@ -95,7 +95,7 @@ void* cb_args,
mstdnt_search_json_callback
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
void mstdnt_cleanup_search_results(struct mstdnt_search_results* res)

View file

@ -156,7 +156,7 @@ void* cb_args,
size_t* size)
{
char url[MSTDNT_URLSIZE];
struct _mstdnt_statuses_cb_args cb_args = { statuses, size };
struct _mstdnt_statuses_cb_args req_cb_args = { statuses, size };
snprintf(url, MSTDNT_URLSIZE, "api/v1/accounts/%s/statuses", id);
struct _mstdnt_query_param params[] = {
@ -180,11 +180,11 @@ void* cb_args,
NULL, 0,
CURLOPT_HTTPGET,
NULL,
&cb_args,
&req_cb_args,
mstdnt_statuses_json_callback
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
/* TODO Populate the arguments! */
@ -220,7 +220,7 @@ void* cb_args,
* (not sure if the api returns it or not) */
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
static int mstdnt_status_action(mastodont_t* data,
@ -246,7 +246,7 @@ void* cb_args,
mstdnt_status_json_callback
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
/* These are all the same */
@ -291,7 +291,7 @@ MSTDNT_STATUS_ACTION_DECL(delete)
mstdnt_status_json_callback
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
/* TODO Mutes can be timed */
@ -339,7 +339,7 @@ void* cb_args,
mstdnt_status_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_status_context_json(struct mstdnt_status* statuses_before[],
@ -432,7 +432,7 @@ void* cb_args,
mstdnt_status_context_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_status_favourited_by(mastodont_t* data,
@ -462,7 +462,7 @@ void* cb_args,
mstdnt_accounts_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_status_reblogged_by(mastodont_t* data,
@ -492,7 +492,7 @@ void* cb_args,
mstdnt_accounts_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
@ -505,7 +505,7 @@ void* cb_args,
struct mstdnt_status* statuses[],
size_t* size)
{
struct _mstdnt_statuses_cb_args cb_args = { statuses, size };
struct _mstdnt_statuses_cb_args req_cb_args = { statuses, size };
struct _mstdnt_query_param params[] = {
{ _MSTDNT_QUERY_STRING, "max_id", { .s = args->max_id } },
@ -521,11 +521,11 @@ void* cb_args,
NULL, 0,
CURLOPT_HTTPGET,
NULL,
&cb_args,
&req_cb_args,
mstdnt_statuses_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_get_favourites(mastodont_t* data,
@ -537,7 +537,7 @@ void* cb_args,
struct mstdnt_status* statuses[],
size_t* size)
{
struct _mstdnt_statuses_cb_args cb_args = { statuses, size };
struct _mstdnt_statuses_cb_args req_cb_args = { statuses, size };
struct _mstdnt_query_param params[] = {
{ _MSTDNT_QUERY_STRING, "max_id", { .s = args->max_id } },
@ -552,11 +552,11 @@ void* cb_args,
NULL, 0,
CURLOPT_HTTPGET,
NULL,
&cb_args,
&req_cb_args,
mstdnt_statuses_json_callback,
};
return mstdnt_request(data, m_args, &req_args);
return mstdnt_request(data, m_args, cb_request, cb_args, &req_args);
}
int mstdnt_status_emoji_react(mastodont_t* api,

View file

@ -30,7 +30,7 @@ void* cb_args,
struct mstdnt_status* statuses[],
size_t* size)
{
struct _mstdnt_statuses_cb_args cb_args = { statuses, size };
struct _mstdnt_statuses_cb_args req_cb_args = { statuses, size };
char url[MSTDNT_URLSIZE];
snprintf(url, MSTDNT_URLSIZE, "api/v1/timelines/list/%s", list_id);
@ -54,7 +54,7 @@ void* cb_args,
NULL, 0,
CURLOPT_HTTPGET,
NULL,
&cb_args,
&req_cb_args,
mstdnt_statuses_json_callback,
};
@ -71,7 +71,7 @@ void* cb_args,
struct mstdnt_status* statuses[],
size_t* size)
{
struct _mstdnt_statuses_cb_args cb_args = { statuses, size };
struct _mstdnt_statuses_cb_args req_cb_args = { statuses, size };
char url[MSTDNT_URLSIZE];
snprintf(url, MSTDNT_URLSIZE, "api/v1/timelines/tag/%s", hashtag);
@ -98,7 +98,7 @@ void* cb_args,
NULL, 0,
CURLOPT_HTTPGET,
NULL,
&cb_args,
&req_cb_args,
mstdnt_statuses_json_callback,
};
@ -128,7 +128,7 @@ void* cb_args,
struct mstdnt_status* statuses[],
size_t* size)
{
struct _mstdnt_statuses_cb_args cb_args = { statuses, size };
struct _mstdnt_statuses_cb_args req_cb_args = { statuses, size };
struct _mstdnt_query_param params[] = {
{ _MSTDNT_QUERY_BOOL, "local", { .b = args->local } },
{ _MSTDNT_QUERY_STRING, "instance", { .s = args->instance } },
@ -150,7 +150,7 @@ void* cb_args,
NULL, 0,
CURLOPT_HTTPGET,
NULL,
&cb_args,
&req_cb_args,
mstdnt_statuses_json_callback,
};
@ -167,7 +167,7 @@ void* cb_args,
struct mstdnt_status* statuses[],
size_t* size)
{
struct _mstdnt_statuses_cb_args cb_args = { statuses, size };
struct _mstdnt_statuses_cb_args req_cb_args = { statuses, size };
struct _mstdnt_query_param params[] = {
{ _MSTDNT_QUERY_STRING, "max_id", { .s = args->max_id } },
@ -185,7 +185,7 @@ void* cb_args,
NULL, 0,
CURLOPT_HTTPGET,
NULL,
&cb_args,
&req_cb_args,
mstdnt_statuses_json_callback,
};
@ -202,7 +202,7 @@ void* cb_args,
struct mstdnt_status* statuses[],
size_t* size)
{
struct _mstdnt_statuses_cb_args cb_args = { statuses, size };
struct _mstdnt_statuses_cb_args req_cb_args = { statuses, size };
struct _mstdnt_query_param params[] = {
{ _MSTDNT_QUERY_BOOL, "local", { .b = args->local } },
@ -225,7 +225,7 @@ void* cb_args,
NULL, 0,
CURLOPT_HTTPGET,
NULL,
&cb_args,
&req_cb_args,
mstdnt_statuses_json_callback,
};