From 3590adbd875ebf943b614090e12f6d51c55e8e11 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 16 Jul 2023 04:17:23 -0600 Subject: [PATCH] Update MediaStorageService, improve head header handling --- app/Services/MediaStorageService.php | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/app/Services/MediaStorageService.php b/app/Services/MediaStorageService.php index fd70e3a0f..b52662d1f 100644 --- a/app/Services/MediaStorageService.php +++ b/app/Services/MediaStorageService.php @@ -16,6 +16,7 @@ use App\Services\AccountService; use App\Http\Controllers\AvatarController; use GuzzleHttp\Exception\RequestException; use App\Jobs\MediaPipeline\MediaDeletePipeline; +use Illuminate\Support\Arr; class MediaStorageService { @@ -42,27 +43,16 @@ class MediaStorageService { return false; } - $h = $r->getHeaders(); + $h = Arr::mapWithKeys($r->getHeaders(), function($item, $key) { + return [strtolower($key) => last($item)]; + }); - if (isset($h['content-length']) && isset($h['content-type'])) { - if(empty($h['content-length']) || empty($h['content-type'])) { - return false; - } - $len = is_array($h['content-length']) ? $h['content-length'][0] : $h['content-length']; - $mime = is_array($h['content-type']) ? $h['content-type'][0] : $h['content-type']; - } else { - if (isset($h['Content-Length'], $h['Content-Type']) == false) { - return false; - } - - if(empty($h['Content-Length']) || empty($h['Content-Type']) ) { - return false; - } - - $len = is_array($h['Content-Length']) ? $h['Content-Length'][0] : $h['Content-Length']; - $mime = is_array($h['Content-Type']) ? $h['Content-Type'][0] : $h['Content-Type']; - } + if(!isset($h['content-length'], $h['content-type'])) { + return false; + } + $len = (int) $h['content-length']; + $mime = $h['content-type']; if($len < 10 || $len > ((config_cache('pixelfed.max_photo_size') * 1000))) { return false;