bynder/bynder-php-sdk

Bynder PHP 库

2.2.2 2024-08-27 15:47 UTC

README

Build Coverage Status Packagist Version Packagist Downloads

此 SDK 的主要目标是加快使用 PHP 的 Bynder 客户的集成速度。使其更容易连接到 Bynder API (https://bynder.docs.apiary.io) 并在该 API 上执行请求。

要求和依赖项

PHP SDK 需要以下内容才能完全工作

  • PHP >= 5.6,不推荐使用较旧的 PHP 版本
  • curl,尽管如果您愿意,可以使用自己的非 cURL 客户端

Composer 应该自动处理所有依赖项。

Composer 包

Bynder PHP SDK 以 composer 包的形式发布在 packagist 上,并可在以下位置找到

https://packagist.org.cn/packages/bynder/bynder-php-sdk

安装

此 SDK 依赖于一些库才能工作,使用 Composer 安装时应自动处理所有内容。

要使用 Composer 安装 SDK,请在项目的根目录下运行以下命令

composer require bynder/bynder-php-sdk

为了使用 SDK,我们使用 Composer 的 autoload 来自动包含所有文件

require_once('vendor/autoload.php');

如何使用它

以下是一个如何从 Bynder 资产库检索数据的简单示例。有关实现更详细的示例,请参阅 示例代码

在执行任何 Bynder API 请求之前,我们需要实例化 BynderApi 类,以下示例展示了如何使用 BynderApiFactory 来构造一个 BynderApi 实例

    $bynder = new BynderClient(new Configuration(
        $bynderDomain,
        $redirectUri,
        $clientId,
        $clientSecret
    ));

SDK 允许使用 Guzzle 请求选项。这可以通过在初始化配置对象时传递最后一个参数来完成

    $requestOptions = ['proxy' => 'http://MY-PROXY.URL:PORT_NUM'];
    $bynderApi = BynderClient(new Configuration(
       ...,
       $requestOptions
    ));

成功配置 BynderClient 服务后,我们需要获取一个 AssetBankManager 的实例,以便进行任何与 Bynder 资产库模块相关的 API 调用

 $assetBankManager = $bynder->getAssetBankManager();

有了这些,我们就可以开始我们的 API 请求,以下列出了“可用方法”部分。获取所有 媒体项 的简短示例

 $mediaList = $assetBankManager->getMediaList();

此调用将返回一个包含 Bynder 环境中所有媒体项的列表。请注意,某些调用接受一个查询数组,以便通过 API 调用参数来过滤结果(有关详细信息,请参阅 Bynder API 文档)。例如,如果我们只想检索 2 张图片,则调用将如下所示

    $mediaList = $assetBankManager->getMediaList(
        [
          'limit' => 2,
          'type' => 'image'
        ]
   );

所有调用都是 异步的,这意味着它们将返回一个 Promise 对象,这使得它更具灵活性,以便适应任何类型的应用程序。再次强调,对于更详细的示例,在这个存储库中有一个 应用程序使用案例

可用方法

以下是目前在 Bynder PHP SDK 中可用的方法,有关调用细节的更具体信息,请参阅Bynder API 文档

BynderClient

处理生成和设置访问令牌的过程,该令牌是向 API 发送请求所必需的。还包括与用户相关的调用。

    getAssetBankManager();
    getAuthorizationUrl();
    getAccessToken();
    getUsers();
    getUser($userId, $query);
    getCurrentUser();
    getSecurityProfile($profileId);

AssetBankManager

所有与 Asset Bank 相关的调用,提供媒体管理的信息和访问权限。

    getBrands();
    getMediaList($query);
    getMediaInfo($mediaId, $versions);
    getMetaproperties();
    getMetaproperty($propertyId);
    getMetapropertyDependencies($propertyId);
    getMetapropertyOptions($query);
    getMetapropetryGlobalOptionDependencies();
    getMetapropertyOptionDependencies($propertyId);
    getMetapropertySpecificOptionDependencies($propertyId, $optionId, $query);
    getTags();
    getCategories();
    getSmartfilters();
    uploadFileAsync($data);
    deleteMedia($mediaId);
    modifyMedia($mediaId, array $data);
    getDerivatives();
    getMediaDownloadLocation($mediaId, $type = 'original');
    getMediaDownloadLocationByVersion($mediaId, $version);
    getMediaDownloadLocationForAssetItem($mediaId, $itemId, $hash = false);
    createUsage($query);
    getUsage($query);
    deleteUsage($query);
    getCollections($query);
    getCollectionAssets($collectionId);

测试

使用 Docker

构建 Docker 镜像并标记它

docker build . -t bynder-php-sdk-tests

运行测试

docker run bynder-php-sdk-tests

本地运行

按照上述说明安装依赖项(这将解决PHPUnit),然后您可以运行测试套件

./vendor/bin/phpunit tests

或运行单个测试文件

./vendor/bin/phpunit tests/UtilTest.php

样本文件功能测试

sample 目录中的脚本包含执行相应功能所需的代码。其目的是演示如何调用方法,并提供执行函数的便捷方法。

sample 目录中创建一个名为 sample_config.php 的文件。此文件将从样本文件中引用。

在运行样本文件之前,请确保所有值都已正确填写。

示例 sample_config.php 文件内容

<?php
    $bynderDomain = "portal.bynder.com";
    $redirectUri = "https://google.com";
    $clientId = <your OAuth2 client id>;
    $clientSecret = <your OAuth2 client secret>;
    $token = null;

    // provide corresponding values to be used within API calls
    // media id for info
    $MEDIA_ID_FOR_INFO = "C078E8EE-C13A-4DA5-86EC8D6F335364EB";
    // media id for download url
    $MEDIA_ID_FOR_DOWNLOAD_URL = "C078E8EE-C13A-4DA5-86EC8D6F335364EB";
    // media id for download url
    $MEDIA_ITEM_ID_FOR_SPECIFIC_DOWNLOAD_URL = "C83B261D-715F-4188-809FE1214175A753";
    // media id for renaming
    $MEDIA_ID_FOR_RENAME = "C078E8EE-C13A-4DA5-86EC8D6F335364EB";
    // media id for removal
    $MEDIA_ID_FOR_REMOVAL = "C078E8EE-C13A-4DA5-86EC8D6F335364EB";
    // collection id to get assets for
    $GET_COLLECTION_ASSETS_ID = "615F03BB-D986-4786-B2C085D2F0718230";

    // metaproperty id to get info for
    $METAPROPERTY_ID_FOR_INFO = "0D563E99-218C-4613-86232D416EB7EA8A";
    // metaproperty option id to get info for
    $METAPROPERTY_OPTION_ID_FOR_INFO = "3C65AFA5-AC94-4223-A54757F373D209D6";
    // metaproperty id to get dependency info for
    $METAPROPERTY_ID_FOR_DEPENDENCY_INFO = "0D563E99-218C-4613-86232D416EB7EA8A";
    // metaproperty id for specific option dependency
    $METAPROPERTY_ID_FOR_SPECIFIC_OPTION_DEPEND = "0D563E99-218C-4613-86232D416EB7EA8A";
    // metaproperty option id for specific option
    $METAPROPERTY_OPTION_ID_FOR_SPECIFIC_OPTION_DEPEND = "DF1CF731-EFDF-484D-84BFD5CF8835B9D7";

    // media id used for creating asset usage
    $MEDIA_ID_FOR_ASSET_USAGE="C078E8EE-C13A-4DA5-86EC8D6F335364EB";
    // integration id used for asset usage
    $INTEGRATION_ID_FOR_ASSET_USAGE="0191a303-9d99-433e-ada4-d244f37e1d7d";
?>

在每个样本文件中,OAuth 凭据将从 sample_config.php 中读取。脚本将输出授权 URL 以导航到获取访问代码(不会自动打开浏览器,用户必须点击链接)。然后,将访问代码提供给终端提示以获取 API 调用之后的访问令牌。

命令行说明

请确保本地已安装 composerphp。从根目录运行 composer install 以从 composer.json 安装包。导航到 sample 目录。

品牌样本

php BrandsSample.php

使用的方法

  • getBrands()

集合样本

php CollectionsSample.php

使用的方法

  • getCollections($query)
  • getCollectionAssets($collectionId)

媒体样本

php MediaSample.php

使用的方法

  • getDerivatives()
  • getMediaList($query)
  • getMediaInfo($mediaId)
  • getMediaDownloadLocation($mediaId)
  • getMediaDownloadLocationByVersion($mediaId, $version)
  • getMediaDownloadLocationForAssetItem($mediaId, $itemId)
  • modifyMedia($mediaId, $data)
  • getMediaInfo($mediaId)
  • deleteMedia($mediaId)

元属性样本

php MetapropertiesSample.php

使用的方法

  • getMetaproperties()
  • getMetaproperty($metapropertyId)
  • getMetapropertyDependencies($metapropertyId)
  • getMetapropertyOptions($query)
  • getMetapropetryGlobalOptionDependencies()
  • getMetapropertyOptionDependencies($metapropertyId)
  • getMetapropertySpecificOptionDependencies($metapropertyId, $metapropertyOptionId, $array)

智能过滤器样本

php SmartFiltersSample.php

使用的方法

  • getSmartfilters()

标签样本

php TagsSample.php

使用的方法

  • getTags()

上传样本

php UploadsSample.php

使用的方法

  • uploadFileAsync($data)
  • getBrands()

使用样本

php UsageSample.php

使用的方法

  • createUsage($data)
  • getUsage($data)
  • deleteUsage($data)

Docker 指令

样本文件可以在 Docker 容器中执行。Makefile 包含运行/构建 Docker 容器的相应命令。

Dockerfile.dev 文件用于容器。

Makefile 命令是在根目录中执行的。如果需要,则使用 sudo 运行。

如果需要,拉取最新的 composer Docker 镜像 docker pull composer:latest

Makefile 命令

使用 Docker Compose 构建/启动 PHP SDK 的 Docker 容器

make run-php-sdk-docker

停止运行 PHP SDK 的 Docker 容器

make stop-php-sdk-docker

在 Docker 容器中运行样本文件(将 BrandsSample.php 替换为目标样本文件)

make execute-php-sdk-sample sample-file-name=BrandsSample.php