summaryrefslogtreecommitdiff
path: root/snac.h
diff options
context:
space:
mode:
Diffstat (limited to 'snac.h')
-rw-r--r--snac.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/snac.h b/snac.h
index 142ebc1..256731f 100644
--- a/snac.h
+++ b/snac.h
@@ -1,7 +1,7 @@
1/* snac - A simple, minimalistic ActivityPub instance */ 1/* snac - A simple, minimalistic ActivityPub instance */
2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */ 2/* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
3 3
4#define VERSION "2.74" 4#define VERSION "2.77"
5 5
6#define USER_AGENT "snac/" VERSION 6#define USER_AGENT "snac/" VERSION
7 7
@@ -61,6 +61,7 @@ typedef struct {
61 xs_str *actor; /* actor url */ 61 xs_str *actor; /* actor url */
62 xs_str *md5; /* actor url md5 */ 62 xs_str *md5; /* actor url md5 */
63 const xs_dict *lang;/* string translation dict */ 63 const xs_dict *lang;/* string translation dict */
64 const char *tz; /* configured timezone */
64} snac; 65} snac;
65 66
66typedef struct { 67typedef struct {
@@ -152,12 +153,14 @@ int follower_add(snac *snac, const char *actor);
152int follower_del(snac *snac, const char *actor); 153int follower_del(snac *snac, const char *actor);
153int follower_check(snac *snac, const char *actor); 154int follower_check(snac *snac, const char *actor);
154xs_list *follower_list(snac *snac); 155xs_list *follower_list(snac *snac);
156int follower_list_len(snac *snac);
155 157
156int pending_add(snac *user, const char *actor, const xs_dict *msg); 158int pending_add(snac *user, const char *actor, const xs_dict *msg);
157int pending_check(snac *user, const char *actor); 159int pending_check(snac *user, const char *actor);
158xs_dict *pending_get(snac *user, const char *actor); 160xs_dict *pending_get(snac *user, const char *actor);
159void pending_del(snac *user, const char *actor); 161void pending_del(snac *user, const char *actor);
160xs_list *pending_list(snac *user); 162xs_list *pending_list(snac *user);
163int pending_count(snac *user);
161 164
162double timeline_mtime(snac *snac); 165double timeline_mtime(snac *snac);
163int timeline_touch(snac *snac); 166int timeline_touch(snac *snac);
@@ -182,6 +185,7 @@ int following_del(snac *snac, const char *actor);
182int following_check(snac *snac, const char *actor); 185int following_check(snac *snac, const char *actor);
183int following_get(snac *snac, const char *actor, xs_dict **data); 186int following_get(snac *snac, const char *actor, xs_dict **data);
184xs_list *following_list(snac *snac); 187xs_list *following_list(snac *snac);
188int following_list_len(snac *snac);
185 189
186void mute(snac *snac, const char *actor); 190void mute(snac *snac, const char *actor);
187void unmute(snac *snac, const char *actor); 191void unmute(snac *snac, const char *actor);
@@ -205,6 +209,12 @@ void draft_del(snac *user, const char *id);
205void draft_add(snac *user, const char *id, const xs_dict *msg); 209void draft_add(snac *user, const char *id, const xs_dict *msg);
206xs_list *draft_list(snac *user); 210xs_list *draft_list(snac *user);
207 211
212int is_scheduled(snac *user, const char *id);
213void schedule_del(snac *user, const char *id);
214void schedule_add(snac *user, const char *id, const xs_dict *msg);
215xs_list *scheduled_list(snac *user);
216void scheduled_process(snac *user);
217
208int limited(snac *user, const char *id, int cmd); 218int limited(snac *user, const char *id, int cmd);
209#define is_limited(user, id) limited((user), (id), 0) 219#define is_limited(user, id) limited((user), (id), 0)
210#define limit(user, id) limited((user), (id), 1) 220#define limit(user, id) limited((user), (id), 1)
@@ -282,6 +292,7 @@ void enqueue_close_question(snac *user, const char *id, int end_secs);
282void enqueue_object_request(snac *user, const char *id, int forward_secs); 292void enqueue_object_request(snac *user, const char *id, int forward_secs);
283void enqueue_verify_links(snac *user); 293void enqueue_verify_links(snac *user);
284void enqueue_actor_refresh(snac *user, const char *actor, int forward_secs); 294void enqueue_actor_refresh(snac *user, const char *actor, int forward_secs);
295void enqueue_webmention(const xs_dict *msg);
285int was_question_voted(snac *user, const char *id); 296int was_question_voted(snac *user, const char *id);
286 297
287xs_list *user_queue(snac *snac); 298xs_list *user_queue(snac *snac);
@@ -367,6 +378,7 @@ int activitypub_post_handler(const xs_dict *req, const char *q_path,
367 char **body, int *b_size, char **ctype); 378 char **body, int *b_size, char **ctype);
368 379
369xs_dict *emojis(void); 380xs_dict *emojis(void);
381xs_str *format_text_with_emoji(snac *user, const char *text, int ems, const char *proxy);
370xs_str *not_really_markdown(const char *content, xs_list **attach, xs_list **tag); 382xs_str *not_really_markdown(const char *content, xs_list **attach, xs_list **tag);
371xs_str *sanitize(const char *content); 383xs_str *sanitize(const char *content);
372xs_str *encode_html(const char *str); 384xs_str *encode_html(const char *str);
@@ -427,6 +439,7 @@ void import_blocked_accounts_csv(snac *user, const char *fn);
427void import_following_accounts_csv(snac *user, const char *fn); 439void import_following_accounts_csv(snac *user, const char *fn);
428void import_list_csv(snac *user, const char *fn); 440void import_list_csv(snac *user, const char *fn);
429void import_csv(snac *user); 441void import_csv(snac *user);
442int parse_port(const char *url, const char **errstr);
430 443
431typedef enum { 444typedef enum {
432#define HTTP_STATUS(code, name, text) HTTP_STATUS_ ## name = code, 445#define HTTP_STATUS(code, name, text) HTTP_STATUS_ ## name = code,