summaryrefslogtreecommitdiff
path: root/mastoapi.c
diff options
context:
space:
mode:
authorGravatar default2024-05-31 11:11:25 +0200
committerGravatar default2024-05-31 11:11:25 +0200
commitf1712dbe5d73bb75df1c3d332ca57ebc430ceda3 (patch)
tree3ac1edc07d1a482d212d349a348a82ad2666edfd /mastoapi.c
parentmastoapi: return an empty /v1/trends/statuses. (diff)
parentMerge pull request 'Implement instance announcements' (#173) from louis77/sna... (diff)
downloadpenes-snac2-f1712dbe5d73bb75df1c3d332ca57ebc430ceda3.tar.gz
penes-snac2-f1712dbe5d73bb75df1c3d332ca57ebc430ceda3.tar.xz
penes-snac2-f1712dbe5d73bb75df1c3d332ca57ebc430ceda3.zip
Merge branch 'master' of grunfink-codeberg:grunfink/snac2
Diffstat (limited to 'mastoapi.c')
-rw-r--r--mastoapi.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/mastoapi.c b/mastoapi.c
index 058cc76..4a6c53e 100644
--- a/mastoapi.c
+++ b/mastoapi.c
@@ -1997,10 +1997,40 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
1997 } 1997 }
1998 else 1998 else
1999 if (strcmp(cmd, "/v1/announcements") == 0) { /** **/ 1999 if (strcmp(cmd, "/v1/announcements") == 0) { /** **/
2000 /* snac has no announcements (yet?) */ 2000 if (logged_in) {
2001 *body = xs_dup("[]"); 2001 xs *resp = xs_list_new();
2002 *ctype = "application/json"; 2002 double la = 0.0;
2003 status = HTTP_STATUS_OK; 2003 xs *user_la = xs_dup(xs_dict_get(snac1.config, "last_announcement"));
2004 if (user_la != NULL)
2005 la = xs_number_get(user_la);
2006 xs *val_date = xs_str_utctime(la, ISO_DATE_SPEC);
2007
2008 /* contrary to html, we always send the announcement and set the read flag instead */
2009
2010 const t_announcement *annce = announcement(la);
2011 if (annce != NULL && annce->text != NULL) {
2012 xs *an = xs_dict_new();
2013 an = xs_dict_set(an, "id", xs_fmt("%d", annce->timestamp));
2014 an = xs_dict_set(an, "content", xs_fmt("<p>%s</p>", annce->text));
2015 an = xs_dict_set(an, "starts_at", xs_stock(XSTYPE_NULL));
2016 an = xs_dict_set(an, "ends_at", xs_stock(XSTYPE_NULL));
2017 an = xs_dict_set(an, "all_day", xs_stock(XSTYPE_TRUE));
2018 an = xs_dict_set(an, "published_at", val_date);
2019 an = xs_dict_set(an, "updated_at", val_date);
2020 an = xs_dict_set(an, "read", (annce->timestamp >= la)
2021 ? xs_stock(XSTYPE_FALSE) : xs_stock(XSTYPE_TRUE));
2022 an = xs_dict_set(an, "mentions", xs_stock(XSTYPE_LIST));
2023 an = xs_dict_set(an, "statuses", xs_stock(XSTYPE_LIST));
2024 an = xs_dict_set(an, "tags", xs_stock(XSTYPE_LIST));
2025 an = xs_dict_set(an, "emojis", xs_stock(XSTYPE_LIST));
2026 an = xs_dict_set(an, "reactions", xs_stock(XSTYPE_LIST));
2027 resp = xs_list_append(resp, an);
2028 }
2029
2030 *body = xs_json_dumps(resp, 4);
2031 *ctype = "application/json";
2032 status = HTTP_STATUS_OK;
2033 }
2004 } 2034 }
2005 else 2035 else
2006 if (strcmp(cmd, "/v1/custom_emojis") == 0) { /** **/ 2036 if (strcmp(cmd, "/v1/custom_emojis") == 0) { /** **/