Browse Source

Update MediaTransformer, return proper image type

Daniel Supernault 2 tháng trước cách đây
mục cha
commit
0dff48adb3
2 tập tin đã thay đổi với 47 bổ sung21 xóa
  1. 24 0
      app/Media.php
  2. 23 21
      app/Transformer/Api/MediaTransformer.php

+ 24 - 0
app/Media.php

@@ -111,6 +111,30 @@ class Media extends Model
         return $verb;
     }
 
+    public function mediaType()
+    {
+        $verb = 'Document';
+        switch ($this->mimeType()) {
+            case 'audio':
+                $verb = 'Audio';
+                break;
+
+            case 'image':
+                $verb = 'Image';
+                break;
+
+            case 'video':
+                $verb = 'Video';
+                break;
+
+            default:
+                $verb = 'Image';
+                break;
+        }
+
+        return $verb;
+    }
+
     public function getMetadata()
     {
         return json_decode($this->metadata, true, 3);

+ 23 - 21
app/Transformer/Api/MediaTransformer.php

@@ -11,40 +11,42 @@ class MediaTransformer extends Fractal\TransformerAbstract
     public function transform(Media $media)
     {
         $res = [
-            'id'            => (string) $media->id,
-            'type'          => strtolower($media->activityVerb()),
-            'url'           => $media->url(),
-            'remote_url'    => null,
-            'preview_url'   => $media->thumbnailUrl(),
+            'id' => (string) $media->id,
+            'type' => strtolower($media->mediaType()),
+            'url' => $media->url(),
+            'remote_url' => null,
+            'preview_url' => $media->thumbnailUrl(),
             'optimized_url' => $media->optimized_url,
-            'text_url'      => null,
-            'meta'          => null,
-            'description'   => $media->caption,
-            'license'       => $media->getLicense(),
-            'is_nsfw'       => $media->is_nsfw,
-            'orientation'   => $media->orientation,
-            'filter_name'   => $media->filter_name,
-            'filter_class'  => $media->version == 1 ? $media->filter_class : null,
-            'mime'          => $media->mime,
-            'blurhash'      => $media->blurhash ?? 'U4Rfzst8?bt7ogayj[j[~pfQ9Goe%Mj[WBay'
+            'text_url' => null,
+            'meta' => null,
+            'description' => $media->caption,
+            'license' => $media->getLicense(),
+            'is_nsfw' => $media->is_nsfw,
+            'orientation' => $media->orientation,
+            'filter_name' => $media->filter_name,
+            'filter_class' => $media->version == 1 ? $media->filter_class : null,
+            'mime' => $media->mime,
+            'blurhash' => $media->blurhash ?? 'U4Rfzst8?bt7ogayj[j[~pfQ9Goe%Mj[WBay',
         ];
 
-        if(config('media.hls.enabled') && $media->hls_transcoded_at != null && $media->hls_path) {
-            $res['hls_manifest'] = url(Storage::url($media->hls_path));
+        if ((bool) config('media.hls.enabled')) {
+            if ($media->hls_transcoded_at != null && $media->hls_path) {
+                $res['hls_manifest'] = url(Storage::url($media->hls_path));
+            }
         }
 
-        if($media->width && $media->height) {
+        if ($media->width && $media->height) {
             $res['meta'] = [
                 'focus' => [
                     'x' => 0,
-                    'y' => 0
+                    'y' => 0,
                 ],
                 'original' => [
                     'width' => $media->width,
                     'height' => $media->height,
                     'size' => "{$media->width}x{$media->height}",
-                    'aspect' => $media->width / $media->height
-                ]
+                    'aspect' => $media->width / $media->height,
+                ],
             ];
         }