为Laravel提供的Cloudflare Images库

v0.1.4 2023-03-29 20:36 UTC

This package is not auto-updated.

Last update: 2024-09-26 03:18:31 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status

️⚠️ 警告:此软件包仍在开发中,尚未准备好用于生产使用。 ⚠️

例如,目前没有选项使用自定义模型替换软件包的Image和ImageType模型。一旦我的实现稳定,我将添加此功能。

安装

使用composer安装此软件包

composer require benbjurstrom/glint

将cloudflare凭证添加到您的服务配置文件中

// config/services.php
'cloudflare' => [
    'account_hash' => env('CLOUDFLARE_IMAGES_ACCOUNT_HASH'),
    'account_id' => env('CLOUDFLARE_IMAGES_ACCOUNT_ID'),
    'api_token' => env('CLOUDFLARE_IMAGES_API_TOKEN'),
    'signing_key' => env('CLOUDFLARE_IMAGES_SIGNING_KEY'),
],

然后使用以下命令发布并运行迁移

php artisan vendor:publish --tag="glint-migrations"
php artisan migrate

用法

客户端上传

由于处理认证、授权和响应格式的有多种方式,因此这部分留给了用户来实现。但一个示例控制器可能如下所示

    public function store(Request $request)
    {
        Gate::authorize('uploadImages', [
            $request->user()
        ]);

        $data = $request->validate([
            'type_id' => 'required|uuid|exists:image_types,id',
            'model_id' => 'required|uuid',
            'model_type' => 'required',
        ]);

        $modelName = Relation::getMorphedModel($data['model_type']) ?? $data['model_type'];
        $model = (new $modelName)->findOrFail($data['model_id']);
        throw_unless($model instanceof HasImagesInterface, 
            \Exception::class, 'Model does not implement HasImagesInterface'
        );

        $type = ImageType::findOrFail($data['type_id']);
        $image = $model->addImageFromDraft($type);

        return response()->json($image);
    }

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件