51 lines
1.3 KiB
PHP
51 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Resources\Api;
|
|
|
|
use Illuminate\Http\Resources\Json\JsonResource;
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
class MediaPictureResource extends JsonResource
|
|
{
|
|
/** @var array */
|
|
private static $skeleton = [
|
|
'base64_bin' => '',
|
|
'uid' => '',
|
|
'extension' => ''
|
|
];
|
|
|
|
/**
|
|
* Transform the resource into an array.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return array
|
|
* + base64_bin string
|
|
* + uid string
|
|
* + extension string
|
|
*/
|
|
//phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass, Squiz.Commenting.FunctionComment.Missing
|
|
public function toArray($request)
|
|
{
|
|
/** @var \Illuminate\Filesystem\FilesystemAdapter */
|
|
$storage = Storage::disk('media');
|
|
|
|
return array_intersect_key(
|
|
array_merge([
|
|
'base64_bin' => \base64_encode((string)$storage->get($this->relative_path)),
|
|
'uid' => $this->uid,
|
|
'extension' => $this->extension->value
|
|
]),
|
|
$this->getSkeleton()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Returns the resource skeletton
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getSkeleton(): array
|
|
{
|
|
return self::$skeleton;
|
|
}
|
|
}
|