MediaTransformer.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Transformer\Api;
  3. use App\Media;
  4. use League\Fractal;
  5. class MediaTransformer extends Fractal\TransformerAbstract
  6. {
  7. public function transform(Media $media)
  8. {
  9. $res = [
  10. 'id' => (string) $media->id,
  11. 'type' => $media->activityVerb(),
  12. 'url' => $media->url(),
  13. 'remote_url' => null,
  14. 'preview_url' => $media->thumbnailUrl(),
  15. 'optimized_url' => $media->optimized_url,
  16. 'text_url' => null,
  17. 'meta' => null,
  18. 'description' => $media->caption,
  19. 'license' => $media->getLicense(),
  20. 'is_nsfw' => $media->is_nsfw,
  21. 'orientation' => $media->orientation,
  22. 'filter_name' => $media->filter_name,
  23. 'filter_class' => $media->version == 1 ? $media->filter_class : null,
  24. 'mime' => $media->mime,
  25. 'blurhash' => $media->blurhash ?? 'U4Rfzst8?bt7ogayj[j[~pfQ9Goe%Mj[WBay'
  26. ];
  27. if($media->width && $media->height) {
  28. $res['meta'] = [
  29. 'focus' => [
  30. 'x' => 0,
  31. 'y' => 0
  32. ],
  33. 'original' => [
  34. 'width' => $media->width,
  35. 'height' => $media->height,
  36. 'size' => "{$media->width}x{$media->height}",
  37. 'aspect' => $media->width / $media->height
  38. ]
  39. ];
  40. }
  41. return $res;
  42. }
  43. }