taffovelikoff / imagekit-adapter
Flysystem adapter for ImageKit.
Installs: 6 560
Dependents: 0
Suggesters: 0
Security: 0
Stars: 11
Watchers: 3
Forks: 2
Open Issues: 2
Requires
- php: ^8.0
- imagekit/imagekit: ^2.0
- league/flysystem: ^2.0.4 || ^3.0.0
Requires (Dev)
- phpspec/prophecy-phpunit: ^2.0.1
- phpunit/phpunit: ^9.5.4
This package is auto-updated.
Last update: 2024-11-23 18:43:53 UTC
README
A Flysystem adapter for ImageKit. This package used to be Laravel only, but it can now be used in any php project! If you are using an older version of this package in a Laravel app, please read the "Usage in Laravel" section.
Contents
Installation
You can install the package via composer:
composer require taffovelikoff/imagekit-adapter
Setup
First you will need to sing up for an ImageKit account. Then you can go to https://imagekit.io/dashboard#developers to get your public key, private key and url endpoint.
Usage
use ImageKit\ImageKit; use League\Flysystem\Filesystem; use TaffoVelikoff\ImageKitAdapter\ImageKitAdapter; // Client $client = new ImageKit ( 'your_public_key', 'your_private_key', 'your_endpoint_url' // Should look something like this https://ik.imagekit.io/qvkc... ); // Adapter $adapter = new ImagekitAdapter($client); // Filesystem $fsys = new Filesystem($adapter); // Check if file exists example $file = $fsys->fileExists('default-image.jpg');
If you need to purge the cache after a file was updated/deleted you can add "purge_cache" to the $options array of the adapter.
$adapter = new ImagekitAdapter($client, $options = [ 'purge_cache_update' => [ 'enabled' => true, 'endpoint_url' => 'your_endpoint_url' ] ]);
This will create a purge cache request. You can read more here: https://docs.imagekit.io/features/cache-purging
Usage in Laravel
You can create a new driver by extending the Storage in the boot()
method of AppServiceProvider
.
public function boot() { Storage::extend('imagekit', function ($app, $config) { $adapter = new ImagekitAdapter( new ImageKit( $config['public_key'], $config['private_key'], $config['endpoint_url'] ), $options = [ // Optional 'purge_cache_update' => [ 'enabled' => true, 'endpoint_url' => 'your_endpoint_url' ] ] ); return new FilesystemAdapter( new Filesystem($adapter, $config), $adapter, $config ); }); }
Then create a new disk in config/filesystems.php
:
'imagekit' => [ 'driver' => 'imagekit', 'public_key' => env('IMAGEKIT_PUBLIC_KEY'), 'private_key' => env('IMAGEKIT_PRIVATE_KEY'), 'endpoint_url' => env('IMAGEKIT_ENDPOINT_URL') ],
Don't forget to add your keys in .env
:
IMAGEKIT_PUBLIC_KEY = your-public-key IMAGEKIT_PRIVATE_KEY = your-private-key IMAGEKIT_ENDPOINT_URL = your-endpint-url
And now you can use Laravel's Storage facade:
Storage::disk('imagekit')->put('test.txt', 'This is a test file.'); return response(Storage::disk('imagekit')->get('test.txt'));
If you already use an older version of taffovelikoff/imagekit-adapter
in your Laravel app you most likely published the configuration file config/imagekit.php
. It was possible to set a few options there:
return [ 'purge_cache_update' => true, 'extend_storage' => true, ];
The extend_storage => true
setting automatically expanded the Storage facade and created 'imagekit' driver. If you were using that option you need to manually add the new driver in AppServiceProvider
like the example above.
If the purge_cache_update
setting was set to true
a cache purge request was made when deleting/updating a file. In order tะพ keep this functionality all you need to do now is add purge_cache_update
parameter in the options of the ImageKitAdapter when extending the storage.
Contributing
Pull requests are welcome. Please feel free to lodge any issues or feedback as discussion points.