]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Diaspora-compatible Salmon slap receival
authorMikael Nordfeldth <mmn@hethane.se>
Sat, 6 Jun 2015 15:14:01 +0000 (17:14 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Sat, 6 Jun 2015 15:14:38 +0000 (17:14 +0200)
We're not all the way there yet, there is something which seems to bugger
up profile discovery from their end.

plugins/OStatus/lib/salmonaction.php

index 6fb3d2f9fe20bf175437305ba3004d8e46836e63..5193d302f1e1ebf7a7f096acf0a9ed7c5ba1044b 100644 (file)
@@ -41,13 +41,27 @@ class SalmonAction extends Action
 
         parent::prepare($args);
 
-        if (!isset($_SERVER['CONTENT_TYPE']) || $_SERVER['CONTENT_TYPE'] != 'application/magic-envelope+xml') {
-            // TRANS: Client error. Do not translate "application/magic-envelope+xml".
-            $this->clientError(_m('Salmon requires "application/magic-envelope+xml".'));
+        if (!isset($_SERVER['CONTENT_TYPE'])) {
+            // TRANS: Client error. Do not translate "Content-type"
+            $this->clientError(_m('Salmon requires a Content-type header.'));
+        }
+        $envxml = null;
+        switch ($_SERVER['CONTENT_TYPE']) {
+        case 'application/magic-envelope+xml':
+            $envxml = file_get_contents('php://input');
+            break;
+        case 'application/x-www-form-urlencoded':
+            $envxml = Magicsig::base64_url_decode($this->trimmed('xml'));
+            break;
+        default:
+            // TRANS: Client error. Do not translate the quoted "application/[type]" strings.
+            $this->clientError(_m('Salmon requires "application/magic-envelope+xml". For Diaspora we also accept "application/x-www-form-urlencoded" with an "xml" parameter.', 415));
         }
 
         try {
-            $envxml = file_get_contents('php://input');
+            if (empty($envxml)) {
+                throw new ClientException('No magic envelope supplied in POST.');
+            }
             $magic_env = new MagicEnvelope($envxml);   // parse incoming XML as a MagicEnvelope
 
             $entry = $magic_env->getPayload();  // Not cryptographically verified yet!