summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data.c2
-rw-r--r--mastoapi.c28
-rw-r--r--snac.h2
3 files changed, 29 insertions, 3 deletions
diff --git a/data.c b/data.c
index 7a7adb0..db0d3aa 100644
--- a/data.c
+++ b/data.c
@@ -224,7 +224,7 @@ int user_open(snac *snac, const char *uid)
224} 224}
225 225
226 226
227d_char *user_list(void) 227xs_list *user_list(void)
228/* returns the list of user ids */ 228/* returns the list of user ids */
229{ 229{
230 xs *spec = xs_fmt("%s/user/" "*", srv_basedir); 230 xs *spec = xs_fmt("%s/user/" "*", srv_basedir);
diff --git a/mastoapi.c b/mastoapi.c
index 51578ad..047e4bd 100644
--- a/mastoapi.c
+++ b/mastoapi.c
@@ -974,15 +974,41 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
974 out = xs_list_new(); 974 out = xs_list_new();
975 xs *wing = following_list(&snac1); 975 xs *wing = following_list(&snac1);
976 xs *wers = follower_list(&snac1); 976 xs *wers = follower_list(&snac1);
977 xs *ulst = user_list();
977 xs_list *p; 978 xs_list *p;
979 xs_str *v;
978 xs_set seen; 980 xs_set seen;
979 981
980 xs_set_init(&seen); 982 xs_set_init(&seen);
981 983
984 /* local users */
985 p = ulst;
986 while (xs_list_iter(&p, &v)) {
987 snac user;
988
989 if (strcmp(v, xs_dict_get(snac1.config, "uid")) == 0)
990 continue;
991
992 if (user_open(&user, v)) {
993 xs *v2 = xs_tolower_i(xs_dup(v));
994
995 if (xs_startswith(v2, q)) {
996 xs *actor = msg_actor(&user);
997 xs *acct = mastoapi_account(actor);
998
999 out = xs_list_append(out, acct);
1000 }
1001
1002 xs_set_add(&seen, user.actor);
1003
1004 user_free(&user);
1005 }
1006 }
1007
1008 /* user relations */
982 xs_list *lsts[] = { wing, wers, NULL }; 1009 xs_list *lsts[] = { wing, wers, NULL };
983 int n; 1010 int n;
984 for (n = 0; (p = lsts[n]) != NULL; n++) { 1011 for (n = 0; (p = lsts[n]) != NULL; n++) {
985 xs_str *v;
986 1012
987 while (xs_list_iter(&p, &v)) { 1013 while (xs_list_iter(&p, &v)) {
988 /* already seen? skip */ 1014 /* already seen? skip */
diff --git a/snac.h b/snac.h
index 3939cc9..8629ab0 100644
--- a/snac.h
+++ b/snac.h
@@ -43,7 +43,7 @@ typedef struct _snac {
43 43
44int user_open(snac *snac, const char *uid); 44int user_open(snac *snac, const char *uid);
45void user_free(snac *snac); 45void user_free(snac *snac);
46d_char *user_list(void); 46xs_list *user_list(void);
47int user_open_by_md5(snac *snac, const char *md5); 47int user_open_by_md5(snac *snac, const char *md5);
48 48
49void snac_debug(snac *snac, int level, d_char *str); 49void snac_debug(snac *snac, int level, d_char *str);