]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - extlib/Services/oEmbed.php
Merge branch '1.0.x' into schema-x
[quix0rs-gnu-social.git] / extlib / Services / oEmbed.php
index 5d38ed883d50fb6e5e5333691032f9d53cea55ca..0dc8f01b2f4580ba3734ec133370ec58cca33628 100644 (file)
@@ -162,7 +162,7 @@ class Services_oEmbed
         }
 
         if ($this->options[self::OPTION_API] === null) {
-            $this->options[self::OPTION_API] = $this->discover();
+            $this->options[self::OPTION_API] = $this->discover($url);
         } 
     }
 
@@ -256,7 +256,7 @@ class Services_oEmbed
 
         $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
         if (substr($code, 0, 1) != '2') {
-            throw new Services_oEmbed_Exception('Non-200 code returned');
+            throw new Services_oEmbed_Exception('Non-200 code returned. Got code ' . $code);
         }
 
         curl_close($ch);
@@ -302,8 +302,8 @@ class Services_oEmbed
 
         // Find all <link /> tags that have a valid oembed type set. We then
         // extract the href attribute for each type.
-        $regexp = '#<link([^>]*)type="' . 
-                  '(application/json|text/xml)\+oembed"([^>]*)>#i';
+        $regexp = '#<link([^>]*)type[\s\n]*=[\s\n]*"' . 
+                  '(application/json|text/xml)\+oembed"([^>]*)>#im';
 
         $m = $ret = array();
         if (!preg_match_all($regexp, $body, $m)) {
@@ -314,12 +314,12 @@ class Services_oEmbed
 
         foreach ($m[0] as $i => $link) {
             $h = array();
-            if (preg_match('/href="([^"]+)"/i', $link, $h)) {
+            if (preg_match('/[\s\n]+href[\s\n]*=[\s\n]*"([^"]+)"/im', $link, $h)) {
                 $ret[$m[2][$i]] = $h[1];
             }
         } 
 
-        return (isset($ret['json']) ? $ret['json'] : array_pop($ret));
+        return (isset($ret['application/json']) ? $ret['application/json'] : array_pop($ret));
     }
 
     /**
@@ -347,7 +347,7 @@ class Services_oEmbed
 
         $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
         if (substr($code, 0, 1) != '2') {
-            throw new Services_oEmbed_Exception('Non-200 code returned');
+            throw new Services_oEmbed_Exception('Non-200 code returned. Got code ' . $code);
         }
 
         return $result;