<?php namespace App\Transformer\Api; use App\Media; use League\Fractal; use Storage; 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(), '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' ]; if(config('media.hls.enabled') && $media->hls_transcoded_at != null && $media->hls_path) { $res['hls_manifest'] = url(Storage::url($media->hls_path)); } if($media->width && $media->height) { $res['meta'] = [ 'focus' => [ 'x' => 0, 'y' => 0 ], 'original' => [ 'width' => $media->width, 'height' => $media->height, 'size' => "{$media->width}x{$media->height}", 'aspect' => $media->width / $media->height ] ]; } return $res; } }