weboptic/flysystem-bunnycdn

Flysystem adapter for BunnyCDN

v3.0.2 2022-03-15 14:54 UTC

README

Bunny CDN Logo

Flysystem Adapter for BunnyCDN Storage

Build Status - Flysystem v1 Build Status - Flysystem v1 Build Status - Flysystem v1
Codecov Packagist Version Minimum PHP Version: 7.4 Licence: MIT Downloads

⚠️ Note – Breaking Change

⚠️ (21/Feb/22) As the upstream BunnyCDNStorage client has gone sometime without an update, it's become unsustainable to continue to use. For all updates, simply change the BunnyCDNStorage to BunnyCDNClient and re-import. ⚠️

Installation

To install flysystem-bunnycdn, require the package with no version constraint. This should match the flysystem-bunnycdn version with your version of FlySystem (v1, v2, v3 etc).

composer require platformcommunity/flysystem-bunnycdn "*"

Usage

use BunnyCDN\Storage\BunnyCDNClient;
use League\Flysystem\Filesystem;
use PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNAdapter;
use PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNRegion;

$adapter = new BunnyCDNAdapter(
    new BunnyCDNClient(
        'storage-zone', 
        'api-key', 
        BunnyCDNRegion::FALKENSTEIN
    )
);

$filesystem = new Filesystem($adapter);

Usage with Pull Zones

To have BunnyCDN adapter publish to a public CDN location, you have to a "Pull Zone" connected to your BunnyCDN Storage Zone. Add the full URL prefix of your Pull Zone (including http:///https://) to the BunnyCDNAdapter parameter like shown below.

use BunnyCDN\Storage\BunnyCDNClient;
use League\Flysystem\Filesystem;
use PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNAdapter;
use PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNRegion;

$adapter = new BunnyCDNAdapter(
    new BunnyCDNClient(
        'storage-zone',
        'api-key',
        BunnyCDNRegion::FALKENSTEIN
    ),
    'https://testing.b-cdn.net/' # Pull Zone URL
);
$filesystem = new Filesystem($adapter);

Note: You can also use your own domain name if it's configured in the pull zone.

Once you add your pull zone, you can use the ->getUrl($path), or in Laravel, the ->url($path) command to get the fully qualified public URL of your BunnyCDN assets.

Usage in Laravel 9

For a guide on how to use flysystem-bunnycdn in Laravel 9, follow the guide here:
https://blog.sinn.io/bunny-net-php-flysystem-v3/#usage-in-laravel-9

Regions

For a full region list, please visit the BunnyCDN API documentation page.

flysystem-bunnycdn also comes with constants for each region located within PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNRegion.

List of Regions

BunnyCDNRegion::FALKENSTEIN = 'de';
BunnyCDNRegion::NEW_YORK = 'ny';
BunnyCDNRegion::LOS_ANGELAS = 'la';
BunnyCDNRegion::SINGAPORE = 'sg';
BunnyCDNRegion::SYDNEY = 'syd';
BuunyCDNRegion::UNITED_KINGDOM = 'uk';

Contributing

Pull requests welcome. Please feel free to lodge any issues as discussion points.

Licence

The Flysystem adapter for Bunny.net is licensed under MIT.