/home/bdqbpbxa/dev-subdomains/api-uniferx.goodface.com.ua/vendor/laravel/nova/src/Asset.php
<?php
namespace Laravel\Nova;
use DateTime;
use Illuminate\Contracts\Support\Responsable;
use Illuminate\Support\Str;
/**
* @method static static make(string|self $name, string|null $path, bool|null $remote = null)
*/
abstract class Asset implements Responsable
{
use Makeable;
/**
* The Assert name.
*
* @var string
*/
protected $name;
/**
* The Asset path.
*
* @var string|null
*/
protected $path;
/**
* Determine Asset is remote.
*
* @var bool
*/
protected $remote;
/**
* Construct a new Asset instance.
*
* @param string|self $name
* @param string|null $path
* @param bool|null $remote
*/
public function __construct($name, $path, $remote = null)
{
if ($name instanceof self) {
$this->name = $name->name();
$this->path = $name->path();
$this->remote = $name->isRemote();
return;
}
if (is_null($remote)) {
$remote = Str::startsWith($path, ['http://', 'https://', '://']);
}
$this->name = $name;
$this->path = $path;
$this->remote = $remote;
}
/**
* Make a remote URL.
*
* @param string $path
* @return static
*/
public static function remote($path)
{
return new static(md5($path), $path, true);
}
/**
* Get asset name.
*
* @return string
*/
public function name()
{
return $this->name;
}
/**
* Get asset path.
*
* @return string|null
*/
public function path()
{
return $this->path;
}
/**
* Determine if URL is remote.
*
* @return bool
*/
public function isRemote()
{
return $this->remote;
}
/**
* Create an HTTP response that represents the object.
*
* @param \Illuminate\Http\Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function toResponse($request)
{
abort_if($this->isRemote() || is_null($this->path), 404);
return response(
file_get_contents($this->path), 200, $this->toResponseHeaders(),
)->setLastModified(DateTime::createFromFormat('U', (string) filemtime($this->path)));
}
/**
* Get the Asset URL.
*
* @return string
*/
abstract public function url();
/**
* Get response headers.
*
* @return array<string, string>
*/
abstract public function toResponseHeaders();
}