schliflo / stock-api-libphp
Adobe Stock API 库
Requires
- php: ^7.1|^8.0
- guzzlehttp/guzzle: ~6.0
Requires (Dev)
- mockery/mockery: ^0.9.9
- phpunit/phpunit: >=6.0 <9.0
- squizlabs/php_codesniffer: ^2.8
README
概述
这是 Stock 服务提供的各种 API 的 PHP 实现。Adobe Stock API 可在此处获取:这里
入门指南
- 使用 Git 将整个仓库克隆到根目录,或者将仓库导出为 zip 文件并在本地解压。
- 或者,您可以通过在 composer.json 文件中添加以下配置来将此仓库包含到您的项目中
{ "require-dev": { "astock/stock-api-libphp": "dev-master" }, "repositories": [ { "type": "vcs", "url": "git@github.com:adobe/stock-api-libphp.git" } ] }
- 或者,您可以参考AdobeStock SDK 示例,以非常方便的方式在项目中使用此 SDK。
先决条件
要使用 SDK,您需要检查以下先决条件
-
SDK 需要 PHP 7.1 或更高版本。如果您没有这个版本,请现在安装它。
-
如果尚未安装 Composer,请从这里安装。这是下载 SDK 项目依赖项所必需的。
- 对于 Mac,建议使用 Homebrew
- 运行
brew install composer
。 - 如果您收到一条消息,说明锁文件已过时,请运行
brew update composer
。
- 运行
- 对于 Mac,建议使用 Homebrew
构建步骤
-
运行
composer update
以更新 composer.lock 文件并安装新依赖项。 -
运行
composer install --no-dev
以安装所需的库。如果您计划进行一些开发,请删除
--no-dev
选项。如果您选择安装这些额外依赖项,还必须单独安装 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 对象,您可以从该对象调用 getNextResponse
、getPreviousResponse
等方法来获取结果。AdobeStock
提供分页接口,允许您多次调用其方法(例如 getNextResponse
、getPreviousResponse
等)以顺序检索后续搜索结果。它维护搜索文件请求的当前状态,初始状态下指向无效的搜索文件结果。一旦调用 getNextReponse
方法,它将执行 Search/Files API 调用,并返回带有 SearchFilesReponse
对象的结果。getNextResponse
将状态移动到下一页,并获取同一页面的响应。同样,可以使用 getPreviousResponse
和 getResponsePage
方法分别向前移动一页和跳转到特定的搜索页面索引。
实例化
您可以使用以下参数来构建该类的对象
-
需要
access_token
- Adobe IMS 用户访问令牌。如果请求带有 is_licensed 列表的结果,则它必须是有效的访问令牌。否则,它可以为 null。request
- 包含地区、结果列、搜索参数等的SearchFilesRequest
请求对象。
-
返回
- 包含与请求对象匹配的搜索文件 API 结果的响应对象(
SearchFilesResponse
)。
- 包含与请求对象匹配的搜索文件 API 结果的响应对象(
示例
初始化 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 调用的响应对象,无论是通过getNextReponse
、getPreviousResponse
还是getResponsePage
。初始时,此方法将返回 null,因为状态指向无效状态,此时没有响应。 -
currentSearchPageIndex
- 获取最近执行的getNextReponse
、getPreviousResponse
或getResponsePage
方法可用的搜索文件响应的当前页面索引。初始时,由于状态指向无效状态,它返回 -1。 -
totalSearchPages
- 获取最近执行的getNextReponse
、getPreviousResponse
或getResponsePage
方法可用的总搜索页面数。初始时,由于状态指向无效状态,它返回 -1。 -
totalSearchFiles
- 获取最近执行的getNextReponse
、getPreviousResponse
或getResponsePage
方法可用的总搜索文件数。初始时,由于状态指向无效状态,它返回 -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、购买详情、匹配请求对象的许可状态结果的响应对象,请求对象由getContentInfo
、getContentLicense
、getMemberProfile
、abandonLicense
方法返回。
许可请求
为了调用 License
API,您需要为许可资产创建 LicenseRequest
对象,为获取特定用户特定资产的许可信息,当用户取消许可操作时通知系统,以及获取特定用户的许可能力。
许可状态
资产的 Adobe Stock 许可状态。
-
许可状态类型
- 对于图像、照片或插图,您可以请求
Standard
- 许可完整分辨率的图像Standard_M
- 许可约 1600x1200 像素的中等大小图像Extended
- 完整分辨率的图像的扩展许可
- 对于视频,您可以请求
Video_HD
- 许可高清分辨率的视频Video_4K
- 许可 4K 分辨率的视频
- 对于矢量资产:
Standard
或Extended
- 对于 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对象,您可以从该对象调用getNextLicenseHistory
、getPreviousLicenseHistory
等以获取结果。AdobeStock
提供分页接口,允许您多次调用其方法(例如getNextLicenseHistory
、getPreviousLicenseHistory
等)以按顺序检索后续结果。它维护授权历史请求的当前状态,最初状态指向无效的授权历史文件结果。一旦调用getNextLicenseHistory
方法,它将进行授权历史API调用并返回带有LicenseHistoryResponse
对象的成果。getNextLicenseHistory
将状态移动到下一页并获取相同的结果响应。同样,可以使用getPreviousLicenseHistory
和getLicenseHistoryPage
方法向前移动一页或跳转到特定的授权历史页面索引。
实例化
您可以使用以下参数来构建该类的对象
-
需要
access_token
- Adobe IMS用户的访问令牌。request
- 由包含区域、结果列、搜索参数等的LicenseHistoryRequest
请求对象组成。
-
返回
- 包含与请求对象匹配的授权历史文件API结果的响应对象(
LicenseHistoryResponse
)。
- 包含与请求对象匹配的授权历史文件API结果的响应对象(
示例
初始化授权历史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
- 通过使用getNextLicenseHistory
、getPreviousLicenseHistory
或getLicenseHistoryPage
获取最近执行的授权历史API调用的响应对象。最初,此方法将返回null,因为状态指向无效状态且此时没有响应。 -
currentLicenseHistoryPageIndex
- 获取最近执行的getNextLicenseHistory
或getPreviousLicenseHistory
或getLicenseHistoryPage
方法中可用的 LicenseHistory 响应的当前搜索页码索引。初始时,由于状态指向无效状态,它返回 -1。 -
getTotalLicenseHistoryPages
- 获取最近执行的getNextLicenseHistory
或getPreviousLicenseHistory
或getLicenseHistoryPage
方法中可用的 LicenseHistory 页面的总数。初始时,由于状态指向无效状态,它返回 -1。 -
getTotalLicenseHistoryFiles
- 获取最近执行的getNextLicenseHistory
或getPreviousLicenseHistory
或getLicenseHistoryPage
方法中可用的 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
找到。
贡献
如果您想为该项目做出贡献,请查看我们的贡献指南。