commit de6934a

grunfink  ·  2025-01-01 10:41:48 +0000 UTC
parents 4f34926, a22bec3
Merge pull request 'Fix verify_links' (#261) from nowster/snac2:verify_links into master

Reviewed-on: https://codeberg.org/grunfink/snac2/pulls/261
1 files changed,  +25, -2
+25, -2
 1@@ -446,7 +446,8 @@ int deluser(snac *user)
 2 void verify_links(snac *user)
 3 /* verifies a user's links */
 4 {
 5-    const xs_dict *p = xs_dict_get(user->config, "metadata");
 6+    xs *metadata = NULL;
 7+    const xs_dict *md = xs_dict_get(user->config, "metadata");
 8     const char *k, *v;
 9     int changed = 0;
10 
11@@ -454,8 +455,30 @@ void verify_links(snac *user)
12     headers = xs_dict_append(headers, "accept", "text/html");
13     headers = xs_dict_append(headers, "user-agent", USER_AGENT " (link verify)");
14 
15+    if (xs_type(md) == XSTYPE_DICT)
16+        metadata = xs_dup(md);
17+    else
18+    if (xs_type(md) == XSTYPE_STRING) {
19+        /* convert to dict for easier iteration */
20+        metadata = xs_dict_new();
21+        xs *l = xs_split(md, "\n");
22+        const char *ll;
23+
24+        xs_list_foreach(l, ll) {
25+            xs *kv = xs_split_n(ll, "=", 1);
26+            const char *k = xs_list_get(kv, 0);
27+            const char *v = xs_list_get(kv, 1);
28+
29+            if (k && v) {
30+                xs *kk = xs_strip_i(xs_dup(k));
31+                xs *vv = xs_strip_i(xs_dup(v));
32+                metadata = xs_dict_set(metadata, kk, vv);
33+            }
34+        }
35+    }
36+
37     int c = 0;
38-    while (p && xs_dict_next(p, &k, &v, &c)) {
39+    while (metadata && xs_dict_next(metadata, &k, &v, &c)) {
40         /* not an https link? skip */
41         if (!xs_startswith(v, "https:/" "/"))
42             continue;