|
|
@@ -0,0 +1,1260 @@
|
|
|
+<?php
|
|
|
+/**
|
|
|
+ * SearchApi
|
|
|
+ * PHP version 8.1
|
|
|
+ *
|
|
|
+ * @category Class
|
|
|
+ * @package WikipaliApi
|
|
|
+ * @author OpenAPI Generator team
|
|
|
+ * @link https://openapi-generator.tech
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * MINT API
|
|
|
+ *
|
|
|
+ * International Academy Of Pali Tipitaka(国际巴利三藏学院) 由 `php openapi/scripts/generate.php` 依据 api-v13 的路由与控制器源码生成。 响应统一封装为 `{ok, message, data}`;`ok=false` 时 `message` 为错误信息。
|
|
|
+ *
|
|
|
+ * The version of the OpenAPI document: 2026.9.28
|
|
|
+ * Generated by: https://openapi-generator.tech
|
|
|
+ * Generator version: 7.25.0
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
|
+ * https://openapi-generator.tech
|
|
|
+ * Do not edit the class manually.
|
|
|
+ */
|
|
|
+
|
|
|
+namespace WikipaliApi\Api;
|
|
|
+
|
|
|
+use GuzzleHttp\Client;
|
|
|
+use GuzzleHttp\ClientInterface;
|
|
|
+use GuzzleHttp\Exception\ConnectException;
|
|
|
+use GuzzleHttp\Exception\RequestException;
|
|
|
+use GuzzleHttp\Psr7\MultipartStream;
|
|
|
+use GuzzleHttp\Psr7\Request;
|
|
|
+use GuzzleHttp\RequestOptions;
|
|
|
+use Psr\Http\Message\RequestInterface;
|
|
|
+use Psr\Http\Message\ResponseInterface;
|
|
|
+use WikipaliApi\ApiException;
|
|
|
+use WikipaliApi\Configuration;
|
|
|
+use WikipaliApi\FormDataProcessor;
|
|
|
+use WikipaliApi\HeaderSelector;
|
|
|
+use WikipaliApi\ObjectSerializer;
|
|
|
+
|
|
|
+/**
|
|
|
+ * SearchApi Class Doc Comment
|
|
|
+ *
|
|
|
+ * @category Class
|
|
|
+ * @package WikipaliApi
|
|
|
+ * @author OpenAPI Generator team
|
|
|
+ * @link https://openapi-generator.tech
|
|
|
+ */
|
|
|
+class SearchApi
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * @var ClientInterface
|
|
|
+ */
|
|
|
+ protected $client;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @var Configuration
|
|
|
+ */
|
|
|
+ protected $config;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @var HeaderSelector
|
|
|
+ */
|
|
|
+ protected $headerSelector;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @var int Host index
|
|
|
+ */
|
|
|
+ protected $hostIndex;
|
|
|
+
|
|
|
+ /** @var string[] $contentTypes **/
|
|
|
+ public const contentTypes = [
|
|
|
+ 'getApiV3Search' => [
|
|
|
+ 'application/json',
|
|
|
+ ],
|
|
|
+ 'getApiV3SearchSearch' => [
|
|
|
+ 'application/json',
|
|
|
+ ],
|
|
|
+ 'postApiV3Search' => [
|
|
|
+ 'application/json',
|
|
|
+ ],
|
|
|
+ ];
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param ClientInterface $client
|
|
|
+ * @param Configuration $config
|
|
|
+ * @param HeaderSelector $selector
|
|
|
+ * @param int $hostIndex (Optional) host index to select the list of hosts if defined in the OpenAPI spec
|
|
|
+ */
|
|
|
+ public function __construct(
|
|
|
+ ?ClientInterface $client = null,
|
|
|
+ ?Configuration $config = null,
|
|
|
+ ?HeaderSelector $selector = null,
|
|
|
+ int $hostIndex = 0
|
|
|
+ ) {
|
|
|
+ $this->client = $client ?: new Client();
|
|
|
+ $this->config = $config ?: Configuration::getDefaultConfiguration();
|
|
|
+ $this->headerSelector = $selector ?: new HeaderSelector();
|
|
|
+ $this->hostIndex = $hostIndex;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Set the host index
|
|
|
+ *
|
|
|
+ * @param int $hostIndex Host index (required)
|
|
|
+ */
|
|
|
+ public function setHostIndex($hostIndex): void
|
|
|
+ {
|
|
|
+ $this->hostIndex = $hostIndex;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Get the host index
|
|
|
+ *
|
|
|
+ * @return int Host index
|
|
|
+ */
|
|
|
+ public function getHostIndex()
|
|
|
+ {
|
|
|
+ return $this->hostIndex;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return Configuration
|
|
|
+ */
|
|
|
+ public function getConfig()
|
|
|
+ {
|
|
|
+ return $this->config;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation getApiV3Search
|
|
|
+ *
|
|
|
+ * 全文检索
|
|
|
+ *
|
|
|
+ * @param string $q 搜索关键词 (required)
|
|
|
+ * @param int|null $page 页码 (optional, default to 1)
|
|
|
+ * @param int|null $page_size 每页数量,上限 100 (optional, default to 20)
|
|
|
+ * @param string|null $search_mode 检索模式 (optional, default to 'fuzzy')
|
|
|
+ * @param string|null $resource_type 资源类型 (optional)
|
|
|
+ * @param string|null $resource_id 限定某个资源 id (optional)
|
|
|
+ * @param string|null $granularity 文档颗粒度 (optional)
|
|
|
+ * @param string|null $language 语言 (optional)
|
|
|
+ * @param string|null $category 文档分类,逗号分隔 (optional)
|
|
|
+ * @param string|null $tags 标签过滤,逗号分隔 (optional)
|
|
|
+ * @param string[]|null $page_refs 页码标记 (optional)
|
|
|
+ * @param string[]|null $related_id 关联 id (optional)
|
|
|
+ * @param string|null $author 按作者或译者过滤 (optional)
|
|
|
+ * @param string|null $channel 按来源 channel 过滤 (optional)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getApiV3Search'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \WikipaliApi\ApiException on non-2xx response or if the response body is not in the expected format
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \WikipaliApi\Model\GetApiV3Search200Response|\WikipaliApi\Model\ProblemDetails
|
|
|
+ */
|
|
|
+ public function getApiV3Search($q, $page = 1, $page_size = 20, $search_mode = 'fuzzy', $resource_type = null, $resource_id = null, $granularity = null, $language = null, $category = null, $tags = null, $page_refs = null, $related_id = null, $author = null, $channel = null, string $contentType = self::contentTypes['getApiV3Search'][0])
|
|
|
+ {
|
|
|
+ list($response) = $this->getApiV3SearchWithHttpInfo($q, $page, $page_size, $search_mode, $resource_type, $resource_id, $granularity, $language, $category, $tags, $page_refs, $related_id, $author, $channel, $contentType);
|
|
|
+ return $response;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation getApiV3SearchWithHttpInfo
|
|
|
+ *
|
|
|
+ * 全文检索
|
|
|
+ *
|
|
|
+ * @param string $q 搜索关键词 (required)
|
|
|
+ * @param int|null $page 页码 (optional, default to 1)
|
|
|
+ * @param int|null $page_size 每页数量,上限 100 (optional, default to 20)
|
|
|
+ * @param string|null $search_mode 检索模式 (optional, default to 'fuzzy')
|
|
|
+ * @param string|null $resource_type 资源类型 (optional)
|
|
|
+ * @param string|null $resource_id 限定某个资源 id (optional)
|
|
|
+ * @param string|null $granularity 文档颗粒度 (optional)
|
|
|
+ * @param string|null $language 语言 (optional)
|
|
|
+ * @param string|null $category 文档分类,逗号分隔 (optional)
|
|
|
+ * @param string|null $tags 标签过滤,逗号分隔 (optional)
|
|
|
+ * @param string[]|null $page_refs 页码标记 (optional)
|
|
|
+ * @param string[]|null $related_id 关联 id (optional)
|
|
|
+ * @param string|null $author 按作者或译者过滤 (optional)
|
|
|
+ * @param string|null $channel 按来源 channel 过滤 (optional)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getApiV3Search'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \WikipaliApi\ApiException on non-2xx response or if the response body is not in the expected format
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return array of \WikipaliApi\Model\GetApiV3Search200Response|\WikipaliApi\Model\ProblemDetails, HTTP status code, HTTP response headers (array of strings)
|
|
|
+ */
|
|
|
+ public function getApiV3SearchWithHttpInfo($q, $page = 1, $page_size = 20, $search_mode = 'fuzzy', $resource_type = null, $resource_id = null, $granularity = null, $language = null, $category = null, $tags = null, $page_refs = null, $related_id = null, $author = null, $channel = null, string $contentType = self::contentTypes['getApiV3Search'][0])
|
|
|
+ {
|
|
|
+ $request = $this->getApiV3SearchRequest($q, $page, $page_size, $search_mode, $resource_type, $resource_id, $granularity, $language, $category, $tags, $page_refs, $related_id, $author, $channel, $contentType);
|
|
|
+
|
|
|
+ try {
|
|
|
+ $options = $this->createHttpClientOption();
|
|
|
+ try {
|
|
|
+ $response = $this->client->send($request, $options);
|
|
|
+ } catch (RequestException $e) {
|
|
|
+ throw new ApiException(
|
|
|
+ "[{$e->getCode()}] {$e->getMessage()}",
|
|
|
+ (int) $e->getCode(),
|
|
|
+ $e->getResponse() ? $e->getResponse()->getHeaders() : null,
|
|
|
+ $e->getResponse() ? (string) $e->getResponse()->getBody() : null
|
|
|
+ );
|
|
|
+ } catch (ConnectException $e) {
|
|
|
+ throw new ApiException(
|
|
|
+ "[{$e->getCode()}] {$e->getMessage()}",
|
|
|
+ (int) $e->getCode(),
|
|
|
+ null,
|
|
|
+ null
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ $statusCode = $response->getStatusCode();
|
|
|
+
|
|
|
+
|
|
|
+ switch($statusCode) {
|
|
|
+ case 200:
|
|
|
+ return $this->handleResponseWithDataType(
|
|
|
+ '\WikipaliApi\Model\GetApiV3Search200Response',
|
|
|
+ $request,
|
|
|
+ $response,
|
|
|
+ );
|
|
|
+ case 422:
|
|
|
+ return $this->handleResponseWithDataType(
|
|
|
+ '\WikipaliApi\Model\ProblemDetails',
|
|
|
+ $request,
|
|
|
+ $response,
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if ($statusCode < 200 || $statusCode > 299) {
|
|
|
+ throw new ApiException(
|
|
|
+ sprintf(
|
|
|
+ '[%d] Error connecting to the API (%s)',
|
|
|
+ $statusCode,
|
|
|
+ (string) $request->getUri()
|
|
|
+ ),
|
|
|
+ $statusCode,
|
|
|
+ $response->getHeaders(),
|
|
|
+ (string) $response->getBody()
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ return $this->handleResponseWithDataType(
|
|
|
+ '\WikipaliApi\Model\GetApiV3Search200Response',
|
|
|
+ $request,
|
|
|
+ $response,
|
|
|
+ );
|
|
|
+ } catch (ApiException $e) {
|
|
|
+ switch ($e->getCode()) {
|
|
|
+ case 200:
|
|
|
+ $data = ObjectSerializer::deserialize(
|
|
|
+ $e->getResponseBody(),
|
|
|
+ '\WikipaliApi\Model\GetApiV3Search200Response',
|
|
|
+ $e->getResponseHeaders()
|
|
|
+ );
|
|
|
+ $e->setResponseObject($data);
|
|
|
+ throw $e;
|
|
|
+ case 422:
|
|
|
+ $data = ObjectSerializer::deserialize(
|
|
|
+ $e->getResponseBody(),
|
|
|
+ '\WikipaliApi\Model\ProblemDetails',
|
|
|
+ $e->getResponseHeaders()
|
|
|
+ );
|
|
|
+ $e->setResponseObject($data);
|
|
|
+ throw $e;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ throw $e;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation getApiV3SearchAsync
|
|
|
+ *
|
|
|
+ * 全文检索
|
|
|
+ *
|
|
|
+ * @param string $q 搜索关键词 (required)
|
|
|
+ * @param int|null $page 页码 (optional, default to 1)
|
|
|
+ * @param int|null $page_size 每页数量,上限 100 (optional, default to 20)
|
|
|
+ * @param string|null $search_mode 检索模式 (optional, default to 'fuzzy')
|
|
|
+ * @param string|null $resource_type 资源类型 (optional)
|
|
|
+ * @param string|null $resource_id 限定某个资源 id (optional)
|
|
|
+ * @param string|null $granularity 文档颗粒度 (optional)
|
|
|
+ * @param string|null $language 语言 (optional)
|
|
|
+ * @param string|null $category 文档分类,逗号分隔 (optional)
|
|
|
+ * @param string|null $tags 标签过滤,逗号分隔 (optional)
|
|
|
+ * @param string[]|null $page_refs 页码标记 (optional)
|
|
|
+ * @param string[]|null $related_id 关联 id (optional)
|
|
|
+ * @param string|null $author 按作者或译者过滤 (optional)
|
|
|
+ * @param string|null $channel 按来源 channel 过滤 (optional)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getApiV3Search'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \GuzzleHttp\Promise\PromiseInterface
|
|
|
+ */
|
|
|
+ public function getApiV3SearchAsync($q, $page = 1, $page_size = 20, $search_mode = 'fuzzy', $resource_type = null, $resource_id = null, $granularity = null, $language = null, $category = null, $tags = null, $page_refs = null, $related_id = null, $author = null, $channel = null, string $contentType = self::contentTypes['getApiV3Search'][0])
|
|
|
+ {
|
|
|
+ return $this->getApiV3SearchAsyncWithHttpInfo($q, $page, $page_size, $search_mode, $resource_type, $resource_id, $granularity, $language, $category, $tags, $page_refs, $related_id, $author, $channel, $contentType)
|
|
|
+ ->then(
|
|
|
+ function ($response) {
|
|
|
+ return $response[0];
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation getApiV3SearchAsyncWithHttpInfo
|
|
|
+ *
|
|
|
+ * 全文检索
|
|
|
+ *
|
|
|
+ * @param string $q 搜索关键词 (required)
|
|
|
+ * @param int|null $page 页码 (optional, default to 1)
|
|
|
+ * @param int|null $page_size 每页数量,上限 100 (optional, default to 20)
|
|
|
+ * @param string|null $search_mode 检索模式 (optional, default to 'fuzzy')
|
|
|
+ * @param string|null $resource_type 资源类型 (optional)
|
|
|
+ * @param string|null $resource_id 限定某个资源 id (optional)
|
|
|
+ * @param string|null $granularity 文档颗粒度 (optional)
|
|
|
+ * @param string|null $language 语言 (optional)
|
|
|
+ * @param string|null $category 文档分类,逗号分隔 (optional)
|
|
|
+ * @param string|null $tags 标签过滤,逗号分隔 (optional)
|
|
|
+ * @param string[]|null $page_refs 页码标记 (optional)
|
|
|
+ * @param string[]|null $related_id 关联 id (optional)
|
|
|
+ * @param string|null $author 按作者或译者过滤 (optional)
|
|
|
+ * @param string|null $channel 按来源 channel 过滤 (optional)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getApiV3Search'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \GuzzleHttp\Promise\PromiseInterface
|
|
|
+ */
|
|
|
+ public function getApiV3SearchAsyncWithHttpInfo($q, $page = 1, $page_size = 20, $search_mode = 'fuzzy', $resource_type = null, $resource_id = null, $granularity = null, $language = null, $category = null, $tags = null, $page_refs = null, $related_id = null, $author = null, $channel = null, string $contentType = self::contentTypes['getApiV3Search'][0])
|
|
|
+ {
|
|
|
+ $returnType = '\WikipaliApi\Model\GetApiV3Search200Response';
|
|
|
+ $request = $this->getApiV3SearchRequest($q, $page, $page_size, $search_mode, $resource_type, $resource_id, $granularity, $language, $category, $tags, $page_refs, $related_id, $author, $channel, $contentType);
|
|
|
+
|
|
|
+ return $this->client
|
|
|
+ ->sendAsync($request, $this->createHttpClientOption())
|
|
|
+ ->then(
|
|
|
+ function ($response) use ($returnType) {
|
|
|
+ if ($returnType === '\SplFileObject') {
|
|
|
+ $content = $response->getBody(); //stream goes to serializer
|
|
|
+ } else {
|
|
|
+ $content = (string) $response->getBody();
|
|
|
+ if ($returnType !== 'string') {
|
|
|
+ $content = json_decode($content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return [
|
|
|
+ ObjectSerializer::deserialize($content, $returnType, []),
|
|
|
+ $response->getStatusCode(),
|
|
|
+ $response->getHeaders()
|
|
|
+ ];
|
|
|
+ },
|
|
|
+ function ($exception) {
|
|
|
+ $response = $exception->getResponse();
|
|
|
+ $statusCode = $response->getStatusCode();
|
|
|
+ throw new ApiException(
|
|
|
+ sprintf(
|
|
|
+ '[%d] Error connecting to the API (%s)',
|
|
|
+ $statusCode,
|
|
|
+ $exception->getRequest()->getUri()
|
|
|
+ ),
|
|
|
+ $statusCode,
|
|
|
+ $response->getHeaders(),
|
|
|
+ (string) $response->getBody()
|
|
|
+ );
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Create request for operation 'getApiV3Search'
|
|
|
+ *
|
|
|
+ * @param string $q 搜索关键词 (required)
|
|
|
+ * @param int|null $page 页码 (optional, default to 1)
|
|
|
+ * @param int|null $page_size 每页数量,上限 100 (optional, default to 20)
|
|
|
+ * @param string|null $search_mode 检索模式 (optional, default to 'fuzzy')
|
|
|
+ * @param string|null $resource_type 资源类型 (optional)
|
|
|
+ * @param string|null $resource_id 限定某个资源 id (optional)
|
|
|
+ * @param string|null $granularity 文档颗粒度 (optional)
|
|
|
+ * @param string|null $language 语言 (optional)
|
|
|
+ * @param string|null $category 文档分类,逗号分隔 (optional)
|
|
|
+ * @param string|null $tags 标签过滤,逗号分隔 (optional)
|
|
|
+ * @param string[]|null $page_refs 页码标记 (optional)
|
|
|
+ * @param string[]|null $related_id 关联 id (optional)
|
|
|
+ * @param string|null $author 按作者或译者过滤 (optional)
|
|
|
+ * @param string|null $channel 按来源 channel 过滤 (optional)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getApiV3Search'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \GuzzleHttp\Psr7\Request
|
|
|
+ */
|
|
|
+ public function getApiV3SearchRequest($q, $page = 1, $page_size = 20, $search_mode = 'fuzzy', $resource_type = null, $resource_id = null, $granularity = null, $language = null, $category = null, $tags = null, $page_refs = null, $related_id = null, $author = null, $channel = null, string $contentType = self::contentTypes['getApiV3Search'][0])
|
|
|
+ {
|
|
|
+
|
|
|
+ // verify the required parameter 'q' is set
|
|
|
+ if ($q === null || (is_array($q) && count($q) === 0)) {
|
|
|
+ throw new \InvalidArgumentException(
|
|
|
+ 'Missing the required parameter $q when calling getApiV3Search'
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $resourcePath = '/v3/search';
|
|
|
+ $formParams = [];
|
|
|
+ $queryParams = [];
|
|
|
+ $headerParams = [];
|
|
|
+ $httpBody = '';
|
|
|
+ $multipart = false;
|
|
|
+
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $q,
|
|
|
+ 'q', // param base name
|
|
|
+ 'string', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ true // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $page,
|
|
|
+ 'page', // param base name
|
|
|
+ 'integer', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $page_size,
|
|
|
+ 'page_size', // param base name
|
|
|
+ 'integer', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $search_mode,
|
|
|
+ 'search_mode', // param base name
|
|
|
+ 'string', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $resource_type,
|
|
|
+ 'resource_type', // param base name
|
|
|
+ 'string', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $resource_id,
|
|
|
+ 'resource_id', // param base name
|
|
|
+ 'string', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $granularity,
|
|
|
+ 'granularity', // param base name
|
|
|
+ 'string', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $language,
|
|
|
+ 'language', // param base name
|
|
|
+ 'string', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $category,
|
|
|
+ 'category', // param base name
|
|
|
+ 'string', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $tags,
|
|
|
+ 'tags', // param base name
|
|
|
+ 'string', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $page_refs,
|
|
|
+ 'page_refs', // param base name
|
|
|
+ 'array', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $related_id,
|
|
|
+ 'related_id', // param base name
|
|
|
+ 'array', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $author,
|
|
|
+ 'author', // param base name
|
|
|
+ 'string', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+ // query params
|
|
|
+ $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue(
|
|
|
+ $channel,
|
|
|
+ 'channel', // param base name
|
|
|
+ 'string', // openApiType
|
|
|
+ 'form', // style
|
|
|
+ true, // explode
|
|
|
+ false // required
|
|
|
+ ) ?? []);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $headers = $this->headerSelector->selectHeaders(
|
|
|
+ ['application/json', 'application/problem+json', ],
|
|
|
+ $contentType,
|
|
|
+ $multipart
|
|
|
+ );
|
|
|
+
|
|
|
+ // for model (json/xml)
|
|
|
+ if (count($formParams) > 0) {
|
|
|
+ if ($multipart) {
|
|
|
+ $multipartContents = [];
|
|
|
+ foreach ($formParams as $formParamName => $formParamValue) {
|
|
|
+ $formParamValueItems = is_array($formParamValue) ? $formParamValue : [$formParamValue];
|
|
|
+ foreach ($formParamValueItems as $formParamValueItem) {
|
|
|
+ $multipartContents[] = [
|
|
|
+ 'name' => $formParamName,
|
|
|
+ 'contents' => $formParamValueItem
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // for HTTP post (form)
|
|
|
+ $httpBody = new MultipartStream($multipartContents);
|
|
|
+
|
|
|
+ } elseif (stripos($headers['Content-Type'], 'application/json') !== false) {
|
|
|
+ # if Content-Type contains "application/json", json_encode the form parameters
|
|
|
+ try {
|
|
|
+ $httpBody = json_encode($formParams, JSON_THROW_ON_ERROR);
|
|
|
+ } catch (\JsonException $e) {
|
|
|
+ throw new \InvalidArgumentException('json_encode error: ' . $e->getMessage(), 0, $e);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // for HTTP post (form)
|
|
|
+ $httpBody = ObjectSerializer::buildQuery($formParams);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $defaultHeaders = [];
|
|
|
+ if ($this->config->getUserAgent()) {
|
|
|
+ $defaultHeaders['User-Agent'] = $this->config->getUserAgent();
|
|
|
+ }
|
|
|
+
|
|
|
+ $headers = array_merge(
|
|
|
+ $defaultHeaders,
|
|
|
+ $headerParams,
|
|
|
+ $headers
|
|
|
+ );
|
|
|
+
|
|
|
+ $operationHost = $this->config->getHost();
|
|
|
+ $query = ObjectSerializer::buildQuery($queryParams);
|
|
|
+ return new Request(
|
|
|
+ 'GET',
|
|
|
+ $operationHost . $resourcePath . ($query ? "?{$query}" : ''),
|
|
|
+ $headers,
|
|
|
+ $httpBody
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation getApiV3SearchSearch
|
|
|
+ *
|
|
|
+ * 按 id 取单条检索结果
|
|
|
+ *
|
|
|
+ * @param string $search OpenSearch 文档 id (required)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getApiV3SearchSearch'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \WikipaliApi\ApiException on non-2xx response or if the response body is not in the expected format
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \WikipaliApi\Model\GetApiV3SearchSearch200Response|\WikipaliApi\Model\ProblemDetails
|
|
|
+ */
|
|
|
+ public function getApiV3SearchSearch($search, string $contentType = self::contentTypes['getApiV3SearchSearch'][0])
|
|
|
+ {
|
|
|
+ list($response) = $this->getApiV3SearchSearchWithHttpInfo($search, $contentType);
|
|
|
+ return $response;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation getApiV3SearchSearchWithHttpInfo
|
|
|
+ *
|
|
|
+ * 按 id 取单条检索结果
|
|
|
+ *
|
|
|
+ * @param string $search OpenSearch 文档 id (required)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getApiV3SearchSearch'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \WikipaliApi\ApiException on non-2xx response or if the response body is not in the expected format
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return array of \WikipaliApi\Model\GetApiV3SearchSearch200Response|\WikipaliApi\Model\ProblemDetails, HTTP status code, HTTP response headers (array of strings)
|
|
|
+ */
|
|
|
+ public function getApiV3SearchSearchWithHttpInfo($search, string $contentType = self::contentTypes['getApiV3SearchSearch'][0])
|
|
|
+ {
|
|
|
+ $request = $this->getApiV3SearchSearchRequest($search, $contentType);
|
|
|
+
|
|
|
+ try {
|
|
|
+ $options = $this->createHttpClientOption();
|
|
|
+ try {
|
|
|
+ $response = $this->client->send($request, $options);
|
|
|
+ } catch (RequestException $e) {
|
|
|
+ throw new ApiException(
|
|
|
+ "[{$e->getCode()}] {$e->getMessage()}",
|
|
|
+ (int) $e->getCode(),
|
|
|
+ $e->getResponse() ? $e->getResponse()->getHeaders() : null,
|
|
|
+ $e->getResponse() ? (string) $e->getResponse()->getBody() : null
|
|
|
+ );
|
|
|
+ } catch (ConnectException $e) {
|
|
|
+ throw new ApiException(
|
|
|
+ "[{$e->getCode()}] {$e->getMessage()}",
|
|
|
+ (int) $e->getCode(),
|
|
|
+ null,
|
|
|
+ null
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ $statusCode = $response->getStatusCode();
|
|
|
+
|
|
|
+
|
|
|
+ switch($statusCode) {
|
|
|
+ case 200:
|
|
|
+ return $this->handleResponseWithDataType(
|
|
|
+ '\WikipaliApi\Model\GetApiV3SearchSearch200Response',
|
|
|
+ $request,
|
|
|
+ $response,
|
|
|
+ );
|
|
|
+ case 422:
|
|
|
+ return $this->handleResponseWithDataType(
|
|
|
+ '\WikipaliApi\Model\ProblemDetails',
|
|
|
+ $request,
|
|
|
+ $response,
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if ($statusCode < 200 || $statusCode > 299) {
|
|
|
+ throw new ApiException(
|
|
|
+ sprintf(
|
|
|
+ '[%d] Error connecting to the API (%s)',
|
|
|
+ $statusCode,
|
|
|
+ (string) $request->getUri()
|
|
|
+ ),
|
|
|
+ $statusCode,
|
|
|
+ $response->getHeaders(),
|
|
|
+ (string) $response->getBody()
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ return $this->handleResponseWithDataType(
|
|
|
+ '\WikipaliApi\Model\GetApiV3SearchSearch200Response',
|
|
|
+ $request,
|
|
|
+ $response,
|
|
|
+ );
|
|
|
+ } catch (ApiException $e) {
|
|
|
+ switch ($e->getCode()) {
|
|
|
+ case 200:
|
|
|
+ $data = ObjectSerializer::deserialize(
|
|
|
+ $e->getResponseBody(),
|
|
|
+ '\WikipaliApi\Model\GetApiV3SearchSearch200Response',
|
|
|
+ $e->getResponseHeaders()
|
|
|
+ );
|
|
|
+ $e->setResponseObject($data);
|
|
|
+ throw $e;
|
|
|
+ case 422:
|
|
|
+ $data = ObjectSerializer::deserialize(
|
|
|
+ $e->getResponseBody(),
|
|
|
+ '\WikipaliApi\Model\ProblemDetails',
|
|
|
+ $e->getResponseHeaders()
|
|
|
+ );
|
|
|
+ $e->setResponseObject($data);
|
|
|
+ throw $e;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ throw $e;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation getApiV3SearchSearchAsync
|
|
|
+ *
|
|
|
+ * 按 id 取单条检索结果
|
|
|
+ *
|
|
|
+ * @param string $search OpenSearch 文档 id (required)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getApiV3SearchSearch'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \GuzzleHttp\Promise\PromiseInterface
|
|
|
+ */
|
|
|
+ public function getApiV3SearchSearchAsync($search, string $contentType = self::contentTypes['getApiV3SearchSearch'][0])
|
|
|
+ {
|
|
|
+ return $this->getApiV3SearchSearchAsyncWithHttpInfo($search, $contentType)
|
|
|
+ ->then(
|
|
|
+ function ($response) {
|
|
|
+ return $response[0];
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation getApiV3SearchSearchAsyncWithHttpInfo
|
|
|
+ *
|
|
|
+ * 按 id 取单条检索结果
|
|
|
+ *
|
|
|
+ * @param string $search OpenSearch 文档 id (required)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getApiV3SearchSearch'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \GuzzleHttp\Promise\PromiseInterface
|
|
|
+ */
|
|
|
+ public function getApiV3SearchSearchAsyncWithHttpInfo($search, string $contentType = self::contentTypes['getApiV3SearchSearch'][0])
|
|
|
+ {
|
|
|
+ $returnType = '\WikipaliApi\Model\GetApiV3SearchSearch200Response';
|
|
|
+ $request = $this->getApiV3SearchSearchRequest($search, $contentType);
|
|
|
+
|
|
|
+ return $this->client
|
|
|
+ ->sendAsync($request, $this->createHttpClientOption())
|
|
|
+ ->then(
|
|
|
+ function ($response) use ($returnType) {
|
|
|
+ if ($returnType === '\SplFileObject') {
|
|
|
+ $content = $response->getBody(); //stream goes to serializer
|
|
|
+ } else {
|
|
|
+ $content = (string) $response->getBody();
|
|
|
+ if ($returnType !== 'string') {
|
|
|
+ $content = json_decode($content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return [
|
|
|
+ ObjectSerializer::deserialize($content, $returnType, []),
|
|
|
+ $response->getStatusCode(),
|
|
|
+ $response->getHeaders()
|
|
|
+ ];
|
|
|
+ },
|
|
|
+ function ($exception) {
|
|
|
+ $response = $exception->getResponse();
|
|
|
+ $statusCode = $response->getStatusCode();
|
|
|
+ throw new ApiException(
|
|
|
+ sprintf(
|
|
|
+ '[%d] Error connecting to the API (%s)',
|
|
|
+ $statusCode,
|
|
|
+ $exception->getRequest()->getUri()
|
|
|
+ ),
|
|
|
+ $statusCode,
|
|
|
+ $response->getHeaders(),
|
|
|
+ (string) $response->getBody()
|
|
|
+ );
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Create request for operation 'getApiV3SearchSearch'
|
|
|
+ *
|
|
|
+ * @param string $search OpenSearch 文档 id (required)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getApiV3SearchSearch'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \GuzzleHttp\Psr7\Request
|
|
|
+ */
|
|
|
+ public function getApiV3SearchSearchRequest($search, string $contentType = self::contentTypes['getApiV3SearchSearch'][0])
|
|
|
+ {
|
|
|
+
|
|
|
+ // verify the required parameter 'search' is set
|
|
|
+ if ($search === null || (is_array($search) && count($search) === 0)) {
|
|
|
+ throw new \InvalidArgumentException(
|
|
|
+ 'Missing the required parameter $search when calling getApiV3SearchSearch'
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $resourcePath = '/v3/search/{search}';
|
|
|
+ $formParams = [];
|
|
|
+ $queryParams = [];
|
|
|
+ $headerParams = [];
|
|
|
+ $httpBody = '';
|
|
|
+ $multipart = false;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // path params
|
|
|
+ if ($search !== null) {
|
|
|
+ $resourcePath = str_replace(
|
|
|
+ '{search}',
|
|
|
+ ObjectSerializer::toPathValue($search),
|
|
|
+ $resourcePath
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $headers = $this->headerSelector->selectHeaders(
|
|
|
+ ['application/json', 'application/problem+json', ],
|
|
|
+ $contentType,
|
|
|
+ $multipart
|
|
|
+ );
|
|
|
+
|
|
|
+ // for model (json/xml)
|
|
|
+ if (count($formParams) > 0) {
|
|
|
+ if ($multipart) {
|
|
|
+ $multipartContents = [];
|
|
|
+ foreach ($formParams as $formParamName => $formParamValue) {
|
|
|
+ $formParamValueItems = is_array($formParamValue) ? $formParamValue : [$formParamValue];
|
|
|
+ foreach ($formParamValueItems as $formParamValueItem) {
|
|
|
+ $multipartContents[] = [
|
|
|
+ 'name' => $formParamName,
|
|
|
+ 'contents' => $formParamValueItem
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // for HTTP post (form)
|
|
|
+ $httpBody = new MultipartStream($multipartContents);
|
|
|
+
|
|
|
+ } elseif (stripos($headers['Content-Type'], 'application/json') !== false) {
|
|
|
+ # if Content-Type contains "application/json", json_encode the form parameters
|
|
|
+ try {
|
|
|
+ $httpBody = json_encode($formParams, JSON_THROW_ON_ERROR);
|
|
|
+ } catch (\JsonException $e) {
|
|
|
+ throw new \InvalidArgumentException('json_encode error: ' . $e->getMessage(), 0, $e);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // for HTTP post (form)
|
|
|
+ $httpBody = ObjectSerializer::buildQuery($formParams);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $defaultHeaders = [];
|
|
|
+ if ($this->config->getUserAgent()) {
|
|
|
+ $defaultHeaders['User-Agent'] = $this->config->getUserAgent();
|
|
|
+ }
|
|
|
+
|
|
|
+ $headers = array_merge(
|
|
|
+ $defaultHeaders,
|
|
|
+ $headerParams,
|
|
|
+ $headers
|
|
|
+ );
|
|
|
+
|
|
|
+ $operationHost = $this->config->getHost();
|
|
|
+ $query = ObjectSerializer::buildQuery($queryParams);
|
|
|
+ return new Request(
|
|
|
+ 'GET',
|
|
|
+ $operationHost . $resourcePath . ($query ? "?{$query}" : ''),
|
|
|
+ $headers,
|
|
|
+ $httpBody
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation postApiV3Search
|
|
|
+ *
|
|
|
+ * 全文检索(POST)
|
|
|
+ *
|
|
|
+ * @param \WikipaliApi\Model\PostApiV3SearchRequest $post_api_v3_search_request post_api_v3_search_request (required)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['postApiV3Search'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \WikipaliApi\ApiException on non-2xx response or if the response body is not in the expected format
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \WikipaliApi\Model\GetApiV3Search200Response|\WikipaliApi\Model\ProblemDetails
|
|
|
+ */
|
|
|
+ public function postApiV3Search($post_api_v3_search_request, string $contentType = self::contentTypes['postApiV3Search'][0])
|
|
|
+ {
|
|
|
+ list($response) = $this->postApiV3SearchWithHttpInfo($post_api_v3_search_request, $contentType);
|
|
|
+ return $response;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation postApiV3SearchWithHttpInfo
|
|
|
+ *
|
|
|
+ * 全文检索(POST)
|
|
|
+ *
|
|
|
+ * @param \WikipaliApi\Model\PostApiV3SearchRequest $post_api_v3_search_request (required)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['postApiV3Search'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \WikipaliApi\ApiException on non-2xx response or if the response body is not in the expected format
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return array of \WikipaliApi\Model\GetApiV3Search200Response|\WikipaliApi\Model\ProblemDetails, HTTP status code, HTTP response headers (array of strings)
|
|
|
+ */
|
|
|
+ public function postApiV3SearchWithHttpInfo($post_api_v3_search_request, string $contentType = self::contentTypes['postApiV3Search'][0])
|
|
|
+ {
|
|
|
+ $request = $this->postApiV3SearchRequest($post_api_v3_search_request, $contentType);
|
|
|
+
|
|
|
+ try {
|
|
|
+ $options = $this->createHttpClientOption();
|
|
|
+ try {
|
|
|
+ $response = $this->client->send($request, $options);
|
|
|
+ } catch (RequestException $e) {
|
|
|
+ throw new ApiException(
|
|
|
+ "[{$e->getCode()}] {$e->getMessage()}",
|
|
|
+ (int) $e->getCode(),
|
|
|
+ $e->getResponse() ? $e->getResponse()->getHeaders() : null,
|
|
|
+ $e->getResponse() ? (string) $e->getResponse()->getBody() : null
|
|
|
+ );
|
|
|
+ } catch (ConnectException $e) {
|
|
|
+ throw new ApiException(
|
|
|
+ "[{$e->getCode()}] {$e->getMessage()}",
|
|
|
+ (int) $e->getCode(),
|
|
|
+ null,
|
|
|
+ null
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ $statusCode = $response->getStatusCode();
|
|
|
+
|
|
|
+
|
|
|
+ switch($statusCode) {
|
|
|
+ case 200:
|
|
|
+ return $this->handleResponseWithDataType(
|
|
|
+ '\WikipaliApi\Model\GetApiV3Search200Response',
|
|
|
+ $request,
|
|
|
+ $response,
|
|
|
+ );
|
|
|
+ case 422:
|
|
|
+ return $this->handleResponseWithDataType(
|
|
|
+ '\WikipaliApi\Model\ProblemDetails',
|
|
|
+ $request,
|
|
|
+ $response,
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if ($statusCode < 200 || $statusCode > 299) {
|
|
|
+ throw new ApiException(
|
|
|
+ sprintf(
|
|
|
+ '[%d] Error connecting to the API (%s)',
|
|
|
+ $statusCode,
|
|
|
+ (string) $request->getUri()
|
|
|
+ ),
|
|
|
+ $statusCode,
|
|
|
+ $response->getHeaders(),
|
|
|
+ (string) $response->getBody()
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ return $this->handleResponseWithDataType(
|
|
|
+ '\WikipaliApi\Model\GetApiV3Search200Response',
|
|
|
+ $request,
|
|
|
+ $response,
|
|
|
+ );
|
|
|
+ } catch (ApiException $e) {
|
|
|
+ switch ($e->getCode()) {
|
|
|
+ case 200:
|
|
|
+ $data = ObjectSerializer::deserialize(
|
|
|
+ $e->getResponseBody(),
|
|
|
+ '\WikipaliApi\Model\GetApiV3Search200Response',
|
|
|
+ $e->getResponseHeaders()
|
|
|
+ );
|
|
|
+ $e->setResponseObject($data);
|
|
|
+ throw $e;
|
|
|
+ case 422:
|
|
|
+ $data = ObjectSerializer::deserialize(
|
|
|
+ $e->getResponseBody(),
|
|
|
+ '\WikipaliApi\Model\ProblemDetails',
|
|
|
+ $e->getResponseHeaders()
|
|
|
+ );
|
|
|
+ $e->setResponseObject($data);
|
|
|
+ throw $e;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ throw $e;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation postApiV3SearchAsync
|
|
|
+ *
|
|
|
+ * 全文检索(POST)
|
|
|
+ *
|
|
|
+ * @param \WikipaliApi\Model\PostApiV3SearchRequest $post_api_v3_search_request (required)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['postApiV3Search'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \GuzzleHttp\Promise\PromiseInterface
|
|
|
+ */
|
|
|
+ public function postApiV3SearchAsync($post_api_v3_search_request, string $contentType = self::contentTypes['postApiV3Search'][0])
|
|
|
+ {
|
|
|
+ return $this->postApiV3SearchAsyncWithHttpInfo($post_api_v3_search_request, $contentType)
|
|
|
+ ->then(
|
|
|
+ function ($response) {
|
|
|
+ return $response[0];
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Operation postApiV3SearchAsyncWithHttpInfo
|
|
|
+ *
|
|
|
+ * 全文检索(POST)
|
|
|
+ *
|
|
|
+ * @param \WikipaliApi\Model\PostApiV3SearchRequest $post_api_v3_search_request (required)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['postApiV3Search'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \GuzzleHttp\Promise\PromiseInterface
|
|
|
+ */
|
|
|
+ public function postApiV3SearchAsyncWithHttpInfo($post_api_v3_search_request, string $contentType = self::contentTypes['postApiV3Search'][0])
|
|
|
+ {
|
|
|
+ $returnType = '\WikipaliApi\Model\GetApiV3Search200Response';
|
|
|
+ $request = $this->postApiV3SearchRequest($post_api_v3_search_request, $contentType);
|
|
|
+
|
|
|
+ return $this->client
|
|
|
+ ->sendAsync($request, $this->createHttpClientOption())
|
|
|
+ ->then(
|
|
|
+ function ($response) use ($returnType) {
|
|
|
+ if ($returnType === '\SplFileObject') {
|
|
|
+ $content = $response->getBody(); //stream goes to serializer
|
|
|
+ } else {
|
|
|
+ $content = (string) $response->getBody();
|
|
|
+ if ($returnType !== 'string') {
|
|
|
+ $content = json_decode($content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return [
|
|
|
+ ObjectSerializer::deserialize($content, $returnType, []),
|
|
|
+ $response->getStatusCode(),
|
|
|
+ $response->getHeaders()
|
|
|
+ ];
|
|
|
+ },
|
|
|
+ function ($exception) {
|
|
|
+ $response = $exception->getResponse();
|
|
|
+ $statusCode = $response->getStatusCode();
|
|
|
+ throw new ApiException(
|
|
|
+ sprintf(
|
|
|
+ '[%d] Error connecting to the API (%s)',
|
|
|
+ $statusCode,
|
|
|
+ $exception->getRequest()->getUri()
|
|
|
+ ),
|
|
|
+ $statusCode,
|
|
|
+ $response->getHeaders(),
|
|
|
+ (string) $response->getBody()
|
|
|
+ );
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Create request for operation 'postApiV3Search'
|
|
|
+ *
|
|
|
+ * @param \WikipaliApi\Model\PostApiV3SearchRequest $post_api_v3_search_request (required)
|
|
|
+ * @param string $contentType The value for the Content-Type header. Check self::contentTypes['postApiV3Search'] to see the possible values for this operation
|
|
|
+ *
|
|
|
+ * @throws \InvalidArgumentException
|
|
|
+ * @return \GuzzleHttp\Psr7\Request
|
|
|
+ */
|
|
|
+ public function postApiV3SearchRequest($post_api_v3_search_request, string $contentType = self::contentTypes['postApiV3Search'][0])
|
|
|
+ {
|
|
|
+
|
|
|
+ // verify the required parameter 'post_api_v3_search_request' is set
|
|
|
+ if ($post_api_v3_search_request === null || (is_array($post_api_v3_search_request) && count($post_api_v3_search_request) === 0)) {
|
|
|
+ throw new \InvalidArgumentException(
|
|
|
+ 'Missing the required parameter $post_api_v3_search_request when calling postApiV3Search'
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $resourcePath = '/v3/search';
|
|
|
+ $formParams = [];
|
|
|
+ $queryParams = [];
|
|
|
+ $headerParams = [];
|
|
|
+ $httpBody = '';
|
|
|
+ $multipart = false;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $headers = $this->headerSelector->selectHeaders(
|
|
|
+ ['application/json', 'application/problem+json', ],
|
|
|
+ $contentType,
|
|
|
+ $multipart
|
|
|
+ );
|
|
|
+
|
|
|
+ // for model (json/xml)
|
|
|
+ if (isset($post_api_v3_search_request)) {
|
|
|
+ if (stripos($headers['Content-Type'], 'application/json') !== false) {
|
|
|
+ # if Content-Type contains "application/json", json_encode the body
|
|
|
+ try {
|
|
|
+ $httpBody = json_encode(ObjectSerializer::sanitizeForSerialization($post_api_v3_search_request), JSON_THROW_ON_ERROR);
|
|
|
+ } catch (\JsonException $e) {
|
|
|
+ throw new \InvalidArgumentException('json_encode error: ' . $e->getMessage(), 0, $e);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $httpBody = $post_api_v3_search_request;
|
|
|
+ }
|
|
|
+ } elseif (count($formParams) > 0) {
|
|
|
+ if ($multipart) {
|
|
|
+ $multipartContents = [];
|
|
|
+ foreach ($formParams as $formParamName => $formParamValue) {
|
|
|
+ $formParamValueItems = is_array($formParamValue) ? $formParamValue : [$formParamValue];
|
|
|
+ foreach ($formParamValueItems as $formParamValueItem) {
|
|
|
+ $multipartContents[] = [
|
|
|
+ 'name' => $formParamName,
|
|
|
+ 'contents' => $formParamValueItem
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // for HTTP post (form)
|
|
|
+ $httpBody = new MultipartStream($multipartContents);
|
|
|
+
|
|
|
+ } elseif (stripos($headers['Content-Type'], 'application/json') !== false) {
|
|
|
+ # if Content-Type contains "application/json", json_encode the form parameters
|
|
|
+ try {
|
|
|
+ $httpBody = json_encode($formParams, JSON_THROW_ON_ERROR);
|
|
|
+ } catch (\JsonException $e) {
|
|
|
+ throw new \InvalidArgumentException('json_encode error: ' . $e->getMessage(), 0, $e);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // for HTTP post (form)
|
|
|
+ $httpBody = ObjectSerializer::buildQuery($formParams);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $defaultHeaders = [];
|
|
|
+ if ($this->config->getUserAgent()) {
|
|
|
+ $defaultHeaders['User-Agent'] = $this->config->getUserAgent();
|
|
|
+ }
|
|
|
+
|
|
|
+ $headers = array_merge(
|
|
|
+ $defaultHeaders,
|
|
|
+ $headerParams,
|
|
|
+ $headers
|
|
|
+ );
|
|
|
+
|
|
|
+ $operationHost = $this->config->getHost();
|
|
|
+ $query = ObjectSerializer::buildQuery($queryParams);
|
|
|
+ return new Request(
|
|
|
+ 'POST',
|
|
|
+ $operationHost . $resourcePath . ($query ? "?{$query}" : ''),
|
|
|
+ $headers,
|
|
|
+ $httpBody
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Create http client option
|
|
|
+ *
|
|
|
+ * @throws \RuntimeException on file opening failure
|
|
|
+ * @return array of http client options
|
|
|
+ */
|
|
|
+ protected function createHttpClientOption()
|
|
|
+ {
|
|
|
+ $options = [];
|
|
|
+ if ($this->config->getDebug()) {
|
|
|
+ $options[RequestOptions::DEBUG] = fopen($this->config->getDebugFile(), 'a');
|
|
|
+ if (!$options[RequestOptions::DEBUG]) {
|
|
|
+ throw new \RuntimeException('Failed to open the debug file: ' . $this->config->getDebugFile());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($this->config->getCertFile()) {
|
|
|
+ $options[RequestOptions::CERT] = $this->config->getCertFile();
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($this->config->getKeyFile()) {
|
|
|
+ $options[RequestOptions::SSL_KEY] = $this->config->getKeyFile();
|
|
|
+ }
|
|
|
+
|
|
|
+ return $options;
|
|
|
+ }
|
|
|
+
|
|
|
+ private function handleResponseWithDataType(
|
|
|
+ string $dataType,
|
|
|
+ RequestInterface $request,
|
|
|
+ ResponseInterface $response
|
|
|
+ ): array {
|
|
|
+ if ($dataType === '\SplFileObject') {
|
|
|
+ $content = $response->getBody(); //stream goes to serializer
|
|
|
+ } else {
|
|
|
+ $content = (string) $response->getBody();
|
|
|
+ if ($dataType !== 'string') {
|
|
|
+ try {
|
|
|
+ $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR);
|
|
|
+ } catch (\JsonException $exception) {
|
|
|
+ throw new ApiException(
|
|
|
+ sprintf(
|
|
|
+ 'Error JSON decoding server response (%s)',
|
|
|
+ $request->getUri()
|
|
|
+ ),
|
|
|
+ $response->getStatusCode(),
|
|
|
+ $response->getHeaders(),
|
|
|
+ $content
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return [
|
|
|
+ ObjectSerializer::deserialize($content, $dataType, []),
|
|
|
+ $response->getStatusCode(),
|
|
|
+ $response->getHeaders()
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ private function responseWithinRangeCode(
|
|
|
+ string $rangeCode,
|
|
|
+ int $statusCode
|
|
|
+ ): bool {
|
|
|
+ $left = (int) ($rangeCode[0].'00');
|
|
|
+ $right = (int) ($rangeCode[0].'99');
|
|
|
+
|
|
|
+ return $statusCode >= $left && $statusCode <= $right;
|
|
|
+ }
|
|
|
+}
|