schliflo/stock-api-libphp

Adobe Stock API 库

1.1.4.1 2021-08-11 13:44 UTC

This package is auto-updated.

Last update: 2024-09-11 20:37:07 UTC


README

概述

这是 Stock 服务提供的各种 API 的 PHP 实现。Adobe Stock API 可在此处获取:这里

入门指南

  1. 使用 Git 将整个仓库克隆到根目录,或者将仓库导出为 zip 文件并在本地解压。
  2. 或者,您可以通过在 composer.json 文件中添加以下配置来将此仓库包含到您的项目中
    {
        "require-dev": {
            "astock/stock-api-libphp": "dev-master"
        },
        "repositories": [
            {
                "type": "vcs",
                "url": "git@github.com:adobe/stock-api-libphp.git"
            }
        ]
    }
  1. 或者,您可以参考AdobeStock SDK 示例,以非常方便的方式在项目中使用此 SDK。

先决条件

要使用 SDK,您需要检查以下先决条件

  1. SDK 需要 PHP 7.1 或更高版本。如果您没有这个版本,请现在安装它。

  2. 如果尚未安装 Composer,请从这里安装。这是下载 SDK 项目依赖项所必需的。

    • 对于 Mac,建议使用 Homebrew
      • 运行 brew install composer
      • 如果您收到一条消息,说明锁文件已过时,请运行 brew update composer

构建步骤

  • 运行 composer update 以更新 composer.lock 文件并安装新依赖项。

  • 运行 composer install --no-dev 以安装所需的库。

    如果您计划进行一些开发,请删除 --no-dev 选项。如果您选择安装这些额外依赖项,还必须单独安装 xdebug 或使用以下步骤。

    • 在 Mac 上使用 Homebrew 安装 xdebug

      • 使用 brew search xdebug 获取可用的 xdebug 扩展列表。
      • 从上述列表中选择最新的 xdebug 版本,然后运行 brew install homebrew/php/<php-version>-xdebug,例如:brew install homebrew/php/php71-xdebug
    • 在 Windows 上,请按照以下步骤安装 xdebug

      • 这里下载 xdebug.dll。
      • 编辑 php.ini 以使用 xdebug 扩展。步骤在此

使用方法

AdobeStock

为了使用 Stock API,必须通过传递配置值(如 ApiKeyProductenvironment)来初始化 AdobeStock,这将初始化 stock Config

    $client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', new Http());

访问 SearchFiles

SearchFiles

AdobeStock 类允许您访问 Search/Files Stock API。您可以查询 Adobe Stock 以找到符合您指定搜索条件的资产。您可以使用 SearchFilesRequest 对象设置过滤器、排序顺序、设置搜索关键词等,以用于 Search/Files API。

首先,您需要调用 searchFilesInitialize 来初始化搜索文件,这将为您提供 Adobe Stock 对象,您可以从该对象调用 getNextResponsegetPreviousResponse 等方法来获取结果。AdobeStock 提供分页接口,允许您多次调用其方法(例如 getNextResponsegetPreviousResponse 等)以顺序检索后续搜索结果。它维护搜索文件请求的当前状态,初始状态下指向无效的搜索文件结果。一旦调用 getNextReponse 方法,它将执行 Search/Files API 调用,并返回带有 SearchFilesReponse 对象的结果。getNextResponse 将状态移动到下一页,并获取同一页面的响应。同样,可以使用 getPreviousResponsegetResponsePage 方法分别向前移动一页和跳转到特定的搜索页面索引。

实例化

您可以使用以下参数来构建该类的对象

  • 需要

    • access_token - Adobe IMS 用户访问令牌。如果请求带有 is_licensed 列表的结果,则它必须是有效的访问令牌。否则,它可以为 null。
    • request - 包含地区、结果列、搜索参数等的 SearchFilesRequest 请求对象。
  • 返回

    • 包含与请求对象匹配的搜索文件 API 结果的响应对象(SearchFilesResponse)。
示例

初始化 SearchFiles API 的示例代码 -

        $results_columns = Constants::getResultColumns();
        $search_params = new SearchParameters();
        $search_params->setWords('tree')->setLimit(3)->setOffset(0);
        
        $result_column_array = [
            $results_columns['NB_RESULTS'],
            $results_columns['COUNTRY_NAME'],
            $results_columns['ID'],
        ];
        
        $request = new SearchFilesRequest();
        $request->setLocale('En_US');
        $request->setSearchParams($search_params);
        $request->setResultColumns($result_column_array);
        
        $this->_adobe_stock_client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', $http_client);
        $response = $this->_adobe_stock_client->searchFilesInitialize($request, '');

更多示例可以在本文件的末尾找到。

方法
  • AdobeStock 的文件搜索方法如果没有搜索结果可提供,可能会抛出 StockException。它允许您 -
    • getNextResponse - 获取下一页搜索文件响应的方法。它将状态移动到下一页,并获取同一页面的搜索文件响应。如果 API 返回错误或搜索请求没有更多搜索结果,该方法将抛出 StockException。

    • getPreviousResponse - 获取上一页搜索文件响应的方法。它将状态移动到上一页,并获取同一页面的搜索文件响应。如果 API 返回错误或搜索请求没有更多搜索结果,或状态指向无效状态,该方法将抛出 StockException。

    • getResponsePage - 跳转到特定搜索文件响应页面的方法。它将状态移动到提供的搜索页面,并获取同一页面的搜索文件响应。如果在搜索文件 API 或提供的搜索页面索引超出总搜索页面数时发生任何失败,它将抛出 StockException。

    • getLastResponse - 获取最近执行的搜索文件 API 调用的响应对象,无论是通过 getNextReponsegetPreviousResponse 还是 getResponsePage。初始时,此方法将返回 null,因为状态指向无效状态,此时没有响应。

    • currentSearchPageIndex - 获取最近执行的 getNextReponsegetPreviousResponsegetResponsePage 方法可用的搜索文件响应的当前页面索引。初始时,由于状态指向无效状态,它返回 -1。

    • totalSearchPages - 获取最近执行的 getNextReponsegetPreviousResponsegetResponsePage 方法可用的总搜索页面数。初始时,由于状态指向无效状态,它返回 -1。

    • totalSearchFiles - 获取最近执行的 getNextReponsegetPreviousResponsegetResponsePage 方法可用的总搜索文件数。初始时,由于状态指向无效状态,它返回 -1。

SearchFilesRequest

为了调用SearchFiles API,您需要创建一个SearchFileRequest对象来定义搜索文件结果的搜索条件。您可以在此处设置Stock Search/Files API支持的搜索参数、地区和所需的列。

以下是Search/Files API查询参数与您可以在PHP Stock SDK中使用的setter方法的映射 -

SearchParameters

SearchParameters 允许设置Search/Files Stock API支持的搜索参数(URL查询参数)。在这个类中,您可以实际设置搜索关键词、限制、排序顺序、过滤器、media_id等。

查询参数search_parameters[*]与SearchParameters类setter方法的映射 -

结果列

您可以创建ResultColumn枚举数组来定义您想在搜索结果中包含的列。

示例
    $results_columns = Constants::getResultColumns();
    $result_column_array = [
            $results_columns['NB_RESULTS'],
            $results_columns['COUNTRY_NAME'],
            $results_columns['ID'],
        ];
注意

如果您没有设置结果列,它将默认在result_column数组中设置以下列。

  • 默认结果列 -
    • NB_RESULTS
    • ID
    • TITLE
    • CREATOR_NAME
    • CREATOR_ID
    • WIDTH
    • HEIGHT
    • THUMBNAIL_URL
    • THUMBNAIL_HTML_TAG
    • THUMBNAIL_WIDTH
    • THUMBNAIL_HEIGHT
    • MEDIA_TYPE_ID
    • CATEGORY
    • CATEGORY_HIERARCHY
    • VECTOR_TYPE
    • CONTENT_TYPE
    • PREMIUM_LEVEL_ID

SearchFilesResponse

这表示由Stock Search/Files API返回的搜索结果。例如,SearchFiles类的getNextResponse方法返回初始化自Search/Files API返回的结果的SearchFilesResponse对象。SearchFilesResponse允许您 -

  • getNbResults - 获取搜索响应中'nb_results'列的值
  • getFiles - 获取由搜索文件API返回的StockFile列表

创建SearchFilesRequest和调用搜索文件API

以下是一些完整的示例,展示了如何创建搜索请求,然后调用搜索API,它返回以SearchFileRequest形式呈现的搜索结果。

  • 通过调用getNextResponse方法获取搜索结果的示例
        $results_columns = Constants::getResultColumns();
        $search_params = new SearchParameters();
        $search_params->setWords('tree')->setLimit(3)->setOffset(0);
        
        $result_column_array = [
            $results_columns['NB_RESULTS'],
            $results_columns['COUNTRY_NAME'],
            $results_columns['ID'],
        ];
        
        $request = new SearchFilesRequest();
        $request->setLocale('En_US');
        $request->setSearchParams($search_params);
        $request->setResultColumns($result_column_array);
        
        $this->_adobe_stock_client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', $http_client);
        $search_files_response = $this->_adobe_stock_client->searchFilesInitialize($request, '')->getNextResponse();
  • 通过调用getPreviousResponse方法获取先前搜索结果的示例
        $results_columns = Constants::getResultColumns();
        $search_params = new SearchParameters();
        $search_params->setWords('tree')->setLimit(3)->setOffset(0);
        
        $result_column_array = [
            $results_columns['NB_RESULTS'],
            $results_columns['COUNTRY_NAME'],
            $results_columns['ID'],
        ];
        
        $request = new SearchFilesRequest();
        $request->setLocale('En_US');
        $request->setSearchParams($search_params);
        $request->setResultColumns($result_column_array);
        
        $this->_adobe_stock_client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', $http_client);
        $search_files_response = $this->_adobe_stock_client->searchFilesInitialize($request, '')->getPreviousResponse();
  • 通过调用getResponsePage方法跳转到特定页面的示例
        $results_columns = Constants::getResultColumns();
        $search_params = new SearchParameters();
        $search_params->setWords('tree')->setLimit(3)->setOffset(0);
        
        $result_column_array = [
            $results_columns['NB_RESULTS'],
            $results_columns['COUNTRY_NAME'],
            $results_columns['ID'],
        ];
        
        $request = new SearchFilesRequest();
        $request->setLocale('En_US');
        $request->setSearchParams($search_params);
        $request->setResultColumns($result_column_array);
        
        $this->_adobe_stock_client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', $http_client);
        $search_files_response = $this->_adobe_stock_client->searchFilesInitialize($request, '')->getResponsePage(10);

访问SearchCategory

SearchCategory

AdobeStock类允许您访问Search/Category和Search/CategoryTree Stock API。每个库存资产都放置在一个分类中,该分类将资产分类,例如“旅行”或“爱好和休闲”,每个分类都有一个唯一的识别号、一个名称和一个路径,您可以使用它来访问同一分类中的其他资产。

您可以使用SearchCategoryRequest对象来设置分类标识符和地区信息。然后您可以通过调用searchCategory方法以SearchCategoryResponse对象的形式获取有关库存资产类别的信息。您还可以通过调用searchCategoryTree方法以SearchCategoryResponse对象列表的形式检索有关零个或多个分类标识符的信息。

实例化

您可以使用以下参数来构建该类的对象

  • 需要:config - Config类型的库存配置对象。

  • 返回:SearchCategoryResponse - 包含由searchCategory方法返回的与请求对象匹配的搜索类别API结果的响应对象。SearchCategoryResponse列表 - 包含由searchCategoryTree方法返回的与请求对象匹配的搜索类别树API结果的响应对象列表。

示例

实例化SearchCategory API的示例代码 -

        //Instantiating and Initializing AdobeStock
        $client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', new Http());
        //Users ims token
        $access_token = 'ims_token';

        //Constructing SearchCategoryRequest
        $request = new SearchCategoryRequest();
        $request->setCategoryId(1043)->setLocale('En-US');

        //Now you can call searchCategory to get category information
        $response = $client->searchCategory($request, $access_token);
        //You can also call searchCategoryTree to get information about list of categories
        $response = $client->searchCategoryTree($request, $access_token);
方法
  • AdobeStock类方法如果请求无效或API返回错误时可以抛出StockApiException。它允许您 -
    • searchCategory - 获取有关指定分类标识符(可选本地化)的Stock资产类别(例如旅行或动物)的信息的方法。您需要传递包含分类标识符和地区(可选)参数的SearchCategoryRequest对象。如果请求对象无效或API返回错误,则该方法将抛出StockApiException

    • searchCategoryTree - 获取零个或多个分类标识符的分类信息的方法。您需要传递包含分类标识符和地区参数(两者均可选)的 SearchCategoryRequest 对象。如果请求对象不包含分类标识符,则返回所有库存分类的列表。如果请求对象无效或API返回错误,该方法将抛出 StockApiException

SearchCategoryRequest

为了调用 SearchCategory/SearchCategoryTree API,您需要创建一个 SearchCategoryRequest 对象来定义搜索分类结果的搜索标准。您可以在其中设置由 Stock Search Category/Category Tree API 支持的分类标识符和位置语言代码。

以下是 Search Category/CategoryTree API 查询参数与您可以在 PHP Stock SDK 中使用的设置器方法的映射 -

SearchCategoryResponse

它表示从 Stock Search/Category API 返回的搜索结果。例如,AdobeStock 类的 searchCategory 方法返回一个初始化为从 Search/Category API 返回的结果的 SearchCategoryResponse 对象。SearchCategoryResponse 允许您 -

  • getName - 获取由搜索/分类 API 返回的分类的本地化名称
  • getId - 获取由搜索/分类 API 返回的分类的唯一标识符
  • getLink - 获取由搜索/分类 API 返回的分类的路径

访问文件元数据

文件

AdobeStock 类允许您访问文件库存 API。文件 API 用于从 Adobe Stock 获取元数据,一次一个资产,或批量获取。

您可以通过构建 \AdobeStock\Api\Request\Files 对象来设置标识符、地区信息和所需的结果列。然后,您可以通过调用 getFiles 方法以 \AdobeStock\Api\Response\Files 对象的形式获取请求文件 ID 的元数据。

实例化

您可以使用以下参数来构建该类的对象

  • 需要:config - Config类型的库存配置对象。

  • 返回: \AdobeStock\Api\Response\Files - 包含与请求对象匹配的文件 API 结果的响应对象,由 getFiles 方法返回。

示例

实例化文件 API 的示例代码 -

        //Instantiating and Initializing AdobeStock
        $client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', new Http());
        //Users ims token
        $access_token = 'ims_token';

        //Constructing SearchCategoryRequest
        $request = new \AdobeStock\Api\Request\Files();
        $request->setIds([105988, 105989, 105990])
                ->setLocale('En-US');
                ->setResultColumns([
                    'id',
                    'title',
                    'creator_name',
                    'description',
                ]);

        //Now you can call getFiles to get files metadata
        $response = $client->getFiles($request, $access_token);
方法
  • AdobeStock类方法如果请求无效或API返回错误时可以抛出StockApiException。它允许您 -
    • getFiles - 获取库存文件元数据信息的方法。您需要传递包含文件标识符(可选)、地区(可选)和结果列(可选)参数的 \AdobeStock\Api\Request\Files 对象。如果请求对象无效或 API 返回错误,该方法将抛出 StockApiException

FilesRequest

为了调用 GetFiles API,您需要创建一个 \AdobeStock\Api\Request\Files 对象来定义您要获取元数据的文件的 ID。您可以设置文件标识符、位置语言代码和由批量元数据文件 API 支持的结果列。

以下是文件 API 查询参数与您可以在 PHP Stock SDK 中使用的设置器方法的映射 -

注意

如果您没有设置结果列,它将在结果列数组中设置以下列作为默认值。

  • 默认结果列 -
    • ID

FilesResponse

它表示文件 API 返回的结果。例如,getFiles 方法的 AdobeStock 类返回一个初始化为从文件 API 返回的结果的 \AdobeStock\Api\Response\Files 对象。\AdobeStock\Api\Response\Files 允许您 -

  • getNbResults - 获取文件响应中 'nb_results' 列的值
  • getFiles - 获取由文件 API 返回的 StockFile 列表

访问许可证

许可证

License 类允许您购买资产、关于购买资产的信息、关于用户许可证(权益)状态的信息、确定用户是否已拥有某个资产的现有许可证、在用户放弃许可证操作时通知系统、如果用户有权许可资产,则请求为该用户获取资产许可证,以及获取已许可的资产的 URL。

  • 这是该过程的概述

    • 调用 getContentInfo 以确定资产是否已许可。如果没有,则调用 getMemberProfile 以获取您的用户购买选项。
    • 如果用户选择继续购买,请调用 getContentLicense
    • 如果用户取消购买,请调用 abandonLicense
  • 为了许可 Adobe Stock 图片

    • 调用 SearchFiles 来查找想要许可的资产。
    • 搜索结果在 id 字段中返回资产的标识符。
    • 获取用户的 访问令牌
    • 使用参数(如内容 ID、许可状态、购买状态、区域等)调用各种 License API 执行这些操作。
    • 调用 downloadAssetUrl 来获取已许可资产的 URL,或者调用 downloadAssetRequest 来获取包含资产 URL 的 guzzle 请求对象(可以通过击中请求或 downloadAssetStream 来下载图像缓冲区)。

实例化

您可以使用以下参数来构建该类的对象

  • 需要

    • config - StockConfig 类型的库存配置对象。
  • 返回

    • LicenseResponse - 包含资产内容 ID、购买详情、匹配请求对象的许可状态结果的响应对象,请求对象由 getContentInfogetContentLicensegetMemberProfileabandonLicense 方法返回。

许可请求

为了调用 License API,您需要为许可资产创建 LicenseRequest 对象,为获取特定用户特定资产的许可信息,当用户取消许可操作时通知系统,以及获取特定用户的许可能力。

许可状态

资产的 Adobe Stock 许可状态。

  • 许可状态类型

    • 对于图像、照片或插图,您可以请求
      • Standard - 许可完整分辨率的图像
      • Standard_M - 许可约 1600x1200 像素的中等大小图像
      • Extended - 完整分辨率的图像的扩展许可
    • 对于视频,您可以请求
      • Video_HD - 许可高清分辨率的视频
      • Video_4K - 许可 4K 分辨率的视频
    • 对于矢量资产: StandardExtended
    • 对于 3D 资产: Standard
    • 对于模板: Standard
购买状态

用户与资产之间的购买关系。

  • 各种购买状态
    • NOT_PURCHASED - 用户过去从未购买过该资产。
    • PURCHASED - 用户过去某个时间购买过该资产。
    • CANCELLED - 用户尝试购买该资产,但由于某些原因订单未成功。
    • NOT_POSSIBLE - 用户必须访问 Adobe Stock 网站购买计划或资产。
    • JUST_PURCHASED - 用户在当前会话中购买了资产。
    • OVERAGE - Adobe Stock 已为用户存储支付工具,并可以就额外购买向用户收费。

许可响应

License 类中调用各种 API 后,响应以 LicenseResponse 的形式返回。它包含以下字段。以下定义了所有用于响应的类对象。

LicenseEntitlement
  • LicenseEntitlement 提供关于用户可用的许可信息。
    • Quota : 用户可用的剩余许可数量。
    • License Type Id: 用于许可的产品的 Stock 内部 ID。
    • Has Credit Model: 如果所选权限是为组织且该组织是第 2 代,则为 true。
    • Has Agency Model: 如果所选权限是为组织且该组织是第 3 代,则为 true。
    • Is CCE: 如果所选购买权限是组织之一,则为 true。
    • Full Entitlement Quota: 用户可用的完整权限配额。
LicensePurchaseOptions
  • 关于用户购买资产的选项信息。
    • Purchase State : 用户与资产之间的购买关系。
    • Requires Checkout : 是否需要转到 Adobe Stock 网站完成进行中的购买。
    • Message : 在对许可 API 进行查询后向您的用户显示的消息。
    • PurchaseUrl : 查看购买选项计划的URL。
LicenseMemberInfo
  • 关于用户的信息
    • StockId : 用户的唯一库存成员标识。
LicenseReferenceResponse
  • 标记为“必需”的许可证引用必须在使用相应的“id”属性许可图像时提交。
    • Id : 许可证引用ID。
    • Text : 许可证引用描述。
    • Required : 是否在许可图像时必须提交许可证引用。
LicenseContent
  • 查询响应中包含的用户资产许可信息。
    • Content Id : 资产的唯一标识符。
    • Purchase Details : 关于用户购买/许可此资产的信息。
    • Size : 资产的大小,指示是否为免费补充大小或原始完整大小资产。
    • Comp : 关于补充或带水印资产的信息。
    • Thumbnail : 关于资产缩略图的信息。

方法

  • License API 允许您调用与许可库存资产相关的四个方法。如果响应为空或存在某些API错误,则可能抛出StockException。
    • getContentInfo 请求特定用户特定资产的许可信息。您需要传递ims用户accessToken和包含内容标识符、许可状态和区域(可选)参数的LicenseRequest对象。如果请求对象无效或API返回错误,则该方法将抛出StockApiException。

    • getContentLicense 请求特定用户资产的许可证。您需要传递ims用户accessToken和包含content_id、许可证引用和许可证的LicenseRequest对象。如果请求对象无效或API返回错误,则该方法将抛出StockApiException。

    • getMemberProfile 返回用户的可用购买配额、成员标识符以及您可以使用它向用户展示许可选项的信息,当用户下次请求资产购买时。以下3种情况可能发生-

      • 用户有足够的配额来许可下一个资产。
      • 用户没有足够的配额,并已设置处理超配额。
      • 用户没有配额,并且没有超配额计划。您需要传递ims用户accessToken和包含content_id、许可状态和区域的LicenseRequest对象。如果请求对象无效或API返回错误,则该方法将抛出StockApiException。
    • abandonLicense 通知系统用户取消许可操作。如果用户拒绝购买或许可请求的资产,则可以使用此功能。您需要传递ims用户accessToken和包含content_id和许可状态的LicenseRequest对象。如果请求对象无效或API返回错误,则该方法将抛出StockApiException。

    • downloadAssetRequest 提供包含可由guzzle客户端的send方法下载的资产URL的guzzle请求对象。如果已许可,则可以下载,否则抛出StockApiException,显示消息,说明用户是否有足够的配额并可以购买许可证。您需要传递ims用户accessToken和包含content_id和许可状态的LicenseRequest对象。如果请求无效或资产未许可或资产不存在许可信息或API返回错误,则将抛出StockApiException。

    • downloadAssetUrl 如果已许可,则提供资产URL,否则抛出StockApiException,显示消息,说明用户是否有足够的配额并可以购买许可证。您需要传递ims用户accessToken和包含content_id和许可状态的LicenseRequest对象。如果请求无效或资产未许可或资产不存在许可信息或API返回错误,则将抛出StockApiException。

    • downloadAssetStream如果资产已经授权,则提供资产的图像缓冲区;否则,抛出包含用户是否有足够的配额以及能否购买授权信息的StockApiException。您需要传递ims用户的accessToken和包含content_id和授权状态的LicenseRequest对象。如果请求无效或资产未授权或资产的授权信息不存在或API返回错误,该方法将抛出StockApiException

示例

以下示例展示了如何使用LicenseRequest调用所有方法并返回LicenseResponse

getContentInfo 示例

        $request = new LicenseRequest();
        $request->setLocale('En_US');
        $request->setContentId(84071201);

        $this->_adobe_stock_client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', $http_client);
        $license_response = $this->_adobe_stock_client->getContentInfo($request, '');

getContentLicense 示例

      $request = new LicenseRequest();
      $request->setLocale('En_US');
      $request->setContentId(84071201);
      
      $array = [[
      'id' => 1,
      'value' => 'test',
      ]];
      $request->setLicenseReference($array);
      $this->_adobe_stock_client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', $http_client);
      $license_response = $this->_adobe_stock_client->getContentLicense($request, '');

getMemberProfile 示例

        $request = new LicenseRequest();
        $request->setLocale('En_US');
        $request->setContentId(84071201);
    
        $this->_adobe_stock_client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', $http_client);
        $license_response = $this->_adobe_stock_client->getMemberProfile($request, '');

abandonLicense 示例

        $request = new LicenseRequest();
        $request->setLocale('En_US');
        $request->setContentId(84071201);
    
        $this->_adobe_stock_client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', $http_client);
        $license_response = $this->_adobe_stock_client->abandonLicense($request, '');

downloadAssetRequest 示例

 
        $request = new LicenseRequest();
        $request->setLicenseState('STANDARD');
        $request->setContentId(84071201);
   
        $this->_adobe_stock_client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', $http_client);
        $guzzle_request = $this->_adobe_stock_client->downloadAssetRequest($request, '');
 

downloadAssetUrl 示例

 
        $request = new LicenseRequest();
        $request->setLicenseState('STANDARD');
        $request->setContentId(84071201);
   
        $this->_adobe_stock_client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', $http_client);
        $url = $this->_adobe_stock_client->downloadAssetUrl($request, '');
 

downloadAssetStream 示例

 
        $request = new LicenseRequest();
        $request->setLicenseState('STANDARD');
        $request->setContentId(84071201);
   
        $this->_adobe_stock_client = new AdobeStock('AdobeStockClient1', 'Adobe Stock Lib/1.0.0', 'PROD', $http_client);
        $image_stream = $this->_adobe_stock_client->downloadAssetStream($request, '');
 

访问授权历史

授权历史

AdobeStock类允许您访问授权历史API。您可以构建LicenseHistoryRequest对象以设置偏移量、限制和设置结果列等,用于授权历史API。

首先,您必须调用initializeLicenseHistory来初始化授权历史API,这将为您提供一个Adobe Stock对象,您可以从该对象调用getNextLicenseHistorygetPreviousLicenseHistory等以获取结果。AdobeStock提供分页接口,允许您多次调用其方法(例如getNextLicenseHistorygetPreviousLicenseHistory等)以按顺序检索后续结果。它维护授权历史请求的当前状态,最初状态指向无效的授权历史文件结果。一旦调用getNextLicenseHistory方法,它将进行授权历史API调用并返回带有LicenseHistoryResponse对象的成果。getNextLicenseHistory将状态移动到下一页并获取相同的结果响应。同样,可以使用getPreviousLicenseHistorygetLicenseHistoryPage方法向前移动一页或跳转到特定的授权历史页面索引。

实例化

您可以使用以下参数来构建该类的对象

  • 需要

    • access_token - Adobe IMS用户的访问令牌。
    • request - 由包含区域、结果列、搜索参数等的LicenseHistoryRequest请求对象组成。
  • 返回

    • 包含与请求对象匹配的授权历史文件API结果的响应对象(LicenseHistoryResponse)。
示例

初始化授权历史API的示例代码 -

        $results_columns = Constants::getResultColumns();
        $params = new SearchParamLicenseHistory();
        $params->setOffset(0)->setLimit(5);
        
        $result_column_array = [
            $results_columns['THUMBNAIL_110_URL'],
            $results_columns['THUMBNAIL_110_WIDTH'],
            $results_columns['THUMBNAIL_110_HEIGHT'],
        ];
        
        $request = new LicenseHistoryRequest();
        $request->setLocale('En_US');
        $request->setSearchParams($params);
        $request->setResultColumns($result_column_array);
        
        $this->_adobe_stock_client = new AdobeStock('LucaTest1', 'Spark Page', 'PROD', $http_client);
        $response = $this->_adobe_stock_client->initializeLicenseHistory($request, '');

更多示例可以在本文件的末尾找到。

方法
  • AdobeStock的授权历史方法在没有可用结果时可能会抛出StockException。它允许您 -
    • getNextLicenseHistory - 获取下一个授权历史文件响应页面的方法。它将状态移动到下一页并获取相同的授权历史响应。如果API返回错误或请求没有更多搜索结果可用,该方法将抛出StockException

    • getPreviousLicenseHistory - 获取上一个授权历史文件响应页面的方法。它将状态移动到前一页并获取相同的授权历史响应。如果API返回错误或请求没有更多搜索结果可用或状态指向无效状态,该方法将抛出StockException

    • getLicenseHistoryPage - 跳转到特定授权历史文件响应页面的方法。它将状态移动到提供的授权历史页面并获取相同的授权历史响应。如果在授权历史API或提供的授权历史页面索引超出总页数的情况下发生任何失败,它将抛出StockException

    • getLastLicenseHistory - 通过使用getNextLicenseHistorygetPreviousLicenseHistorygetLicenseHistoryPage获取最近执行的授权历史API调用的响应对象。最初,此方法将返回null,因为状态指向无效状态且此时没有响应。

    • currentLicenseHistoryPageIndex - 获取最近执行的 getNextLicenseHistorygetPreviousLicenseHistorygetLicenseHistoryPage 方法中可用的 LicenseHistory 响应的当前搜索页码索引。初始时,由于状态指向无效状态,它返回 -1。

    • getTotalLicenseHistoryPages - 获取最近执行的 getNextLicenseHistorygetPreviousLicenseHistorygetLicenseHistoryPage 方法中可用的 LicenseHistory 页面的总数。初始时,由于状态指向无效状态,它返回 -1。

    • getTotalLicenseHistoryFiles - 获取最近执行的 getNextLicenseHistorygetPreviousLicenseHistorygetLicenseHistoryPage 方法中可用的 LicenseHistory 文件的总数。初始时,由于状态指向无效状态,它返回 -1。

LicenseHistoryRequest

为了执行 LicenseHistory API 调用,您需要创建一个 LicenseHistoryRequest 对象来定义 LicenseHistory 文件结果的标准。您可以在其中设置 Stock LicenseHistory API 支持的各种搜索参数、区域和所需结果列。

以下是 LicenseHistory API 查询参数与您可以在 PHP Stock SDK 中使用的设置器方法的映射 -

SearchParameters

SearchParamLicenseHistory 允许设置 LicenseHistory API 支持的多种搜索参数(URL 查询参数)。这是您可以设置限制、偏移、缩略图大小等的类。

查询参数搜索参数 [search_parameters] 与 SearchParamLicenseHistory 类设置器方法的映射 -

结果列

您可以创建 ResultColumn 枚举的数组来定义您想要包含在结果中的列。

示例
    $results_columns = Constants::getResultColumns();
    $result_column_array = [
            $results_columns['THUMBNAIL_110_URL'],
            $results_columns['THUMBNAIL_110_WIDTH'],
            $results_columns['THUMBNAIL_110_HEIGHT'],
        ];
注意

如果您没有设置结果列,它将默认在result_column数组中设置以下列。

  • 默认结果列 -
    • NB_RESULTS
    • LICENSE
    • LICENSE_DATE
    • DOWNLOAD_URL
    • ID
    • TITLE
    • CREATOR_NAME
    • CREATOR_ID
    • WIDTH
    • HEIGHT
    • CONTENT_URL
    • MEDIA_TYPE_ID
    • VECTOR_TYPE
    • CONTENT_TYPE
    • DETAILS_URL

LicenseHistoryResponse

它表示 Stock LicenseHistory API 返回的 LicenseHistory 结果。例如,getNextLicenseHistory 类的方法返回一个初始化了 LicenseHistory API 返回结果的 LicenseHistoryResponse 对象。LicenseHistoryResponse 允许您 -

  • getNbResults - 获取 LicenseHistory 响应中 'nb_results' 列的值
  • getFiles - 获取 LicenseHistory API 返回的 StockFile 列表

创建 LicenseHistoryRequest 和调用 LicenseHistory API

以下是完全示例,展示了如何创建请求然后调用 LicenseHistory API,它反过来以 LicenseHistoryRequest 的形式返回结果。

  • 通过调用 getNextLicenseHistory 方法获取结果的示例
        $results_columns = Constants::getResultColumns();
        $params = new SearchParamLicenseHistory();
        $params->setOffset(0)->setLimit(5);
        
        $result_column_array = [
            $results_columns['THUMBNAIL_110_URL'],
            $results_columns['THUMBNAIL_110_WIDTH'],
            $results_columns['THUMBNAIL_110_HEIGHT'],
        ];
        
        $request = new LicenseHistoryRequest();
        $request->setLocale('En_US');
        $request->setSearchParams($params);
        $request->setResultColumns($result_column_array);
        
        $this->_adobe_stock_client = new AdobeStock('LucaTest1', 'Spark Page', 'PROD', $http_client);
        $response = $this->_adobe_stock_client->initializeLicenseHistory($request, '')->getNextLicenseHistory();
  • 通过调用 getPreviousLicenseHistory 方法获取之前结果的示例
        $results_columns = Constants::getResultColumns();
        $params = new SearchParamLicenseHistory();
        $params->setOffset(0)->setLimit(5);
        
        $result_column_array = [
            $results_columns['THUMBNAIL_110_URL'],
            $results_columns['THUMBNAIL_110_WIDTH'],
            $results_columns['THUMBNAIL_110_HEIGHT'],
        ];
        
        $request = new LicenseHistoryRequest();
        $request->setLocale('En_US');
        $request->setSearchParams($params);
        $request->setResultColumns($result_column_array);
        
        $this->_adobe_stock_client = new AdobeStock('LucaTest1', 'Spark Page', 'PROD', $http_client);
        $response = $this->_adobe_stock_client->initializeLicenseHistory($request, '')->getPreviousLicenseHistory();
        
  • 通过调用 getLicenseHistoryPage 方法跳转到特定页面结果的示例
        $results_columns = Constants::getResultColumns();
        $params = new SearchParamLicenseHistory();
        $params->setOffset(0)->setLimit(5);
        
        $result_column_array = [
            $results_columns['THUMBNAIL_110_URL'],
            $results_columns['THUMBNAIL_110_WIDTH'],
            $results_columns['THUMBNAIL_110_HEIGHT'],
        ];
        
        $request = new LicenseHistoryRequest();
        $request->setLocale('En_US');
        $request->setSearchParams($params);
        $request->setResultColumns($result_column_array);
        
        $this->_adobe_stock_client = new AdobeStock('LucaTest1', 'Spark Page', 'PROD', $http_client);
        $response = $this->_adobe_stock_client->initializeLicenseHistory($request, '')->getLicenseHistoryPage();

测试和代码质量检查

测试

运行 composer run check 进行代码质量检查和测试用例。运行 composer run test-coverage 进行测试覆盖率。

上述命令将默认运行代码质量检查、测试用例和代码覆盖率,以及构建项目。代码质量检查的结果将显示在控制台输出中,如果有任何问题,构建将立即停止并失败。如果没有找到代码质量检查问题,则构建将继续构建项目。它还将为您生成详细的覆盖率报告。

  • 覆盖率报告可以在 <项目目录>/data/clover/index.html 找到。注意 - 由于测试和覆盖率步骤在构建过程中比代码质量检查晚,所以如果代码质量检查失败,您将不会获得覆盖率报告。

使用 PHP_CodeSniffer 进行代码质量检查

本项目使用PHP_CodeSniffer进行代码检查。此外,Adobe Stock为PHPCS定义了一套自定义规则,这些规则包含在本仓库的libs目录中。在执行composer install时将安装此模块。它包含了一个PHPCS的捆绑版本,可能与您全局安装的版本不同;Composer脚本将运行正确的版本。

代码检查是在构建步骤中强制执行的。默认情况下,代码检查将首先运行,如果存在任何问题,构建将失败。

运行测试套件

然而,composer run check将自动运行测试,但如果您需要单独运行测试,请在控制台执行以下命令:

composer run test

覆盖率

如上所述,只需运行composer run test-coverage,它应该会生成覆盖率报告以及测试结果和构建项目。如上所述,覆盖率报告可以在<项目目录>/data/clover/index.html找到。

贡献

如果您想为该项目做出贡献,请查看我们的贡献指南