diff options
| author | default <nobody@localhost> | 2024-11-24 08:31:01 +0100 |
|---|---|---|
| committer | default <nobody@localhost> | 2024-11-24 08:31:01 +0100 |
| commit | b91177cb464ffdb118d50569592be3f9789dbef6 (patch) | |
| tree | 1f67098f7c104c5d12e67c2f749b3adcb29ada01 | |
| parent | 7287776fd1f659619e211ee482ba0d6d64ddbf0b (diff) | |
New function pending_get() and pending_list().
| -rw-r--r-- | data.c | 38 | ||||
| -rw-r--r-- | snac.h | 2 |
2 files changed, 40 insertions, 0 deletions
@@ -1224,6 +1224,44 @@ int pending_add(snac *user, const char *actor, const xs_dict *msg) } +xs_dict *pending_get(snac *user, const char *actor) +/* returns the pending follow confirmation for the actor */ +{ + xs *md5 = xs_md5_hex(actor, strlen(actor)); + xs *fn = xs_fmt("%s/pending/%s.json", user->basedir, md5); + xs_dict *msg = NULL; + FILE *f; + + if ((f = fopen(fn, "r")) != NULL) { + msg = xs_json_load(f); + fclose(f); + } + + return msg; +} + + +xs_list *pending_list(snac *user) +/* returns a list of pending follow confirmations */ +{ + xs *spec = xs_fmt("%s/pending/""*.json", user->basedir); + xs *l = xs_glob(spec, 0, 0); + xs_list *r = xs_list_new(); + const char *v; + + xs_list_foreach(l, v) { + const char *actor = xs_dict_get(v, "actor"); + + if (xs_type(actor) == XSTYPE_STRING) { + xs *md5 = xs_md5_hex(actor, strlen(actor)); + r = xs_list_append(r, md5); + } + } + + return r; +} + + /** timeline **/ double timeline_mtime(snac *snac) @@ -142,6 +142,8 @@ int follower_check(snac *snac, const char *actor); xs_list *follower_list(snac *snac); int pending_add(snac *user, const char *actor, const xs_dict *msg); +xs_dict *pending_get(snac *user, const char *actor); +xs_list *pending_list(snac *user); double timeline_mtime(snac *snac); int timeline_touch(snac *snac); |