Вход Регистрация
Файл: gapps/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php
Строк: 312
<?php

namespace IlluminateFilesystem;

use 
RuntimeException;
use 
InvalidArgumentException;
use 
IlluminateSupportCollection;
use 
LeagueFlysystemAdapterInterface;
use 
LeagueFlysystemFilesystemInterface;
use 
LeagueFlysystemAwsS3v3AwsS3Adapter;
use 
LeagueFlysystemFileNotFoundException;
use 
LeagueFlysystemAdapterLocal as LocalAdapter;
use 
IlluminateContractsFilesystemFilesystem as FilesystemContract;
use 
IlluminateContractsFilesystemCloud as CloudFilesystemContract;
use 
IlluminateContractsFilesystemFileNotFoundException as ContractFileNotFoundException;

class 
FilesystemAdapter implements FilesystemContractCloudFilesystemContract
{
    
/**
     * The Flysystem filesystem implementation.
     *
     * @var LeagueFlysystemFilesystemInterface
     */
    
protected $driver;

    
/**
     * Create a new filesystem adapter instance.
     *
     * @param  LeagueFlysystemFilesystemInterface  $driver
     * @return void
     */
    
public function __construct(FilesystemInterface $driver)
    {
        
$this->driver $driver;
    }

    
/**
     * Determine if a file exists.
     *
     * @param  string  $path
     * @return bool
     */
    
public function exists($path)
    {
        return 
$this->driver->has($path);
    }

    
/**
     * Get the contents of a file.
     *
     * @param  string  $path
     * @return string
     *
     * @throws IlluminateContractsFilesystemFileNotFoundException
     */
    
public function get($path)
    {
        try {
            return 
$this->driver->read($path);
        } catch (
FileNotFoundException $e) {
            throw new 
ContractFileNotFoundException($path$e->getCode(), $e);
        }
    }

    
/**
     * Write the contents of a file.
     *
     * @param  string  $path
     * @param  string|resource  $contents
     * @param  string  $visibility
     * @return bool
     */
    
public function put($path$contents$visibility null)
    {
        if (
$visibility $this->parseVisibility($visibility)) {
            
$config = ['visibility' => $visibility];
        } else {
            
$config = [];
        }

        if (
is_resource($contents)) {
            return 
$this->driver->putStream($path$contents$config);
        } else {
            return 
$this->driver->put($path$contents$config);
        }
    }

    
/**
     * Get the visibility for the given path.
     *
     * @param  string  $path
     * @return string
     */
    
public function getVisibility($path)
    {
        if (
$this->driver->getVisibility($path) == AdapterInterface::VISIBILITY_PUBLIC) {
            return 
FilesystemContract::VISIBILITY_PUBLIC;
        }

        return 
FilesystemContract::VISIBILITY_PRIVATE;
    }

    
/**
     * Set the visibility for the given path.
     *
     * @param  string  $path
     * @param  string  $visibility
     * @return void
     */
    
public function setVisibility($path$visibility)
    {
        return 
$this->driver->setVisibility($path$this->parseVisibility($visibility));
    }

    
/**
     * Prepend to a file.
     *
     * @param  string  $path
     * @param  string  $data
     * @return int
     */
    
public function prepend($path$data$separator PHP_EOL)
    {
        if (
$this->exists($path)) {
            return 
$this->put($path$data.$separator.$this->get($path));
        }

        return 
$this->put($path$data);
    }

    
/**
     * Append to a file.
     *
     * @param  string  $path
     * @param  string  $data
     * @return int
     */
    
public function append($path$data$separator PHP_EOL)
    {
        if (
$this->exists($path)) {
            return 
$this->put($path$this->get($path).$separator.$data);
        }

        return 
$this->put($path$data);
    }

    
/**
     * Delete the file at a given path.
     *
     * @param  string|array  $paths
     * @return bool
     */
    
public function delete($paths)
    {
        
$paths is_array($paths) ? $paths func_get_args();

        foreach (
$paths as $path) {
            try {
                
$this->driver->delete($path);
            } catch (
FileNotFoundException $e) {
                
//
            
}
        }

        return 
true;
    }

    
/**
     * Copy a file to a new location.
     *
     * @param  string  $from
     * @param  string  $to
     * @return bool
     */
    
public function copy($from$to)
    {
        return 
$this->driver->copy($from$to);
    }

    
/**
     * Move a file to a new location.
     *
     * @param  string  $from
     * @param  string  $to
     * @return bool
     */
    
public function move($from$to)
    {
        return 
$this->driver->rename($from$to);
    }

    
/**
     * Get the file size of a given file.
     *
     * @param  string  $path
     * @return int
     */
    
public function size($path)
    {
        return 
$this->driver->getSize($path);
    }

    
/**
     * Get the mime-type of a given file.
     *
     * @param  string  $path
     * @return string|false
     */
    
public function mimeType($path)
    {
        return 
$this->driver->getMimetype($path);
    }

    
/**
     * Get the file's last modification time.
     *
     * @param  string  $path
     * @return int
     */
    
public function lastModified($path)
    {
        return 
$this->driver->getTimestamp($path);
    }

    
/**
     * Get the URL for the file at the given path.
     *
     * @param  string  $path
     * @return string
     */
    
public function url($path)
    {
        
$adapter $this->driver->getAdapter();

        if (
$adapter instanceof AwsS3Adapter) {
            
$path $adapter->getPathPrefix().$path;

            return 
$adapter->getClient()->getObjectUrl($adapter->getBucket(), $path);
        } elseif (
$adapter instanceof LocalAdapter) {
            return 
'/storage/'.$path;
        } elseif (
method_exists($adapter'getUrl')) {
            return 
$adapter->getUrl($path);
        } else {
            throw new 
RuntimeException('This driver does not support retrieving URLs.');
        }
    }

    
/**
     * Get an array of all files in a directory.
     *
     * @param  string|null  $directory
     * @param  bool  $recursive
     * @return array
     */
    
public function files($directory null$recursive false)
    {
        
$contents $this->driver->listContents($directory$recursive);

        return 
$this->filterContentsByType($contents'file');
    }

    
/**
     * Get all of the files from the given directory (recursive).
     *
     * @param  string|null  $directory
     * @return array
     */
    
public function allFiles($directory null)
    {
        return 
$this->files($directorytrue);
    }

    
/**
     * Get all of the directories within a given directory.
     *
     * @param  string|null  $directory
     * @param  bool  $recursive
     * @return array
     */
    
public function directories($directory null$recursive false)
    {
        
$contents $this->driver->listContents($directory$recursive);

        return 
$this->filterContentsByType($contents'dir');
    }

    
/**
     * Get all (recursive) of the directories within a given directory.
     *
     * @param  string|null  $directory
     * @return array
     */
    
public function allDirectories($directory null)
    {
        return 
$this->directories($directorytrue);
    }

    
/**
     * Create a directory.
     *
     * @param  string  $path
     * @return bool
     */
    
public function makeDirectory($path)
    {
        return 
$this->driver->createDir($path);
    }

    
/**
     * Recursively delete a directory.
     *
     * @param  string  $directory
     * @return bool
     */
    
public function deleteDirectory($directory)
    {
        return 
$this->driver->deleteDir($directory);
    }

    
/**
     * Get the Flysystem driver.
     *
     * @return LeagueFlysystemFilesystemInterface
     */
    
public function getDriver()
    {
        return 
$this->driver;
    }

    
/**
     * Filter directory contents by type.
     *
     * @param  array  $contents
     * @param  string  $type
     * @return array
     */
    
protected function filterContentsByType($contents$type)
    {
        return 
Collection::make($contents)
            ->
where('type'$type)
            ->
pluck('path')
            ->
values()
            ->
all();
    }

    
/**
     * Parse the given visibility value.
     *
     * @param  string|null  $visibility
     * @return string|null
     *
     * @throws InvalidArgumentException
     */
    
protected function parseVisibility($visibility)
    {
        if (
is_null($visibility)) {
            return;
        }

        switch (
$visibility) {
            case 
FilesystemContract::VISIBILITY_PUBLIC:
                return 
AdapterInterface::VISIBILITY_PUBLIC;
            case 
FilesystemContract::VISIBILITY_PRIVATE:
                return 
AdapterInterface::VISIBILITY_PRIVATE;
        }

        throw new 
InvalidArgumentException('Unknown visibility: '.$visibility);
    }

    
/**
     * Pass dynamic methods call onto Flysystem.
     *
     * @param  string  $method
     * @param  array  $parameters
     * @return mixed
     *
     * @throws BadMethodCallException
     */
    
public function __call($method, array $parameters)
    {
        return 
call_user_func_array([$this->driver$method], $parameters);
    }
}
Онлайн: 0
Реклама