]> git.mxchange.org Git - friendica.git/commitdiff
API is now working on my nginx server.
authorMichael <icarus@dabo.de>
Mon, 20 Feb 2012 00:53:22 +0000 (01:53 +0100)
committerMichael <icarus@dabo.de>
Mon, 20 Feb 2012 00:53:22 +0000 (01:53 +0100)
boot.php
include/api.php
include/bb2diaspora.php

index 0c79b6e5499fa33956ee591061ed21bab3937bb5..d9c788f8affa516dbe41ac52b21dc60ac923ebf9 100755 (executable)
--- a/boot.php
+++ b/boot.php
@@ -309,8 +309,12 @@ class App {
                        . 'library/phpsec' . PATH_SEPARATOR 
                        . '.' );
 
-               if((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,2) === "q=")
+               if((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,2) === "q=") {
                        $this->query_string = substr($_SERVER['QUERY_STRING'],2);
+                       // removing trailing / - maybe a nginx problem
+                       if (substr($this->query_string, 0, 1) == "/")
+                               $this->query_string = substr($this->query_string, 1);
+               }
                if(x($_GET,'q'))
                        $this->cmd = trim($_GET['q'],'/\\');
 
index 7b8709659e810384a1f1136970b6358aec2ff116..a621f1aa73160df0a2e51b581697035e1190193e 100755 (executable)
         **************************/
        function api_call(&$a){
                GLOBAL $API, $called_api;
+
+               // preset
+               $type="json";
+
                foreach ($API as $p=>$info){
                        if (strpos($a->query_string, $p)===0){
                                $called_api= explode("/",$p);
 
                                load_contact_links(local_user());
 
-                               logger('API call for ' . $a->user['username'] . ': ' . $a->query_string);               
+                               logger('API call for ' . $a->user['username'] . ': ' . $a->query_string);
                                logger('API parameters: ' . print_r($_REQUEST,true));
-                               $type="json";           
+                               $type="json";
                                if (strpos($a->query_string, ".xml")>0) $type="xml";
                                if (strpos($a->query_string, ".json")>0) $type="json";
                                if (strpos($a->query_string, ".rss")>0) $type="rss";
-                               if (strpos($a->query_string, ".atom")>0) $type="atom";                          
-                               
+                               if (strpos($a->query_string, ".atom")>0) $type="atom";
+
                                $r = call_user_func($info['func'], $a, $type);
                                if ($r===false) return;
 
                                                header ("Content-Type: text/xml");
                                                return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
                                                break;
-                                       case "json": 
-                                               //header ("Content-Type: application/json");  
+                                       case "json":
+                                               //header ("Content-Type: application/json");
                                                foreach($r as $rr)
                                                    return json_encode($rr);
                                                break;
                                                header ("Content-Type: application/atom+xml");
                                                return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
                                                break;
-                                               
+
                                }
                                //echo "<pre>"; var_dump($r); die();
                        }
                                header ("Content-Type: text/xml");
                                return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
                                break;
-                       case "json": 
-                               header ("Content-Type: application/json");  
+                       case "json":
+                               header ("Content-Type: application/json");
                            return json_encode(array('error' => 'not implemented'));
                                break;
                        case "rss":
                                header ("Content-Type: application/atom+xml");
                                return '<?xml version="1.0" encoding="UTF-8"?>'."\n".$r;
                                break;
-                               
                }
        }
 
index 6f0ab3d28f04be900c913c4f5c2c953024d733fd..4bb9e5e4795ab8d46f67d21b984c5854d5dfd6f8 100755 (executable)
@@ -24,6 +24,9 @@ function diaspora2bb($s) {
        // Simply remove cr.
        $s = str_replace("\r","",$s);
 
+       // <br/> is invalid. Replace it with the valid expression
+       $s = str_replace("<br/>","<br />",$s);
+
        $s = preg_replace('/\@\{(.+?)\; (.+?)\@(.+?)\}/','@[url=https://$3/u/$2]$1[/url]',$s);
 
        // Escaping the hash tags - doesn't always seem to work
@@ -40,12 +43,14 @@ function diaspora2bb($s) {
        $s = html2bbcode($s);
 //     $s = str_replace('&#42;','*',$s);
 
+       // Convert everything that looks like a link to a link
+       $s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3]$2$3[/url]',$s);
 
+       //$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)(vimeo|youtu|www\.youtube|soundcloud)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3$4]$2$3$4[/url]',$s);
        $s = preg_replace("/\[url\=?(.*?)\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/url\]/ism",'[youtube]$2[/youtube]',$s);
        $s = preg_replace("/\[url\=https?:\/\/www.youtube.com\/watch\?v\=(.*?)\].*?\[\/url\]/ism",'[youtube]$1[/youtube]',$s);
        $s = preg_replace("/\[url\=?(.*?)\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/url\]/ism",'[vimeo]$2[/vimeo]',$s);
        $s = preg_replace("/\[url\=https?:\/\/vimeo.com\/([0-9]+)\](.*?)\[\/url\]/ism",'[vimeo]$1[/vimeo]',$s);
-       $s = preg_replace("/([^\]\=]|^)(https?\:\/\/)(vimeo|youtu|www\.youtube|soundcloud)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url]$2$3$4[/url]',$s);
        // remove duplicate adjacent code tags
        $s = preg_replace("/(\[code\])+(.*?)(\[\/code\])+/ism","[code]$2[/code]", $s);