platformcommunity/flysystem-bunnycdn

BunnyCDN 的 Flysystem 适配器


README

Bunny CDN Logo

BunnyCDN 存储的 Flysystem 适配器

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

安装

要安装 flysystem-bunnycdn,不需要指定版本约束。这应该与您的 FlySystem 版本(v2、v3 等)相匹配。

composer require platformcommunity/flysystem-bunnycdn "*"

使用方法

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);

使用拉取区域

要将 BunnyCDN 适配器发布到公共 CDN 位置,您需要将一个“拉取区域”连接到您的 BunnyCDN 存储区域。将您的拉取区域的全局 URL 前缀(包括 http:///https://)添加到以下所示的 BunnyCDNAdapter 参数中。

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

注意:如果您的拉取区域已配置自己的域名,您也可以使用它。

一旦您添加了拉取区域,您就可以使用 ->getUrl($path) 或在 Laravel 中使用 ->url($path) 命令来获取您的 BunnyCDN 资产的完全合格公共 URL。

Laravel 9 中的使用

要将 BunnyCDN 适配器作为 Laravel 9 中的自定义存储适配器添加,请使用 v3 composer 安装程序安装。

composer require platformcommunity/flysystem-bunnycdn "^3.0"

接下来,将适配器安装到您的 AppServiceProvider 中,以便 Laravel 的 FileSystem 知道 BunnyCDN 适配器。

    /**
     * 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']
                ),
                'http://testing.b-cdn.net' # Optional
            );

            return new FilesystemAdapter(
                new Filesystem($adapter, $config),
                $adapter,
                $config
            );
        });
    }

最后,将 bunnycdn 驱动器添加到您的 config/filesystems.php 配置文件中。

        ... 
        
        'bunnycdn' => [
            'driver' => 'bunnycdn',
            'storage_zone' => env('BUNNYCDN_STORAGE_ZONE'),
            'api_key' => env('BUNNYCDN_API_KEY'),
            'region' => env('BUNNYCDN_REGION', \PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNRegion::DEFAULT)
        ],
        
        ...

最后,在您的 .env 文件中设置 BUNNYCDN_STORAGE_ZONEBUNNYCDN_API_KEYBUNNYCDN_REGION 变量。

BUNNYCDN_STORAGE_ZONE=testing_storage_zone
BUNNYCDN_API_KEY="api-key"
# BUNNYCDN_REGION=uk

之后,您就可以在 Laravel 9 中使用 bunnycdn 磁盘了。

Storage::disk('bunnycdn')->put('index.html', '<html>Hello World</html>');

return response(Storage::disk('bunnycdn')->get('index.html'));

注意:如果您的应用程序运行在带有配置缓存驱动器/生产模式的情况下,您可能需要运行 php artisan config:clear 以刷新您的配置。

区域

有关完整区域列表,请访问 BunnyCDN API 文档页面

flysystem-bunnycdn 还在 PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNRegion 中提供了每个区域的常量。

区域列表

# 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';

贡献

欢迎拉取请求。请随时提出任何问题作为讨论点。

开发

对于 Flysystem 适配器如何为 BunnyCDN 的工作,大部分理解来自 tests/。如果您想针对一个实际的 BunnyCDN 端点进行测试,请将 tests/ClientDI_Example.php 复制到 tests/ClientDI.php,并将您的凭据插入其中。然后,您可以通过运行 vendor/bin/phpunit 运行整个套件,或通过运行 vendor/bin/phpunit --bootstrap tests/ClientDI.php tests/ClientTest.php 对特定文件进行测试。

许可证

BunnyCDN 的 Flysystem 适配器许可协议为 MIT