use Illuminate\Support\Arr;
trait MediaResource
{
public function initializeMediaResource()
{
$this->append('resource_url');
$this->append('resource_api');
}
public function getRouteKeyName()
{
return 'name';
}
public function getResourceName($type = null)
{
if ($type == null) {
return sprintf('%d/%s.%s', $this->user_id, $this->name, $this->extension);
}
return sprintf('%d/%s-%s.%s', $this->user_id, $this->name, $type, $this->extension);
}
public function getResourceUrlAttribute()
{
$url = route($this->resourceViewRoute, $this);
if (in_array($this->extension, $this->resourceExtensions ?? [])) {
$url .= '.' . $this->extension;
}
$domains = app('settings')->get('app.domains');
if (rand(0, count($domains)) > 0) {
$url = str_replace(url('/'), Arr::random($domains), $url);
}
return $url;
}
public function getResourceApiAttribute()
{
return url('api/' . $this->resourceApiName . '/' . $this->name);
}
}