Braunson / laravel-rackspace-cdn by BraunsonYager

Updated version of ThomasWelton's because that repo seems to be inactive
38
1
3
Package Data
Maintainer Username: BraunsonYager
Maintainer Contact: braunson@geekybeaver.ca (Braunson Yager)
Package Create Date: 2017-03-01
Package Last Update: 2017-10-23
Language: PHP
License: Unknown
Last Refreshed: 2024-12-19 03:05:54
Package Statistics
Total Downloads: 38
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 1
Total Watchers: 3
Total Forks: 1
Total Open Issues: 0

README for Laravel 4.x is here

Installation

Run command in your terminal to include this package as a dependency:

composer require braunson/laravel-rackspace-opencloud

Register the OpenCloud service provider and alias the OpenCloud, Str (removed in Laravel 5.0+) facades by adding it to the providers and aliases arrays in the config/app.php file.

For Laravel 5.5 and later don't need (auto discovery).

For Laravel 5.2 - 5.4:

'providers' => [
    Braunson\LaravelRackspaceCdn\LaravelRackspaceCdnServiceProvider::class
];
'aliases' => [
    'OpenCloud' => Braunson\LaravelRackspaceCdn\Facades\OpenCloud::class,
    'Str' => Illuminate\Support\Str::class,
]

For Laravel 5.1 and earlier:

'providers' => [
    'Braunson\LaravelRackspaceCdn\LaravelRackspaceCdnServiceProvider'
]
'aliases' => [
    'OpenCloud' => 'Braunson\LaravelRackspaceCdn\Facades\OpenCloud',
    'Str' => 'Illuminate\Support\Str',
]

Configuration

Copy the config files into your project by running:

php artisan vendor:publish --provider="Braunson\LaravelRackspaceCdn\LaravelRackspaceCdnServiceProvider"

Edit the config file to include your username, api key, region and url (internal or public).

Usage

Artisan Commands

Upload files via the command line.

Synchronize a whole directory. Copies all files to /public/assets:

php artisan cdn:sync public/assets

Copies all files to /assets trimming 'public' from the path:

php artisan cdn:sync public/assets --trim=public

You can configure your package.json to do this as NPM task:

"scripts": {
    "cdn:sync": "php artisan cdn:sync public/assets --trim=public"
},

The sync command will save a file adjacent to the synchronized directory. It contains the http and https urls for your container. Along with a md5 hash of the directory. In this way when a file changes inside a directory and is reuploaded you get a new cache busted URL.

If you are using the URL helper then it will return a CDN url for a file, if it finds a *.cdn.json file adjacent to one of it's parent directories.

URL::asset('assets/image.jpg');

You should be able to run php artisan cdn:sync public/assets --trim=public before or during a deployment and once complete all files being called by URL::asset() will return a CDN resource.

Upload to CDN

OpenCloud::upload($container, $file, $name = null)
  • $container - (string) Name of the container to upload into;
  • $file - (string / UploadedFile) Path to file, or instance of Symfony\Component\HttpFoundation\File\UploadedFile as returned by Request::file();
  • $name - (string) Optional file name to be used when saving the file to the CDN.

Example:

Route::post('/upload', function()
{ 
    // '\Input' alias was removed from the default aliases in Laravel 5.2+
    if(Request::hasFile('image')){
        $file = OpenCloud::upload('my-container', Request::file('image'));
    }

    $cdnUrl = $file->PublicURL();
    // Do something with $cdnUrlth

    return Redirect::to('/upload');
});

Delete from CDN

OpenCloud::delete($container, $file)