<?php namespace App\Services; use Illuminate\Support\Facades\Http; use App\Profile; use App\Util\ActivityPub\Helpers; use App\Util\ActivityPub\HttpSignature; use Illuminate\Http\Client\ConnectionException; use Illuminate\Http\Client\RequestException; class ActivityPubFetchService { public static function get($url) { if(!Helpers::validateUrl($url)) { return 0; } $baseHeaders = [ 'Accept' => 'application/activity+json, application/ld+json', 'User-Agent' => '(Pixelfed/'.config('pixelfed.version').'; +'.config('app.url').')' ]; $headers = HttpSignature::instanceActorSign($url, false, $baseHeaders); $headers['Accept'] = 'application/activity+json, application/ld+json'; $headers['User-Agent'] = '(Pixelfed/'.config('pixelfed.version').'; +'.config('app.url').')'; try { $res = Http::withHeaders($headers) ->timeout(30) ->connectTimeout(5) ->retry(3, 500) ->get($url); } catch (RequestException $e) { return; } catch (ConnectionException $e) { return; } catch (Exception $e) { return; } if(!$res->ok()) { return; } return $res->body(); } }