Skip to content

Commit 412665d

Browse files
authored
feat(php): Generate remaining PHP clients with PHP docs APIC-327 (#327)
1 parent 9514f8f commit 412665d

File tree

14 files changed

+133
-150
lines changed

14 files changed

+133
-150
lines changed

.github/actions/cache/action.yml

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -367,12 +367,15 @@ runs:
367367
if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }}
368368
uses: actions/cache@v2
369369
with:
370-
path: clients/algoliasearch-client-php/lib/Api/SearchApi.php
370+
path: |
371+
clients/algoliasearch-client-php/lib/Api/SearchApi.php
372+
clients/algoliasearch-client-php/lib/Model/Search/**
371373
key: |
372374
${{ env.CACHE_VERSION }}-${{
373375
hashFiles(
374376
'clients/algoliasearch-client-php/lib/Api/SearchApi.php',
375377
'clients/algoliasearch-client-php/lib/Configuration/SearchConfig.php',
378+
'clients/algoliasearch-client-php/lib/Model/Search/**',
376379
'specs/bundled/search.yml',
377380
'templates/php/**',
378381
'generators/src/**'
@@ -382,12 +385,15 @@ runs:
382385
if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }}
383386
uses: actions/cache@v2
384387
with:
385-
path: clients/algoliasearch-client-php/lib/Api/RecommendApi.php
388+
path: |
389+
clients/algoliasearch-client-php/lib/Api/RecommendApi.php
390+
clients/algoliasearch-client-php/lib/Model/Recommend/**
386391
key: |
387392
${{ env.CACHE_VERSION }}-${{
388393
hashFiles(
389394
'clients/algoliasearch-client-php/lib/Api/RecommendApi.php',
390395
'clients/algoliasearch-client-php/lib/Configuration/RecommendConfig.php',
396+
'clients/algoliasearch-client-php/lib/Model/Recommend/**',
391397
'specs/bundled/recommend.yml',
392398
'templates/php/**',
393399
'generators/src/**'
@@ -397,12 +403,15 @@ runs:
397403
if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }}
398404
uses: actions/cache@v2
399405
with:
400-
path: clients/algoliasearch-client-php/lib/Api/PersonalizationApi.php
406+
path: |
407+
clients/algoliasearch-client-php/lib/Api/PersonalizationApi.php
408+
clients/algoliasearch-client-php/lib/Model/Personalization/**
401409
key: |
402410
${{ env.CACHE_VERSION }}-${{
403411
hashFiles(
404412
'clients/algoliasearch-client-php/lib/Api/PersonalizationApi.php',
405413
'clients/algoliasearch-client-php/lib/Configuration/PersonalizationConfig.php',
414+
'clients/algoliasearch-client-php/lib/Model/Personalization/**',
406415
'specs/bundled/personalization.yml',
407416
'templates/php/**',
408417
'generators/src/**'
@@ -412,12 +421,15 @@ runs:
412421
if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }}
413422
uses: actions/cache@v2
414423
with:
415-
path: clients/algoliasearch-client-php/lib/Api/AnalyticsApi.php
424+
path: |
425+
clients/algoliasearch-client-php/lib/Api/AnalyticsApi.php
426+
clients/algoliasearch-client-php/lib/Model/Analytics/**
416427
key: |
417428
${{ env.CACHE_VERSION }}-${{
418429
hashFiles(
419430
'clients/algoliasearch-client-php/lib/Api/AnalyticsApi.php',
420431
'clients/algoliasearch-client-php/lib/Configuration/AnalyticsConfig.php',
432+
'clients/algoliasearch-client-php/lib/Model/Analytics/**',
421433
'specs/bundled/analytics.yml',
422434
'templates/php/**',
423435
'generators/src/**'
@@ -427,12 +439,15 @@ runs:
427439
if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }}
428440
uses: actions/cache@v2
429441
with:
430-
path: clients/algoliasearch-client-php/lib/Api/InsightsApi.php
442+
path: |
443+
clients/algoliasearch-client-php/lib/Api/InsightsApi.php
444+
clients/algoliasearch-client-php/lib/Model/Insights/**
431445
key: |
432446
${{ env.CACHE_VERSION }}-${{
433447
hashFiles(
434448
'clients/algoliasearch-client-php/lib/Api/InsightsApi.php',
435449
'clients/algoliasearch-client-php/lib/Configuration/InsightsConfig.php',
450+
'clients/algoliasearch-client-php/lib/Model/Insights/**',
436451
'specs/bundled/insights.yml',
437452
'templates/php/**',
438453
'generators/src/**'
@@ -442,12 +457,15 @@ runs:
442457
if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }}
443458
uses: actions/cache@v2
444459
with:
445-
path: clients/algoliasearch-client-php/lib/Api/AbtestingApi.php
460+
path: |
461+
clients/algoliasearch-client-php/lib/Api/AbtestingApi.php
462+
clients/algoliasearch-client-php/lib/Model/Abtesting/**
446463
key: |
447464
${{ env.CACHE_VERSION }}-${{
448465
hashFiles(
449466
'clients/algoliasearch-client-php/lib/Api/AbtestingApi.php',
450467
'clients/algoliasearch-client-php/lib/Configuration/AbtestingConfig.php',
468+
'clients/algoliasearch-client-php/lib/Model/Abtesting/**',
451469
'specs/bundled/abtesting.yml',
452470
'templates/php/**',
453471
'generators/src/**'
@@ -457,12 +475,15 @@ runs:
457475
if: ${{ inputs.job == 'cts' || inputs.job == 'codegen' }}
458476
uses: actions/cache@v2
459477
with:
460-
path: clients/algoliasearch-client-php/lib/Api/QuerySuggestionsApi.php
478+
path: |
479+
clients/algoliasearch-client-php/lib/Api/QuerySuggestionsApi.php
480+
clients/algoliasearch-client-php/lib/Model/QuerySuggestions/**
461481
key: |
462482
${{ env.CACHE_VERSION }}-${{
463483
hashFiles(
464484
'clients/algoliasearch-client-php/lib/Api/QuerySuggestionsApi.php',
465485
'clients/algoliasearch-client-php/lib/Configuration/QuerySuggestionsConfig.php',
486+
'clients/algoliasearch-client-php/lib/Model/QuerySuggestions/**',
466487
'specs/bundled/query-suggestions.yml',
467488
'templates/php/**',
468489
'generators/src/**'

.github/workflows/check.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,9 @@ jobs:
302302
id: cache
303303
uses: actions/cache@v2
304304
with:
305-
path: ${{ format('{0}/lib/Api/{1}.php', matrix.client.folder, matrix.client.api) }}
305+
path: |
306+
${{ format('{0}/lib/Api/{1}.php', matrix.client.folder, matrix.client.api) }}
307+
${{ format('{0}/lib/Model/{1}/**', matrix.client.folder, matrix.client.capitalizedName) }}
306308
key: |
307309
${{ env.CACHE_VERSION }}-${{
308310
hashFiles(

clients/algoliasearch-client-php/.openapi-generator-ignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
docs/**
88
test/**
9-
lib/Model/**
10-
lib/Model/
119

1210
.travis.yml
1311
README.md

clients/algoliasearch-client-php/lib/Configuration/AbTestingConfig.php renamed to clients/algoliasearch-client-php/lib/Configuration/AbtestingConfig.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
namespace Algolia\AlgoliaSearch\Configuration;
44

5-
class AbTestingConfig extends ConfigWithRegion
5+
class AbtestingConfig extends ConfigWithRegion
66
{
77
}

clients/algoliasearch-client-php/lib/Configuration/RecommendConfig.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
namespace Algolia\AlgoliaSearch\Configuration;
44

5-
class RecommendConfig extends ConfigWithRegion
5+
class RecommendConfig extends Configuration
66
{
77
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
namespace Algolia\AlgoliaSearch\Model;
4+
5+
use \Algolia\AlgoliaSearch\ObjectSerializer;
6+
7+
/**
8+
* Abstract class extended by each models
9+
*
10+
* @category Class
11+
* @package Algolia\AlgoliaSearch
12+
*/
13+
abstract class AbstractModel
14+
{
15+
/**
16+
* Serializes the object to a value that can be serialized natively by json_encode().
17+
*
18+
* @link https://www.php.net/manual/en/jsonserializable.jsonserialize.php
19+
*
20+
* @return mixed returns data which can be serialized by json_encode(), which is a value
21+
* of any type other than a resource
22+
*/
23+
public function jsonSerialize()
24+
{
25+
return ObjectSerializer::sanitizeForSerialization($this);
26+
}
27+
28+
/**
29+
* Gets the string presentation of the object
30+
*
31+
* @return string
32+
*/
33+
public function __toString()
34+
{
35+
return json_encode(
36+
ObjectSerializer::sanitizeForSerialization($this),
37+
JSON_PRETTY_PRINT
38+
);
39+
}
40+
41+
/**
42+
* Gets a header-safe presentation of the object
43+
*
44+
* @return string
45+
*/
46+
public function toHeaderValue()
47+
{
48+
return json_encode(ObjectSerializer::sanitizeForSerialization($this));
49+
}
50+
}

openapitools.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@
264264
"gitUserId": "algolia",
265265
"gitRepoId": "algoliasearch-client-php",
266266
"invokerPackage": "Algolia\\AlgoliaSearch",
267-
"globalProperty": "apis,supportingFiles",
267+
"modelPackage": "Model\\Search",
268268
"additionalProperties": {
269269
"configClassname": "SearchConfig",
270270
"useCache": true,
@@ -283,7 +283,7 @@
283283
"gitUserId": "algolia",
284284
"gitRepoId": "algoliasearch-client-php",
285285
"invokerPackage": "Algolia\\AlgoliaSearch",
286-
"globalProperty": "apis,supportingFiles",
286+
"modelPackage": "Model\\Recommend",
287287
"additionalProperties": {
288288
"configClassname": "RecommendConfig",
289289
"useCache": true,
@@ -302,7 +302,7 @@
302302
"gitUserId": "algolia",
303303
"gitRepoId": "algoliasearch-client-php",
304304
"invokerPackage": "Algolia\\AlgoliaSearch",
305-
"globalProperty": "apis,supportingFiles",
305+
"modelPackage": "Model\\Personalization",
306306
"additionalProperties": {
307307
"configClassname": "PersonalizationConfig",
308308
"hasRegionalHost": true,
@@ -325,7 +325,7 @@
325325
"gitUserId": "algolia",
326326
"gitRepoId": "algoliasearch-client-php",
327327
"invokerPackage": "Algolia\\AlgoliaSearch",
328-
"globalProperty": "apis,supportingFiles",
328+
"modelPackage": "Model\\Analytics",
329329
"additionalProperties": {
330330
"configClassname": "AnalyticsConfig",
331331
"hasRegionalHost": true,
@@ -349,7 +349,7 @@
349349
"gitUserId": "algolia",
350350
"gitRepoId": "algoliasearch-client-php",
351351
"invokerPackage": "Algolia\\AlgoliaSearch",
352-
"globalProperty": "apis,supportingFiles",
352+
"modelPackage": "Model\\Insights",
353353
"additionalProperties": {
354354
"configClassname": "InsightsConfig",
355355
"hasRegionalHost": true,
@@ -373,7 +373,7 @@
373373
"gitUserId": "algolia",
374374
"gitRepoId": "algoliasearch-client-php",
375375
"invokerPackage": "Algolia\\AlgoliaSearch",
376-
"globalProperty": "apis,supportingFiles",
376+
"modelPackage": "Model\\Abtesting",
377377
"additionalProperties": {
378378
"configClassname": "AbtestingConfig",
379379
"hasRegionalHost": true,
@@ -397,7 +397,7 @@
397397
"gitUserId": "algolia",
398398
"gitRepoId": "algoliasearch-client-php",
399399
"invokerPackage": "Algolia\\AlgoliaSearch",
400-
"globalProperty": "apis,supportingFiles",
400+
"modelPackage": "Model\\QuerySuggestions",
401401
"additionalProperties": {
402402
"configClassname": "QuerySuggestionsConfig",
403403
"hasRegionalHost": true,

scripts/ci/createMatrix.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { CLIENTS, GENERATORS } from '../common';
2+
import { createClientName } from '../cts/utils';
23
import type { Language } from '../types';
34

45
import { getNbGitDiff } from './utils';
@@ -14,6 +15,7 @@ type ClientMatrix = {
1415
folder: string;
1516
config?: string;
1617
api?: string;
18+
capitalizedName?: string;
1719
};
1820

1921
type Matrix<TMatrix> = {
@@ -70,6 +72,7 @@ async function getClientMatrix({
7072
'Config',
7173
'Api'
7274
);
75+
matchedGenerator.capitalizedName = createClientName(client, 'php');
7376
}
7477

7578
matrix.client.push(matchedGenerator);

scripts/generate.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
getLanguageFolder,
1515
getLanguageModelFolder,
1616
} from './config';
17+
import { createClientName } from './cts/utils';
1718
import { formatter } from './formatter';
1819
import { createSpinner } from './oraLog';
1920
import { setHostsOptions } from './pre-gen/setHostsOptions';
@@ -33,6 +34,9 @@ async function removeExistingModel(
3334
case 'java':
3435
clientModel = client;
3536
break;
37+
case 'php':
38+
clientModel = createClientName(client, 'php');
39+
break;
3640
default:
3741
break;
3842
}

clients/algoliasearch-client-php/lib/ModelInterface.php renamed to templates/php/ModelInterface.mustache

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,27 @@
11
<?php
22

3-
namespace Algolia\AlgoliaSearch\Model;
3+
namespace {{modelPackage}};
44

55
/**
66
* Interface abstracting model access.
77
*
8-
* @package Algolia\AlgoliaSearch\Model
8+
* @package {{modelPackage}}
99
*/
1010
interface ModelInterface
1111
{
12-
/**
13-
* The original name of the model.
14-
*
15-
* @return string
16-
*/
17-
public function getModelName();
18-
1912
/**
2013
* Array of property to type mappings. Used for (de)serialization
2114
*
2215
* @return array
2316
*/
24-
public static function openAPITypes();
17+
public static function modelTypes();
2518
2619
/**
2720
* Array of property to format mappings. Used for (de)serialization
2821
*
2922
* @return array
3023
*/
31-
public static function openAPIFormats();
32-
33-
/**
34-
* Array of attributes where the key is the local name, and the value is the original name
35-
*
36-
* @return array
37-
*/
38-
public static function attributeMap();
24+
public static function modelFormats();
3925
4026
/**
4127
* Array of attributes to setter functions (for deserialization of responses)

templates/php/api.mustache

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ use {{invokerPackage}}\RetryStrategy\ClusterHosts;
7575
{{/hasRegionalHost}}
7676

7777
/**
78-
* Instantiate the client with congiguration
78+
* Instantiate the client with configuration
7979
*
8080
* @param {{configClassname}} $config Configuration
8181
*/
@@ -134,10 +134,16 @@ use {{invokerPackage}}\RetryStrategy\ClusterHosts;
134134
*
135135
{{/description}}
136136
{{#allParams}}
137-
* @param {{#isString}}string{{/isString}}{{#isInteger}}int{{/isInteger}}{{^isString}}{{^isInteger}}array{{/isInteger}}{{/isString}} ${{paramName}}{{#description}} {{.}}{{/description}}{{^description}} {{paramName}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{#isDeprecated}} (deprecated){{/isDeprecated}}
137+
* @param {{#isString}}string{{/isString}}{{#isInteger}}int{{/isInteger}}{{#isBoolean}}bool{{/isBoolean}}{{^isString}}{{^isInteger}}{{^isBoolean}}array{{/isBoolean}}{{/isInteger}}{{/isString}} ${{paramName}}{{#description}} {{.}}{{/description}}{{^description}} {{paramName}}{{/description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{#isDeprecated}} (deprecated){{/isDeprecated}}
138+
{{#isModel}}
139+
{{#vars}}
140+
* - ${{paramName}}{{> arrayParam}}
141+
{{/vars}}
142+
* @see {{{dataType}}}
143+
{{/isModel}}
138144
{{/allParams}}
139145
*
140-
* @return array<string, mixed>
146+
* @return {{#returnType}}{{#responses}}{{#dataType}}{{#-first}}array<string, mixed>|{{{dataType}}}{{/-first}}{{/dataType}}{{/responses}}{{/returnType}}{{^returnType}}void{{/returnType}}
141147
{{#isDeprecated}}
142148
* @deprecated
143149
{{/isDeprecated}}
@@ -241,7 +247,7 @@ use {{invokerPackage}}\RetryStrategy\ClusterHosts;
241247
if (${{paramName}} !== null) {
242248
$resourcePath = str_replace(
243249
{{=<% %>=}}'{<%baseName%>}'<%={{ }}=%>,
244-
{{#x-is-custom-request}}{{paramName}}{{/x-is-custom-request}}{{^x-is-custom-request}}ObjectSerializer::toPathValue(${{paramName}}){{/x-is-custom-request}},
250+
{{#x-is-custom-request}}${{paramName}}{{/x-is-custom-request}}{{^x-is-custom-request}}ObjectSerializer::toPathValue(${{paramName}}){{/x-is-custom-request}},
245251
$resourcePath
246252
);
247253
}

templates/php/arrayParam.mustache

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
['{{{baseName}}}'] => ({{#isString}}string{{/isString}}{{#isInteger}}int{{/isInteger}}{{#isBoolean}}bool{{/isBoolean}}{{^isString}}{{^isInteger}}{{^isBoolean}}array{{/isBoolean}}{{/isInteger}}{{/isString}}) {{{description}}}{{#required}} (required){{/required}}

0 commit comments

Comments
 (0)