]> git.mxchange.org Git - friendica.git/blobdiff - src/Util/Network.php
Merge remote-tracking branch 'upstream/3.6-rc' into url-shorten-ostatus
[friendica.git] / src / Util / Network.php
index ab1d44625c92a14aa3680b4162c85f06bc82b44b..d25b799242e052bc4b3406c2b873bca97a166ee8 100644 (file)
@@ -12,8 +12,8 @@ use Friendica\Core\Config;
 use Friendica\Network\Probe;
 use Friendica\Object\Image;
 use Friendica\Util\XML;
-
-require_once 'library/slinky.php';
+use DOMDocument;
+use DomXPath;
 
 class Network
 {
@@ -80,7 +80,7 @@ class Network
                $a = get_app();
 
                if (self::isUrlBlocked($url)) {
-                       logger('z_fetch_url: domain of ' . $url . ' is blocked', LOGGER_DATA);
+                       logger('domain of ' . $url . ' is blocked', LOGGER_DATA);
                        return $ret;
                }
 
@@ -185,7 +185,7 @@ class Network
                }
 
                if (curl_errno($ch) !== CURLE_OK) {
-                       logger('fetch_url error fetching ' . $url . ': ' . curl_error($ch), LOGGER_NORMAL);
+                       logger('error fetching ' . $url . ': ' . curl_error($ch), LOGGER_NORMAL);
                }
 
                $ret['errno'] = curl_errno($ch);
@@ -195,7 +195,7 @@ class Network
 
                $http_code = $curl_info['http_code'];
 
-               logger('fetch_url ' . $url . ': ' . $http_code . " " . $s, LOGGER_DATA);
+               logger($url . ': ' . $http_code . " " . $s, LOGGER_DATA);
                $header = '';
 
                // Pull out multiple headers, e.g. proxy and continuation headers
@@ -217,7 +217,7 @@ class Network
 
                        $newurl = $curl_info['redirect_url'];
 
-                       if (($new_location_info['path'] == '') && ( $new_location_info['host'] != '')) {
+                       if (($new_location_info['path'] == '') && ($new_location_info['host'] != '')) {
                                $newurl = $new_location_info['scheme'] . '://' . $new_location_info['host'] . $old_location_info['path'];
                        }
 
@@ -229,11 +229,16 @@ class Network
                        if (strpos($newurl, '/') === 0) {
                                $newurl = $old_location_info["scheme"]."://".$old_location_info["host"].$newurl;
                        }
+                       $old_location_query = @parse_url($url, PHP_URL_QUERY);
+
+                       if ($old_location_query != '') {
+                               $newurl .= '?' . $old_location_query;
+                       }
 
                        if (filter_var($newurl, FILTER_VALIDATE_URL)) {
                                $redirects++;
                                @curl_close($ch);
-                               return self::zFetchURL($newurl, $binary, $redirects, $opts);
+                               return self::curl($newurl, $binary, $redirects, $opts);
                        }
                }
 
@@ -248,8 +253,8 @@ class Network
                if (!$ret['success']) {
                        $ret['error'] = curl_error($ch);
                        $ret['debug'] = $curl_info;
-                       logger('z_fetch_url: error: '.$url.': '.$ret['return_code'].' - '.$ret['error'], LOGGER_DEBUG);
-                       logger('z_fetch_url: debug: '.print_r($curl_info, true), LOGGER_DATA);
+                       logger('error: '.$url.': '.$ret['return_code'].' - '.$ret['error'], LOGGER_DEBUG);
+                       logger('debug: '.print_r($curl_info, true), LOGGER_DATA);
                }
 
                $ret['body'] = substr($s, strlen($header));
@@ -370,6 +375,9 @@ class Network
 
                if ($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) {
                        $matches = [];
+                       $new_location_info = @parse_url($curl_info['redirect_url']);
+                       $old_location_info = @parse_url($curl_info['url']);
+       
                        preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
                        $newurl = trim(array_pop($matches));
 
@@ -771,29 +779,6 @@ class Network
                return $url;
        }
 
-       public static function shortenUrl($url)
-       {
-               $slinky = new Slinky($url);
-               $yourls_url = Config::get('yourls', 'url1');
-               if ($yourls_url) {
-                       $yourls_username = Config::get('yourls', 'username1');
-                       $yourls_password = Config::get('yourls', 'password1');
-                       $yourls_ssl = Config::get('yourls', 'ssl1');
-                       $yourls = new Slinky_YourLS();
-                       $yourls->set('username', $yourls_username);
-                       $yourls->set('password', $yourls_password);
-                       $yourls->set('ssl', $yourls_ssl);
-                       $yourls->set('yourls-url', $yourls_url);
-                       $slinky->set_cascade([$yourls, new Slinky_Ur1ca(), new Slinky_TinyURL()]);
-               } else {
-                       // setup a cascade of shortening services
-                       // try to get a short link from these services
-                       // in the order ur1.ca, tinyurl
-                       $slinky->set_cascade([new Slinky_Ur1ca(), new Slinky_TinyURL()]);
-               }
-               return $slinky->short();
-       }
-
        /**
         * @brief Find the matching part between two url
         *