diff --git a/app/Http/Controllers/MicropubController.php b/app/Http/Controllers/MicropubController.php index b2219267..e414da3d 100644 --- a/app/Http/Controllers/MicropubController.php +++ b/app/Http/Controllers/MicropubController.php @@ -264,7 +264,7 @@ class MicropubController extends Controller if (array_search('post', $scopes) !== false) { //check media valid if ($request->hasFile('file') && $request->file('file')->isValid()) { - //save media + $type = $this->getFileTypeFromMimeType($request->file('file')->getMimeType()); try { $filename = Uuid::uuid4() . '.' . $request->file('file')->extension(); } catch (UnsatisfiedDependencyException $e) { @@ -286,6 +286,7 @@ class MicropubController extends Controller $media = new Media(); $media->token = $token; $media->path = $path; + $media->type = $type; $media->save(); return response()->json([ @@ -321,4 +322,48 @@ class MicropubController extends Controller 'error_description' => 'There was no token provided with the request', ], 400); } + + /** + * Get the file type from the mimetype of the uploaded file. + * + * @param string The mimetype + * @return string The type + */ + private function getFileTypeFromMimeType($mimetype) + { + //try known images + $imageMimeTypes = [ + 'image/gif', + 'image/jpeg', + 'image/png', + 'image/svg+xml', + 'image/tiff', + 'image/webp', + ]; + if (in_array($mimetype, $imageMimeTypes)) { + return 'image'; + } + //try known video + $videoMimeTypes = [ + 'video/mp4', + 'video/mpeg', + 'video/quicktime', + 'video/webm', + ]; + if (in_array($mimetype, $videoMimeTypes)) { + return 'video'; + } + //try known audio types + $audioMimeTypes = [ + 'audio/midi', + 'audio/mpeg', + 'audio/ogg', + 'audio/x-m4a', + ]; + if (in_array($mimetype, $audioMimeTypes)) { + return 'audio'; + } + + return 'download'; + } } diff --git a/database/migrations/2017_03_09_155908_create_media_endpoint_table.php b/database/migrations/2017_03_09_155908_create_media_endpoint_table.php index 3604f99b..39de17f7 100644 --- a/database/migrations/2017_03_09_155908_create_media_endpoint_table.php +++ b/database/migrations/2017_03_09_155908_create_media_endpoint_table.php @@ -17,6 +17,7 @@ class CreateMediaEndpointTable extends Migration $table->increments('id'); $table->text('token')->nullable(); $table->string('path'); + $table->string('type'); $table->unsignedInteger('note_id')->nullable(); $table->timestamps(); diff --git a/resources/views/templates/note.blade.php b/resources/views/templates/note.blade.php index 8e4335cd..5e9d3cb3 100644 --- a/resources/views/templates/note.blade.php +++ b/resources/views/templates/note.blade.php @@ -9,7 +9,10 @@