ソースを参照

Merge pull request #3900 from pixelfed/staging

Update AP helpers
daniel 2 年 前
コミット
668cae7c83
2 ファイル変更18 行追加5 行削除
  1. 14 4
      app/Services/ActivityPubFetchService.php
  2. 4 1
      app/Util/ActivityPub/Helpers.php

+ 14 - 4
app/Services/ActivityPubFetchService.php

@@ -6,6 +6,7 @@ use Illuminate\Support\Facades\Http;
 use App\Profile;
 use App\Util\ActivityPub\Helpers;
 use App\Util\ActivityPub\HttpSignature;
+use Illuminate\Http\Client\ConnectionException;
 
 class ActivityPubFetchService
 {
@@ -19,9 +20,18 @@ class ActivityPubFetchService
 		$headers['Accept'] = 'application/activity+json, application/json';
 		$headers['User-Agent'] = '(Pixelfed/'.config('pixelfed.version').'; +'.config('app.url').')';
 
-		return Http::withHeaders($headers)
-			->timeout(30)
-			->get($url)
-			->body();
+		try {
+			$res = Http::withHeaders($headers)
+				->timeout(10)
+				->get($url);
+		} catch (ConnectionException $e) {
+			return;
+		} catch (Exception $e) {
+			return;
+		}
+		if(!$res->ok()) {
+			return;
+		}
+		return $res->body();
 	}
 }

+ 4 - 1
app/Util/ActivityPub/Helpers.php

@@ -248,10 +248,13 @@ class Helpers {
 
 		$hash = hash('sha256', $url);
 		$key = "helpers:url:fetcher:sha256-{$hash}";
-		$ttl = now()->addMinutes(5);
+		$ttl = now()->addMinutes(15);
 
 		return Cache::remember($key, $ttl, function() use($url) {
 			$res = ActivityPubFetchService::get($url);
+			if(!$res || empty($res)) {
+				return false;
+			}
 			$res = json_decode($res, true, 8);
 			if(json_last_error() == JSON_ERROR_NONE) {
 				return $res;