platformcommunity / flysystem-bunnycdn
Flysystem adapter for BunnyCDN
Installs: 158 896
Dependents: 4
Suggesters: 0
Security: 0
Stars: 70
Watchers: 4
Forks: 22
Open Issues: 8
Requires
- ext-json: *
- guzzlehttp/guzzle: ^7.4
- league/flysystem: ^3.16
- league/mime-type-detection: ^1.11
Requires (Dev)
- fzaninotto/faker: ^1.5
- laravel/pint: ^0.2.3
- league/flysystem-adapter-test-utilities: ^3
- league/flysystem-memory: ^3.0
- league/flysystem-path-prefixing: ^3.3
- phpunit/phpunit: @stable
- v3.x-dev
- dev-master / 3.x-dev
- v3.3.5
- v3.3.4
- v3.3.3
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.4
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.4
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.1
- v3.0.0
- v3.0.0-alpha-1
- v2.x-dev
- v2.4.0
- v2.3.1
- v2.3.0
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.0
- v1.x-dev
- v1.3.1
- v1.3.0
- v1.2.1
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.0
- v0.3.5
- v0.3.4
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.1
- v0.1
- dev-fix/phpunit-10
- dev-sifex-patch-1
- dev-feature/flytests-to-live
- dev-feature/regions-update
This package is auto-updated.
Last update: 2024-11-07 00:55:34 UTC
README
Flysystem Adapter for BunnyCDN Storage
Installation
To install flysystem-bunnycdn
, require the package with no version constraint. This should match the flysystem-bunnycdn
version with your version of FlySystem (v2, v3 etc).
composer require platformcommunity/flysystem-bunnycdn "*"
Usage
use League\Flysystem\Filesystem; use PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNAdapter; use PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNClient; 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.
$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
To add BunnyCDN adapter as a custom storage adapter in Laravel 9, install using the v3
composer installer.
composer require platformcommunity/flysystem-bunnycdn "^3.0"
Next, install the adapter to your AppServiceProvider
to give Laravel's FileSystem knowledge of the BunnyCDN adapter.
/** * Bootstrap any application services. * * @return void */ public function boot() { Storage::extend('bunnycdn', function ($app, $config) { $adapter = new BunnyCDNAdapter( new BunnyCDNClient( $config['storage_zone'], $config['api_key'], $config['region'] ), $config['pull_zone'] ); return new FilesystemAdapter( new Filesystem($adapter, $config), $adapter, $config ); }); }
Finally, add the bunnycdn
driver into your config/filesystems.php
configuration file.
... 'bunnycdn' => [ 'driver' => 'bunnycdn', 'storage_zone' => env('BUNNYCDN_STORAGE_ZONE'), 'pull_zone' => env('BUNNYCDN_PULL_ZONE'), 'api_key' => env('BUNNYCDN_API_KEY'), 'region' => env('BUNNYCDN_REGION', \PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNRegion::DEFAULT) ], ...
Lastly, populate your BUNNYCDN_STORAGE_ZONE
, BUNNYCDN_API_KEY
BUNNYCDN_REGION
variables in your .env
file.
BUNNYCDN_STORAGE_ZONE=testing_storage_zone BUNNYCDN_PULL_ZONE=https://testing.b-cdn.net BUNNYCDN_API_KEY="api-key" # BUNNYCDN_REGION=uk
After that, you can use the bunnycdn
disk in Laravel 9.
Storage::disk('bunnycdn')->put('index.html', '<html>Hello World</html>'); return response(Storage::disk('bunnycdn')->get('index.html'));
Note: You may have to run php artisan config:clear
in order for your configuration to be refreshed if your app is running with a config cache driver / production mode.
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
# Europe BunnyCDNRegion::FALKENSTEIN = 'de'; BunnyCDNRegion::STOCKHOLM = 'se'; # United Kingdom BunnyCDNRegion::UNITED_KINGDOM = 'uk'; # USA BunnyCDNRegion::NEW_YORK = 'ny'; BunnyCDNRegion::LOS_ANGELAS = 'la'; # SEA BunnyCDNRegion::SINGAPORE = 'sg'; # Oceania BunnyCDNRegion::SYDNEY = 'syd'; # Africa BunnyCDNRegion::JOHANNESBURG = 'jh'; # South America BunnyCDNRegion::BRAZIL = 'br';
Contributing
Pull requests welcome. Please feel free to lodge any issues as discussion points.
Development
Most of the understanding of how the Flysystem Adapter for BunnyCDN works comes from tests/
. If you want to complete tests against a live BunnyCDN endpoint, copy the tests/ClientDI_Example.php
to tests/ClientDI.php
and insert your credentials into there. You can then run the whole suite by running vendor/bin/phpunit
, or against a specific file by running vendor/bin/phpunit --bootstrap tests/ClientDI.php tests/ClientTest.php
.
Licence
The Flysystem adapter for Bunny.net is licensed under MIT.