mastoapi: patched dates to match the funny timezone Mastodon uses.

This commit is contained in:
default 2023-12-03 10:05:04 +01:00
parent 68b7947159
commit f5bf8ef7e1

View file

@ -592,10 +592,27 @@ xs_dict *mastoapi_account(const xs_dict *actor)
acct = xs_dict_append(acct, "emojis", eml); acct = xs_dict_append(acct, "emojis", eml);
} }
acct = xs_dict_append(acct, "locked", xs_stock_false);
acct = xs_dict_append(acct, "followers_count", xs_stock_0);
acct = xs_dict_append(acct, "following_count", xs_stock_0);
acct = xs_dict_append(acct, "statuses_count", xs_stock_0);
acct = xs_dict_append(acct, "fields", xs_stock_list);
return acct; return acct;
} }
xs_str *mastoapi_date(char *date)
/* converts an ISO 8601 date to whatever format Mastodon uses */
{
xs_str *s = xs_crop_i(xs_dup(date), 0, 19);
s = xs_str_cat(s, ".000Z");
return s;
}
xs_dict *mastoapi_poll(snac *snac, const xs_dict *msg) xs_dict *mastoapi_poll(snac *snac, const xs_dict *msg)
/* creates a mastoapi Poll object */ /* creates a mastoapi Poll object */
{ {
@ -607,7 +624,8 @@ xs_dict *mastoapi_poll(snac *snac, const xs_dict *msg)
xs *options = xs_list_new(); xs *options = xs_list_new();
poll = xs_dict_append(poll, "id", mid); poll = xs_dict_append(poll, "id", mid);
poll = xs_dict_append(poll, "expires_at", xs_dict_get(msg, "endTime")); xs *fd = mastoapi_date(xs_dict_get(msg, "endTime"));
poll = xs_dict_append(poll, "expires_at", fd);
poll = xs_dict_append(poll, "expired", poll = xs_dict_append(poll, "expired",
xs_dict_get(msg, "closed") != NULL ? xs_stock_true : xs_stock_false); xs_dict_get(msg, "closed") != NULL ? xs_stock_true : xs_stock_false);
@ -673,9 +691,11 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
st = xs_dict_append(st, "id", mid); st = xs_dict_append(st, "id", mid);
st = xs_dict_append(st, "uri", id); st = xs_dict_append(st, "uri", id);
st = xs_dict_append(st, "url", id); st = xs_dict_append(st, "url", id);
st = xs_dict_append(st, "created_at", xs_dict_get(msg, "published"));
st = xs_dict_append(st, "account", acct); st = xs_dict_append(st, "account", acct);
xs *fd = mastoapi_date(xs_dict_get(msg, "published"));
st = xs_dict_append(st, "created_at", fd);
{ {
const char *content = xs_dict_get(msg, "content"); const char *content = xs_dict_get(msg, "content");
const char *name = xs_dict_get(msg, "name"); const char *name = xs_dict_get(msg, "name");
@ -928,10 +948,15 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
st = xs_dict_append(st, "text", tmp); st = xs_dict_append(st, "text", tmp);
tmp = xs_dict_get(msg, "updated"); tmp = xs_dict_get(msg, "updated");
xs *fd2 = NULL;
if (xs_is_null(tmp)) if (xs_is_null(tmp))
tmp = xs_stock_null; tmp = xs_stock_null;
else {
fd2 = mastoapi_date(tmp);
tmp = fd2;
}
st = xs_dict_append(st, "edited_at", tmp); st = xs_dict_append(st, "edited_at", fd2);
if (strcmp(type, "Question") == 0) { if (strcmp(type, "Question") == 0) {
xs *poll = mastoapi_poll(snac, msg); xs *poll = mastoapi_poll(snac, msg);