diff options
Diffstat (limited to 'snac.h')
| -rw-r--r-- | snac.h | 39 |
1 files changed, 25 insertions, 14 deletions
@@ -1,7 +1,7 @@ /* snac - A simple, minimalistic ActivityPub instance */ /* copyright (c) 2022 - 2026 grunfink et al. / MIT license */ -#define VERSION "2.92-dev" +#define VERSION "2.95" #define USER_AGENT "snac/" VERSION @@ -79,6 +79,15 @@ typedef struct { enum { THST_STOP, THST_WAIT, THST_IN, THST_QUEUE } th_state[MAX_THREADS]; } srv_state; +typedef enum { + OP_CHECK = 0, + OP_ADD = 1, + OP_DEL = 2, + OP_LIST = 3, + OP_FIND = 4, + OP_ID = 5 +} snac_op; + extern srv_state *p_state; enum { @@ -88,7 +97,7 @@ enum { SCOPE_FOLLOWERS = 3, }; -void snac_log(snac *user, xs_str *str); +void snac_log(const snac *user, xs_str *str); #define snac_debug(user, level, str) do { if (dbglevel >= (level)) \ { snac_log((user), (str)); } } while (0) @@ -157,6 +166,7 @@ int object_emoji_react(const char *mid, const char *eid); int object_rm_emoji_react(const char *mid, const char *eid); int object_likes_len(const char *id); int object_announces_len(const char *id); +int object_emojireacts_len(const char *id); xs_list *object_children(const char *id); xs_list *object_likes(const char *id); @@ -247,10 +257,10 @@ void schedule_add(snac *user, const char *id, const xs_dict *msg); xs_list *scheduled_list(snac *user); void scheduled_process(snac *user); -int limited(snac *user, const char *id, int cmd); -#define is_limited(user, id) limited((user), (id), 0) -#define limit(user, id) limited((user), (id), 1) -#define unlimit(user, id) limited((user), (id), 2) +int limited(snac *user, const char *id, snac_op); +#define is_limited(user, id) limited((user), (id), OP_CHECK) +#define limit(user, id) limited((user), (id), OP_ADD) +#define unlimit(user, id) limited((user), (id), OP_DEL) void hide(snac *snac, const char *id); int is_hidden(snac *snac, const char *id); @@ -260,10 +270,10 @@ void tag_index(const char *id, const xs_dict *obj); xs_str *tag_fn(const char *tag); xs_list *tag_search(const char *tag, int skip, int show); -xs_val *list_maint(snac *user, const char *list, int op); +xs_val *list_maint(snac *user, const char *list, snac_op op); xs_str *list_timeline_fn(snac *user, const char *list); xs_list *list_timeline(snac *user, const char *list, int skip, int show); -xs_val *list_members(snac *user, const char *list_id, const char *actor_md5, int op); +xs_val *list_members(snac *user, const char *list_id, const char *actor_md5, snac_op op); void list_distribute(snac *user, const char *who, const xs_dict *post); int actor_add(const char *actor, const xs_dict *msg); @@ -291,7 +301,7 @@ void notify_add(snac *snac, const char *type, const char *utype, xs_dict *notify_get(snac *snac, const char *id); int notify_new_num(snac *snac); xs_list *notify_list(snac *snac, int skip, int show); -xs_list *notify_filter_list(snac *snac, xs_list *ids); +xs_list *notify_filter_list(snac *snac, xs_list *ids, int skip, int show); void notify_clear(snac *snac); xs_dict *markers_get(snac *snac, const xs_list *markers); @@ -309,10 +319,10 @@ int content_match(const char *file, const xs_dict *msg); xs_list *content_search(snac *user, const char *regex, int priv, int skip, int show, int max_secs, int *timeout); -int actor_failure(const char *actor, int op); -int instance_failure(const char *url, int op); +int actor_failure(const char *actor, snac_op op); +int instance_failure(const char *url, snac_op op); -int grave(const char *objid, int op); +int grave(const char *objid, snac_op op); void enqueue_input(snac *snac, const xs_dict *msg, const xs_dict *req, int retries); void enqueue_shared_input(const xs_dict *msg, const xs_dict *req, int retries); @@ -358,7 +368,7 @@ xs_dict *http_signed_request(snac *snac, const char *method, const char *url, const char *body, int b_size, int *status, xs_str **payload, int *p_size, int timeout); -int check_signature(const xs_dict *req, xs_str **err); +int check_signature(const xs_dict *req, xs_str **err, xs_str **key_id); srv_state *srv_state_op(xs_str **fname, int op); void httpd(void); @@ -438,7 +448,8 @@ xs_str *encode_html(const char *str); xs_str *html_timeline(snac *user, const xs_list *list, int read_only, int skip, int show, int show_more, - const char *title, const char *page, int utl, const char *error, int terse); + const char *title, const char *page, + int utl, const char *error, int terse, int tb_friendly); int html_get_handler(const xs_dict *req, const char *q_path, char **body, int *b_size, char **ctype, |