Media can now be uploaded and an S3 URL is returned

This commit is contained in:
Jonny Barnes 2017-03-10 11:27:28 +00:00
parent 63a8f49b64
commit c66dd66155
3 changed files with 31 additions and 8 deletions

View file

@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Media;
use App\Place; use App\Place;
use Ramsey\Uuid\Uuid; use Ramsey\Uuid\Uuid;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@ -258,13 +259,13 @@ class MicropubController extends Controller
if ($request->file('file')->isValid()) { if ($request->file('file')->isValid()) {
//save media //save media
try { try {
$filename = Uuid::uuid4() . $request->file('file')->extension(); $filename = Uuid::uuid4() . '.' . $request->file('file')->extension();
} catch (UnsatisfiedDependencyException $e) { } catch (UnsatisfiedDependencyException $e) {
return response()->json([ return response()->json([
'response' => 'error', 'response' => 'error',
'error' => 'internal_server_error', 'error' => 'internal_server_error',
'error_description' => 'A problem occured handling your request' 'error_description' => 'A problem occured handling your request'
], 500) ], 500);
} }
try { try {
$path = $request->file('file')->storeAs('media', $filename, 's3'); $path = $request->file('file')->storeAs('media', $filename, 's3');
@ -273,17 +274,38 @@ class MicropubController extends Controller
'response' => 'error', 'response' => 'error',
'error' => 'service_unavailable', 'error' => 'service_unavailable',
'error_description' => 'Unable to save media to S3' 'error_description' => 'Unable to save media to S3'
], 503) ], 503);
} }
$media = new Media(); $media = new Media();
$media->token = $token; $media->token = $token;
$media->path = $path; $media->path = $path;
$media->save(); $media->save();
return $media->url; return response()->json([
'response' => 'created',
'location' => $media->url,
], 201)->header('Location', $media->url);
} }
//return URL for media return response()->json([
'response' => 'error',
'error' => 'invalid_request',
'error_description' => 'The uploaded file failed validation',
], 400);
}
return response()->json([
'response' => 'error',
'error' => 'insufficient_scope',
'error_description' => 'The provided token has insufficient scopes',
], 401);
}
return response()->json([
'response' => 'error',
'error' => 'unauthorized',
'error_description' => 'No token provided with request',
], 401);
} }
return response()->json([ return response()->json([

View file

@ -12,9 +12,10 @@ class VerifyCsrfToken extends BaseVerifier
* @var array * @var array
*/ */
protected $except = [ protected $except = [
'api/token', 'api/media',
'api/post', 'api/post',
'webmention', 'api/token',
'places/new', 'places/new',
'webmention',
]; ];
} }

View file

@ -28,6 +28,6 @@ class Media extends Model
*/ */
public function getUrlAttribute() public function getUrlAttribute()
{ {
return config('filesystems.s3.url') . '/' . $this->path; return config('filesystems.disks.s3.url') . '/' . $this->path;
} }
} }