commit 2e982c7

grunfink  ·  2025-07-27 02:08:37 +0000 UTC
parent 6ec9ec4
mastoapi: Fixed metadata in verify_credentials.
1 files changed,  +25, -2
+25, -2
 1@@ -1271,8 +1271,31 @@ void credentials_get(char **body, char **ctype, int *status, snac snac)
 2     acct = xs_dict_append(acct, "header", header);
 3     acct = xs_dict_append(acct, "header_static", header);
 4 
 5-    const xs_dict *metadata = xs_dict_get(snac.config, "metadata");
 6-    if (xs_type(metadata) == XSTYPE_DICT) {
 7+    xs *metadata = NULL;
 8+    const xs_dict *md = xs_dict_get(snac.config, "metadata");
 9+
10+    if (xs_is_dict(md))
11+        metadata = xs_dup(md);
12+    else
13+    if (xs_is_string(md)) {
14+        metadata = xs_dict_new();
15+        xs *l = xs_split(md, "\n");
16+        const char *ll;
17+
18+        xs_list_foreach(l, ll) {
19+            xs *kv = xs_split_n(ll, "=", 1);
20+            const char *k = xs_list_get(kv, 0);
21+            const char *v = xs_list_get(kv, 1);
22+
23+            if (k && v) {
24+                xs *kk = xs_strip_i(xs_dup(k));
25+                xs *vv = xs_strip_i(xs_dup(v));
26+                metadata = xs_dict_set(metadata, kk, vv);
27+            }
28+        }
29+    }
30+
31+    if (xs_is_dict(metadata)) {
32         xs *fields = xs_list_new();
33         const xs_str *k;
34         const xs_str *v;