diff options
| author | grunfink <grunfink@comam.es> | 2025-07-27 04:08:37 +0200 |
|---|---|---|
| committer | grunfink <grunfink@comam.es> | 2025-07-27 04:08:37 +0200 |
| commit | 2e982c79e1385b568d407f6e45f2b062761dec12 (patch) | |
| tree | c5a82fd2123e4deb3072d894b0c5799391c10402 | |
| parent | 6ec9ec4ec5ac588059391556ec38ec32fcbcd616 (diff) | |
mastoapi: Fixed metadata in verify_credentials.
| -rw-r--r-- | mastoapi.c | 27 |
1 files changed, 25 insertions, 2 deletions
@@ -1271,8 +1271,31 @@ void credentials_get(char **body, char **ctype, int *status, snac snac) acct = xs_dict_append(acct, "header", header); acct = xs_dict_append(acct, "header_static", header); - const xs_dict *metadata = xs_dict_get(snac.config, "metadata"); - if (xs_type(metadata) == XSTYPE_DICT) { + xs *metadata = NULL; + const xs_dict *md = xs_dict_get(snac.config, "metadata"); + + if (xs_is_dict(md)) + metadata = xs_dup(md); + else + if (xs_is_string(md)) { + metadata = xs_dict_new(); + xs *l = xs_split(md, "\n"); + const char *ll; + + xs_list_foreach(l, ll) { + xs *kv = xs_split_n(ll, "=", 1); + const char *k = xs_list_get(kv, 0); + const char *v = xs_list_get(kv, 1); + + if (k && v) { + xs *kk = xs_strip_i(xs_dup(k)); + xs *vv = xs_strip_i(xs_dup(v)); + metadata = xs_dict_set(metadata, kk, vv); + } + } + } + + if (xs_is_dict(metadata)) { xs *fields = xs_list_new(); const xs_str *k; const xs_str *v; |