diff --git a/src/main/java/com/twilio/oai/DirectoryStructureService.java b/src/main/java/com/twilio/oai/DirectoryStructureService.java index e2b3e118e..f02962e5a 100644 --- a/src/main/java/com/twilio/oai/DirectoryStructureService.java +++ b/src/main/java/com/twilio/oai/DirectoryStructureService.java @@ -1,6 +1,7 @@ package com.twilio.oai; import com.twilio.oai.common.Utility; +import com.twilio.oai.java.cache.ResourceCacheContext; import com.twilio.oai.resolver.CaseResolver; import com.twilio.oai.resource.IResourceTree; import com.twilio.oai.resource.Resource; @@ -103,7 +104,9 @@ public void configure(final OpenAPI openAPI) { } updateAccountSidParam(operation); - updatePaginationParams(operation); + if (ResourceCacheContext.get() == null || !ResourceCacheContext.get().isV1()) { + updatePaginationParams(operation); + } pathType.ifPresent(type -> Optional .ofNullable(operation.getExtensions()) diff --git a/src/main/java/com/twilio/oai/TwilioPhpGenerator.java b/src/main/java/com/twilio/oai/TwilioPhpGenerator.java index 201c45c09..21745bfd5 100644 --- a/src/main/java/com/twilio/oai/TwilioPhpGenerator.java +++ b/src/main/java/com/twilio/oai/TwilioPhpGenerator.java @@ -5,8 +5,11 @@ import com.twilio.oai.api.PhpApiResourceBuilder; import com.twilio.oai.api.PhpApiResources; import com.twilio.oai.api.PhpDomainBuilder; +import com.twilio.oai.common.ApplicationConstants; import com.twilio.oai.common.EnumConstants; import com.twilio.oai.common.Utility; +import com.twilio.oai.java.cache.ResourceCache2; +import com.twilio.oai.java.cache.ResourceCacheContext; import com.twilio.oai.resolver.IConventionMapper; import com.twilio.oai.resolver.LanguageConventionResolver; import com.twilio.oai.resolver.common.CodegenModelResolver; @@ -29,6 +32,7 @@ public class TwilioPhpGenerator extends PhpClientCodegen { + ResourceCache2 resourceCache2 = new ResourceCache2(); public static final String VALUES = "values"; public static final String JSON_INGRESS = "json_ingress"; private static final String PHP_CONVENTIONAL_MAP_PATH = "config/" + EnumConstants.Generator.TWILIO_PHP.getValue() + ".json"; @@ -51,6 +55,8 @@ protected ImmutableMap.Builder addMustacheLambdas() { public TwilioPhpGenerator() { super(); + ResourceCacheContext.clear(); + ResourceCacheContext.set(resourceCache2); // initialize the resource cache context to avoid null pointer exceptions twilioCodegen = new TwilioCodegenAdapter(this, getName()); } @@ -73,7 +79,19 @@ public void processOpts() { } @Override + @SuppressWarnings("unchecked") public void processOpenAPI(final OpenAPI openAPI) { + String apiStdVersion = null; + if (openAPI.getInfo().getExtensions() != null && openAPI.getInfo().getExtensions().containsKey("x-twilio")) { + Object xTwilioObj = openAPI.getInfo().getExtensions().get("x-twilio"); + if (xTwilioObj instanceof Map) { + Map xTwilio = (Map) xTwilioObj; + apiStdVersion = (String) xTwilio.get("apiStandards"); + } + } + boolean isV1 = ApplicationConstants.isV1.test(apiStdVersion); + ResourceCacheContext.get().setV1(isV1); + String domain = StringHelper.camelize(twilioCodegen.getDomainFromOpenAPI(openAPI)); String version = StringHelper.camelize(twilioCodegen.getVersionFromOpenAPI(openAPI)); twilioCodegen.setDomain(domain); diff --git a/src/main/java/com/twilio/oai/api/ApiResources.java b/src/main/java/com/twilio/oai/api/ApiResources.java index ea4209d29..f6aec5194 100644 --- a/src/main/java/com/twilio/oai/api/ApiResources.java +++ b/src/main/java/com/twilio/oai/api/ApiResources.java @@ -5,6 +5,7 @@ import java.util.Map; import java.util.Set; +import com.twilio.oai.java.cache.ResourceCacheContext; import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenParameter; @@ -23,6 +24,7 @@ public class ApiResources { String namespaceSubPart; boolean hasPaginationOperation; Set nestedModels; + private Boolean isApiV1 = null; // true or NULL public ApiResources(ApiResourceBuilder apiResourceBuilder) { apiOperations = apiResourceBuilder.codegenOperationList; @@ -36,5 +38,8 @@ public ApiResources(ApiResourceBuilder apiResourceBuilder) { namespaceSubPart = apiResourceBuilder.namespaceSubPart; hasPaginationOperation = apiResourceBuilder.hasPaginationOperation(); nestedModels = apiResourceBuilder.nestedModels; + if (ResourceCacheContext.get() != null && ResourceCacheContext.get().isV1()) { + isApiV1 = true; + } } } diff --git a/src/main/resources/twilio-php/listRead.mustache b/src/main/resources/twilio-php/listRead.mustache index ee092c781..bf4607c91 100644 --- a/src/main/resources/twilio-php/listRead.mustache +++ b/src/main/resources/twilio-php/listRead.mustache @@ -45,7 +45,8 @@ */ public function stream({{#vendorExtensions.x-has-non-pagination-params}}array $options = [], {{/vendorExtensions.x-has-non-pagination-params}}?int $limit = null, $pageSize = null): Stream { - $limits = $this->version->readLimits($limit, $pageSize); + {{#isApiV1}}{{#vendorExtensions.x-has-non-pagination-params}}$pageSize = $options['pageSize'] ?? $pageSize; + {{/vendorExtensions.x-has-non-pagination-params}}{{/isApiV1}}$limits = $this->version->readLimits($limit, $pageSize); $page = $this->page({{#vendorExtensions.x-has-non-pagination-params}}$options, {{/vendorExtensions.x-has-non-pagination-params}}$limits['pageSize']); @@ -107,9 +108,9 @@ {{/vendorExtensions.x-serialize}} {{/required}} {{/queryParams}} - 'PageToken' => $pageToken, + {{^isApiV1}}'PageToken' => $pageToken, 'Page' => $pageNumber, - 'PageSize' => $pageSize, + 'PageSize' => $pageSize,{{/isApiV1}} ]); $headers = Values::of([{{^consumes}}'Content-Type' => 'application/x-www-form-urlencoded'{{/consumes}}{{#consumes}}{{#-first}}'Content-Type' => '{{{mediaType}}}'{{/-first}}{{/consumes}}{{#produces}}{{#-first}}, 'Accept' => '{{{mediaType}}}'{{/-first}}{{/produces}}]); diff --git a/src/main/resources/twilio-php/page.mustache b/src/main/resources/twilio-php/page.mustache index 1ea60d234..ab0d04564 100644 --- a/src/main/resources/twilio-php/page.mustache +++ b/src/main/resources/twilio-php/page.mustache @@ -4,10 +4,11 @@ namespace Twilio\Rest\{{domainName}}\{{version}}{{namespaceSubPart}}; use Twilio\Http\Response; -use Twilio\Page; +use Twilio\Page;{{#isApiV1}} +use Twilio\TokenPaginationPage;{{/isApiV1}} use Twilio\Version; -class {{apiName}}Page extends Page +class {{apiName}}Page extends {{#isApiV1}}TokenPaginationPage{{/isApiV1}}{{^isApiV1}}Page{{/isApiV1}} { /** * @param Version $version Version that contains the resource