Update StoryController, orientate story media and strip exif

This commit is contained in:
Daniel Supernault 2020-01-22 16:01:01 -07:00
parent 1662b37cda
commit 07a13fcfed
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7

View file

@ -10,6 +10,7 @@ use App\Story;
use App\StoryView; use App\StoryView;
use App\Services\StoryService; use App\Services\StoryService;
use Cache, Storage; use Cache, Storage;
use Image as Intervention;
use App\Services\FollowerService; use App\Services\FollowerService;
@ -41,23 +42,8 @@ class StoryController extends Controller
abort(400, 'You have reached your limit for new Stories today.'); abort(400, 'You have reached your limit for new Stories today.');
} }
$monthHash = substr(hash('sha1', date('Y').date('m')), 0, 12);
$sid = Str::uuid();
$rid = Str::random(6).'.'.Str::random(9);
$photo = $request->file('file'); $photo = $request->file('file');
$path = $this->storePhoto($photo);
$mimes = explode(',', config('pixelfed.media_types'));
if(in_array($photo->getMimeType(), [
'image/jpeg',
'image/png'
]) == false) {
abort(400, 'Invalid media type');
return;
}
$storagePath = "public/_esm.t1/{$monthHash}/{$sid}/{$rid}";
$path = $photo->store($storagePath);
$story = new Story(); $story = new Story();
$story->duration = 3; $story->duration = 3;
@ -77,6 +63,30 @@ class StoryController extends Controller
]; ];
} }
protected function storePhoto($photo)
{
$monthHash = substr(hash('sha1', date('Y').date('m')), 0, 12);
$sid = Str::uuid();
$rid = Str::random(6).'.'.Str::random(9);
$mimes = explode(',', config('pixelfed.media_types'));
if(in_array($photo->getMimeType(), [
'image/jpeg',
'image/png'
]) == false) {
abort(400, 'Invalid media type');
return;
}
$storagePath = "public/_esm.t1/{$monthHash}/{$sid}/{$rid}";
$path = $photo->store($storagePath);
$fpath = storage_path('app/' . $path);
$img = Intervention::make($fpath);
$img->orientate();
$img->save($fpath, config('pixelfed.image_quality'));
$img->destroy();
return $path;
}
public function apiV1Delete(Request $request, $id) public function apiV1Delete(Request $request, $id)
{ {
abort_if(!config('instance.stories.enabled') || !$request->user(), 404); abort_if(!config('instance.stories.enabled') || !$request->user(), 404);
@ -107,9 +117,9 @@ class StoryController extends Controller
$groupBy = config('database.default') == 'pgsql' ? 'id' : 'profile_id'; $groupBy = config('database.default') == 'pgsql' ? 'id' : 'profile_id';
$stories = Story::with('profile') $stories = Story::with('profile')
->groupBy($groupBy)
->whereIn('profile_id', $following) ->whereIn('profile_id', $following)
->where('expires_at', '>', now()) ->where('expires_at', '>', now())
->groupBy($groupBy)
->orderByDesc('expires_at') ->orderByDesc('expires_at')
->take(9) ->take(9)
->get() ->get()