astock/stock-api-libphp

Adobe Stock API 库

1.1.5 2021-08-31 16:36 UTC

This package is auto-updated.

Last update: 2024-09-10 01:59:31 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,必须通过传递配置值(如 ApiKey、Product、environment)来初始化 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 等)以顺序检索后续的搜索结果。它维护搜索文件请求的当前状态,初始状态下,状态指向无效的搜索文件结果。一旦调用 getNextResponse 方法,它将执行 Search/Files API 调用,并返回包含 SearchFilesResponse 对象的结果。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 - 通过使用 getNextResponsegetPreviousResponsegetResponsePage 获取最近执行的搜索文件API调用的响应对象。初始状态下,此方法将返回 null,因为状态指向无效状态,此时没有响应。

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

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

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

SearchFilesRequest

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

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

SearchParameters

SearchParameters 允许您设置 Search/Files Stock API 支持的各种搜索参数(URL 查询参数)。这是一个您可以设置搜索关键词、限制、排序顺序、过滤器、媒体 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 的完整示例,该 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 - 获取指定类别标识符的股票资产类别信息的方法,例如旅行或动物等,可选地进行本地化。您需要传递包含类别标识符和地区(可选)参数的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方法来获取请求文件ID的元数据,以\AdobeStock\Api\Response\Files对象的形式。

实例化

您可以使用以下参数构造此类的对象 -

  • 需要:config - Config 类型的股票配置对象。

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

示例

实例化文件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。您可以设置文件标识符、地区语言代码和Bulk元数据文件API支持的结果列。

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

注意

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

  • 默认结果列 -
    • ID

FilesResponse

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

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

访问许可

许可

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

  • 这是该过程的概述

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

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

实例化

您可以使用以下参数构造此类的对象 -

  • 必需

    • config - StockConfig 类型的股票配置对象。
  • 返回

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

许可请求

为了调用 License APIs,您需要为许可资产创建 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,用于了解哪种产品可用于许可。
    • 具有信用模型:如果所选权益为组织且该组织为第2代,则为true。
    • 具有代理模型:如果所选权益为组织且该组织为第3代,则为true。
    • 是否为CCE:如果所选购买权益为组织之一,则为true。
    • 完整权益配额:用户可用权益的完整配额。
LicensePurchaseOptions
  • 有关用户购买该资产的购买选项的信息。
    • 购买状态:用户与资产之间的购买关系。
    • 需要检查:在购买过程中是否需要前往Adobe Stock网站完成。
    • 消息:在响应许可API查询时显示给用户的消息。
    • 购买Url:查看购买选项计划的URL。
LicenseMemberInfo
  • 有关用户的信息。
    • StockId:用户的唯一Stock成员标识符。
LicenseReferenceResponse
  • 在用相应的"id"属性许可图像时,必须提交标记为"必需"的许可引用。
    • Id:许可引用ID。
    • Text:许可引用描述。
    • 必需:在许可图像时是否必须提交许可引用。
LicenseContent
  • 查询响应中包含的用户资产的许可信息。
    • 内容ID:资产的唯一标识符。
    • 购买详情:关于用户购买/许可此资产的信息。
    • 大小:资产的大小,表示是否为免费补充大小或原始完整大小的资产。
    • Comp:有关补充或水印资产的信息。
    • 缩略图:有关资产缩略图的信息。

方法

  • 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 提供了包含资产下载URL的 guzzle 请求对象,如果已经授权,可以通过 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 等,以获取结果。Adobe Stock 提供分页界面,允许您多次调用其方法(例如 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, '');

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

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

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

    • getLicenseHistoryPage - 跳转到特定 LicenseHistory 文件响应页面的方法。它将状态移动到提供的 LicenseHistory 页面并获取相同页面的 LicenseHistory 响应。如果在调用 LicenseHistory API 或提供的 licenseHistory 页面索引超出总页数时出现任何故障,它将抛出 StockException。

    • getLastLicenseHistory - 通过使用 getNextLicenseHistorygetPreviousLicenseHistorygetLicenseHistoryPage 获取最近执行的 LicenseHistory 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 查询参数)。这是您可以设置限制、偏移量、缩略图大小等的类。

查询参数搜索参数[*]与 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 结果。例如,getNextLicenseHistoryLicenseHistory 类方法返回初始化为 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();

测试和 linting

测试

运行 composer run check 进行 linting 和测试用例。运行 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 找到。

贡献

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