commit f5bf8ef

default  ·  2023-12-03 09:05:04 +0000 UTC
parent 68b7947
mastoapi: patched dates to match the funny timezone Mastodon uses.
1 files changed,  +28, -3
+28, -3
 1@@ -592,10 +592,27 @@ xs_dict *mastoapi_account(const xs_dict *actor)
 2         acct = xs_dict_append(acct, "emojis", eml);
 3     }
 4 
 5+    acct = xs_dict_append(acct, "locked", xs_stock_false);
 6+    acct = xs_dict_append(acct, "followers_count", xs_stock_0);
 7+    acct = xs_dict_append(acct, "following_count", xs_stock_0);
 8+    acct = xs_dict_append(acct, "statuses_count", xs_stock_0);
 9+
10+    acct = xs_dict_append(acct, "fields", xs_stock_list);
11+
12     return acct;
13 }
14 
15 
16+xs_str *mastoapi_date(char *date)
17+/* converts an ISO 8601 date to whatever format Mastodon uses */
18+{
19+    xs_str *s = xs_crop_i(xs_dup(date), 0, 19);
20+    s = xs_str_cat(s, ".000Z");
21+
22+    return s;
23+}
24+
25+
26 xs_dict *mastoapi_poll(snac *snac, const xs_dict *msg)
27 /* creates a mastoapi Poll object */
28 {
29@@ -607,7 +624,8 @@ xs_dict *mastoapi_poll(snac *snac, const xs_dict *msg)
30     xs *options = xs_list_new();
31 
32     poll = xs_dict_append(poll, "id", mid);
33-    poll = xs_dict_append(poll, "expires_at", xs_dict_get(msg, "endTime"));
34+    xs *fd = mastoapi_date(xs_dict_get(msg, "endTime"));
35+    poll = xs_dict_append(poll, "expires_at", fd);
36     poll = xs_dict_append(poll, "expired",
37             xs_dict_get(msg, "closed") != NULL ? xs_stock_true : xs_stock_false);
38 
39@@ -673,9 +691,11 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
40     st = xs_dict_append(st, "id",           mid);
41     st = xs_dict_append(st, "uri",          id);
42     st = xs_dict_append(st, "url",          id);
43-    st = xs_dict_append(st, "created_at",   xs_dict_get(msg, "published"));
44     st = xs_dict_append(st, "account",      acct);
45 
46+    xs *fd = mastoapi_date(xs_dict_get(msg, "published"));
47+    st = xs_dict_append(st, "created_at", fd);
48+
49     {
50         const char *content = xs_dict_get(msg, "content");
51         const char *name    = xs_dict_get(msg, "name");
52@@ -928,10 +948,15 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
53     st = xs_dict_append(st, "text", tmp);
54 
55     tmp = xs_dict_get(msg, "updated");
56+    xs *fd2 = NULL;
57     if (xs_is_null(tmp))
58         tmp = xs_stock_null;
59+    else {
60+        fd2 = mastoapi_date(tmp);
61+        tmp = fd2;
62+    }
63 
64-    st = xs_dict_append(st, "edited_at", tmp);
65+    st = xs_dict_append(st, "edited_at", fd2);
66 
67     if (strcmp(type, "Question") == 0) {
68         xs *poll = mastoapi_poll(snac, msg);