]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Storage/ExternalResource.php
Insert a `user-contact` for every contact
[friendica.git] / src / Model / Storage / ExternalResource.php
index 8d1aded1516bbe7834a423933fafe4c659e55c29..413050c306aa563aa71ea91d6129db07bdfa242b 100644 (file)
@@ -21,8 +21,8 @@
 
 namespace Friendica\Model\Storage;
 
-use BadMethodCallException;
-use Friendica\Network\IHTTPRequest;
+use Exception;
+use Friendica\Util\HTTPSignature;
 
 /**
  * External resource storage class
@@ -34,61 +34,33 @@ class ExternalResource implements IStorage
 {
        const NAME = 'ExternalResource';
 
-       /** @var IHTTPRequest */
-       private $httpRequest;
-
-       public function __construct(IHTTPRequest $httpRequest)
-       {
-               $this->httpRequest = $httpRequest;
-       }
-
        /**
         * @inheritDoc
         */
-       public function get(string $filename)
+       public function get(string $reference): string
        {
-               $parts = parse_url($filename);
+               $data = json_decode($reference);
+               if (empty($data->url)) {
+                       throw new ReferenceStorageException(sprintf('Invalid reference %s, cannot retrieve URL', $reference));
+               }
+
+               $parts = parse_url($data->url);
                if (empty($parts['scheme']) || empty($parts['host'])) {
-                       return "";
+                       throw new ReferenceStorageException(sprintf('Invalid reference %s, cannot extract scheme and host', $reference));
                }
 
-               $curlResult = $this->httpRequest->get($filename);
-               if ($curlResult->isSuccess()) {
-                       return $curlResult->getBody();
+               try {
+                       $fetchResult = HTTPSignature::fetchRaw($data->url, $data->uid, ['accept_content' => []]);
+               } catch (Exception $exception) {
+                       throw new ReferenceStorageException(sprintf('External resource failed to get %s', $reference), $exception->getCode(), $exception);
+               }
+               if ($fetchResult->isSuccess()) {
+                       return $fetchResult->getBody();
                } else {
-                       return "";
+                       throw new ReferenceStorageException(sprintf('External resource failed to get %s', $reference), $fetchResult->getReturnCode(), new Exception($fetchResult->getBody()));
                }
        }
 
-       /**
-        * @inheritDoc
-        */
-       public function put(string $data, string $filename = '')
-       {
-               throw new BadMethodCallException();
-       }
-
-       public function delete(string $filename)
-       {
-               throw new BadMethodCallException();
-       }
-
-       /**
-        * @inheritDoc
-        */
-       public function getOptions()
-       {
-               return [];
-       }
-
-       /**
-        * @inheritDoc
-        */
-       public function saveOptions(array $data)
-       {
-               return [];
-       }
-
        /**
         * @inheritDoc
         */
@@ -100,7 +72,7 @@ class ExternalResource implements IStorage
        /**
         * @inheritDoc
         */
-       public static function getName()
+       public static function getName(): string
        {
                return self::NAME;
        }