Bladeren bron

Merge pull request 'add support for Subway Tooter app' (#111) from pswilde/snac2:master into master

Reviewed-on: https://codeberg.org/grunfink/snac2/pulls/111
grunfink 2 jaren geleden
bovenliggende
commit
8fe76454d3
2 gewijzigde bestanden met toevoegingen van 31 en 0 verwijderingen
  1. 8 0
      httpd.c
  2. 23 0
      mastoapi.c

+ 8 - 0
httpd.c

@@ -223,6 +223,14 @@ int server_get_handler(xs_dict *req, const char *q_path,
             srv_baseurl);
             srv_baseurl);
     }
     }
     else
     else
+    if (strcmp(q_path, "/.well-known/host-meta") == 0) {
+        status = 200;
+        *ctype = "application/xrd+xml";
+        *body  = xs_str_new("<XRD>"
+                "<Link rel=\"lrdd\" type=\"application/xrd+xml\" template=\"%s/.well-known/webfinger?resource={uri}\"/>"
+                "</XRD>");
+    }
+    else
     if (strcmp(q_path, "/nodeinfo_2_0") == 0) {
     if (strcmp(q_path, "/nodeinfo_2_0") == 0) {
         status = 200;
         status = 200;
         *ctype = "application/json; charset=utf-8";
         *ctype = "application/json; charset=utf-8";

+ 23 - 0
mastoapi.c

@@ -359,6 +359,12 @@ int oauth_post_handler(const xs_dict *req, const char *q_path,
             }
             }
         }
         }
 
 
+	/* no code? 
+	   I'm not sure of the impacts of this right now, but Subway Tooter does not
+	   provide a code so one must be generated */
+        if (xs_is_null(code)){
+            code = random_str();
+        }
         if (gtype && code && cid && csec && ruri) {
         if (gtype && code && cid && csec && ruri) {
             xs *app = app_get(cid);
             xs *app = app_get(cid);
 
 
@@ -1622,6 +1628,15 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
         status = 200;
         status = 200;
     }
     }
     else
     else
+    if (strcmp(cmd, "/v2/filters") == 0) { /** **/
+        /* snac will never have filters 
+	 * but still, without a v2 endpoint a short delay is introduced
+	 * in some apps */
+        *body  = xs_dup("[]");
+        *ctype = "application/json";
+        status = 200;
+    }
+    else
     if (strcmp(cmd, "/v1/favourites") == 0) { /** **/
     if (strcmp(cmd, "/v1/favourites") == 0) { /** **/
         /* snac will never support a list of favourites */
         /* snac will never support a list of favourites */
         *body  = xs_dup("[]");
         *body  = xs_dup("[]");
@@ -1990,6 +2005,14 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
         if (!xs_is_null(payload))
         if (!xs_is_null(payload))
             args = xs_json_loads(payload);
             args = xs_json_loads(payload);
     }
     }
+    else if (i_ctype && xs_startswith(i_ctype, "application/x-www-form-urlencoded"))
+    {
+	// Some apps send form data instead of json so we should cater for those
+        if (!xs_is_null(payload)) {
+            xs *upl = xs_url_dec(payload);
+            args    = xs_url_vars(upl);
+        }
+    }
     else
     else
         args = xs_dup(xs_dict_get(req, "p_vars"));
         args = xs_dup(xs_dict_get(req, "p_vars"));