Skip to content

Latest commit

 

History

History
executable file
·
414 lines (243 loc) · 9.31 KB

README.md

File metadata and controls

executable file
·
414 lines (243 loc) · 9.31 KB

remotestorage

Wrapper for slightly easier use of league/flysystem with AWS S3 by our Laravel application.

Installation, Configuration, Use

Installation

Run $ composer vendor:publish to copy the package's configuration file "/config/remotestorage.php" to your application's "/config" directory.

(assuming you're using Composer, Laravel, and AWS S3)

Configuration

Define the following environmental variables with appropriate values:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_DEFAULT_REGION
  • AWS_BUCKET

Add the service provider (\Railroad\RemoteStorage\Providers\RemoteStorageServiceProvider) to the 'providers array in you application's /config/app.php:

'providers' => [
    # ...
    \Railroad\RemoteStorage\Providers\RemoteStorageServiceProvider::class,
]

Run $ php artisan vendor:publish to copy the config file and create a remotestorage.php file in your application's /config directory. This will take the values you supplied in the .env file and pass them needed.

Use

Inject the Railroad\RemoteStorage\Services\RemoteStorageService class where needed

/** @var Railroad\RemoteStorage\Services\RemoteStorageService $remoteStorageService */
protected $remoteStorageService;

public function __constructor(Railroad\RemoteStorage\Services\RemoteStorageService $remoteStorageService){
    $this->remoteStorageService = $remoteStorageService;
}

Include namespace at top of file:

use Railroad\RemoteStorage\Services;

... to save yourself having to specify the namespace everywhere:

/** @var RemoteStorageService $remoteStorageService */
protected $remoteStorageService;

public function __constructor(RemoteStorageService $remoteStorageService){
    $this->remoteStorageService = $remoteStorageService;
}

Responses

outcome return data type return data value
succeeded boolean true
failed boolean false

read

Usage Example(s)

$file = $this->remoteStorageService->read($filenameRelative);

Parameters

# name required type description
1 filenameRelative yes string path to file name from bucket root

Responses

outcome return data type return data value (example) notes about return data
failed boolean false
succeeded string "b"""Ø à\x00\x10JFIF\x00\x01\x01\x01\x00\x00\x00\x00 ■\x00;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 70\n █\x00C\x00\n\x07\x07\x08\x07\x06\n\x08\x08\x08\v\n\n" Raw image data as string

exists

Usage Example(s)

$exists = $this->remoteStorageService->exists('foo/bar.jpg');
/** 
 * @param Request $request
 * @return JsonResponse
 */
public function uploadThumbnailIfDoesNotAlreadyExist(Request $request)
{
    $target = 'foo/' . $request->get('target');    
    if(!$this->remoteStorageService->exists('foo/')){
        $upload = $this->remoteStorageService->put($target, $request->file('file'));
        throw_if((!$upload), new JsonResponse('Upload product thumbnail failed', 400));
    }
    return new JsonResponse(['exists' => true]);
}

Parameters

# name required type description
1 filenameRelative yes string path to file name from bucket root

Responses

outcome return data type return data value
exists boolean true
does not exist boolean false

delete

Usage Example(s)

$this->remoteStorageService->delete('foo/bar.jpg');
public function deleteThumbnail(Request $request)
{
    $target = $request->get('target');    
    $delete = $this->remoteStorageService->delete('foo/' . $target);
    throw_if((!$delete), new JsonResponse('product thumbnail deletion failed', 400));
    return new JsonResponse(['deleted' => true]);
}

Parameters

# name required type description
1 filenameRelative yes string path to file name from bucket root

Responses

outcome return data type return data value
exists boolean true
does not exist boolean false

create_dir

[TODO]

rename

[TODO]

copy

[TODO]

get_mimetype

[TODO]

get_timestamp

[TODO]

get_size

[TODO]

delete_dir

[TODO]