diff --git a/examples/node/src/rest/api/v2010/account/call/feedbackCallSummary.ts b/examples/node/src/rest/api/v2010/account/call/feedbackCallSummary.ts index 1dbc152ba..a7d8d85a6 100644 --- a/examples/node/src/rest/api/v2010/account/call/feedbackCallSummary.ts +++ b/examples/node/src/rest/api/v2010/account/call/feedbackCallSummary.ts @@ -70,9 +70,7 @@ export interface FeedbackCallSummaryContextSolution { sid: string; } -export class FeedbackCallSummaryContextImpl - implements FeedbackCallSummaryContext -{ +export class FeedbackCallSummaryContextImpl implements FeedbackCallSummaryContext { protected _solution: FeedbackCallSummaryContextSolution; protected _uri: string; diff --git a/src/main/java/com/twilio/oai/TwilioCodegenAdapter.java b/src/main/java/com/twilio/oai/TwilioCodegenAdapter.java index c61226574..129290ecd 100644 --- a/src/main/java/com/twilio/oai/TwilioCodegenAdapter.java +++ b/src/main/java/com/twilio/oai/TwilioCodegenAdapter.java @@ -1,5 +1,7 @@ package com.twilio.oai; +import com.twilio.oai.java.cache.ResourceCache2; +import com.twilio.oai.java.cache.ResourceCacheContext; import java.io.File; import java.io.IOException; import java.util.*; @@ -18,7 +20,6 @@ import static com.twilio.oai.common.ApplicationConstants.CONFIG_PATH; -@RequiredArgsConstructor public class TwilioCodegenAdapter { private static final String INPUT_SPEC_PATTERN = "[^_]+_(?.+?)(_(?[^_]+))?\\..+"; @@ -32,6 +33,14 @@ public class TwilioCodegenAdapter { private File toggleFile; private String originalOutputDir; + private final ResourceCache2 resourceCache2 = new ResourceCache2(); + + public TwilioCodegenAdapter(DefaultCodegen codegen, String name) { + this.codegen = codegen; + this.name = name; + ResourceCacheContext.clear(); + ResourceCacheContext.set(resourceCache2); + } public void processOpts() { // Find the templates in the local resources dir. @@ -65,7 +74,7 @@ public void processOpts() { e.printStackTrace(); } } - + public String getVersionFromOpenAPI(final OpenAPI openAPI) { String version = ""; version = StringHelper.camelize(getInputSpecVersion(), true); @@ -83,6 +92,19 @@ public String getVersionFromOpenAPI(final OpenAPI openAPI) { return version; } + public void setIsV1ApiStandard (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); + } + public void setDomain(final String domain) { final String domainPackage = domain.replaceAll("[-.]", ""); setOutputDir(domainPackage, getInputSpecVersion()); @@ -90,7 +112,7 @@ public void setDomain(final String domain) { codegen.additionalProperties().put("domainName", StringHelper.camelize(domain)); codegen.additionalProperties().put("domainPackage", domainPackage); } - + public void setVersion(final String version) { codegen.additionalProperties().put("clientVersion", version); codegen.additionalProperties().put(DirectoryStructureService.API_VERSION, version); diff --git a/src/main/java/com/twilio/oai/TwilioPhpGenerator.java b/src/main/java/com/twilio/oai/TwilioPhpGenerator.java index 21745bfd5..48f46b890 100644 --- a/src/main/java/com/twilio/oai/TwilioPhpGenerator.java +++ b/src/main/java/com/twilio/oai/TwilioPhpGenerator.java @@ -31,8 +31,6 @@ 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"; @@ -55,8 +53,6 @@ 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()); } @@ -81,22 +77,13 @@ 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); twilioCodegen.setVersion(version); twilioCodegen.setOutputDir(domain, version); + twilioCodegen.setIsV1ApiStandard(openAPI); setSrcBasePath(""); directoryStructureService.configureResourceFamily(openAPI); diff --git a/src/main/java/com/twilio/oai/TwilioPythonGenerator.java b/src/main/java/com/twilio/oai/TwilioPythonGenerator.java index 74dfb785a..46d31d0f1 100644 --- a/src/main/java/com/twilio/oai/TwilioPythonGenerator.java +++ b/src/main/java/com/twilio/oai/TwilioPythonGenerator.java @@ -77,6 +77,7 @@ public void processOpenAPI(final OpenAPI openAPI) { String version = StringHelper.toSnakeCase(twilioCodegen.getVersionFromOpenAPI(openAPI)); twilioCodegen.setDomain(domain); twilioCodegen.setVersion(version); + twilioCodegen.setIsV1ApiStandard(openAPI); twilioCodegen.setOutputDir(domain, version); openAPI.getPaths().forEach(resourceTree::addResource); diff --git a/src/main/resources/twilio-python/api-single.mustache b/src/main/resources/twilio-python/api-single.mustache index ae8ce0f37..7053c16f5 100644 --- a/src/main/resources/twilio-python/api-single.mustache +++ b/src/main/resources/twilio-python/api-single.mustache @@ -7,7 +7,7 @@ from twilio.base import deserialize, serialize, values {{#responseModel}}from twilio.base.instance_resource import InstanceResource{{/responseModel}} from twilio.base.list_resource import ListResource from twilio.base.version import Version -{{#hasPaginationOperation}}from twilio.base.page import Page{{/hasPaginationOperation}} +{{#hasPaginationOperation}}{{#isApiV1}}from twilio.base.token_pagination import TokenPagination{{/isApiV1}}{{^isApiV1}}from twilio.base.page import Page{{/isApiV1}}{{/hasPaginationOperation}} {{#dependents}}from twilio.rest.{{domainPackage}}.{{apiVersion}}.{{namespaceSubPart}}.{{filename}} import {{resourceName}}List {{/dependents}} diff --git a/src/main/resources/twilio-python/listOperations.handlebars b/src/main/resources/twilio-python/listOperations.handlebars index 9ac8e5ebc..f839fdbfe 100644 --- a/src/main/resources/twilio-python/listOperations.handlebars +++ b/src/main/resources/twilio-python/listOperations.handlebars @@ -331,7 +331,7 @@ )] def page(self, {{#allParams}} - {{#startsWith paramName text='page_size'}}{{else}}{{paramName}}: Union[{{{dataType}}}, object] = values.unset,{{/startsWith}}{{/allParams}} + {{#startsWith paramName text='page_size'}}{{else}}{{#startsWith paramName text='page_token'}}{{else}}{{paramName}}: Union[{{{dataType}}}, object] = values.unset,{{/startsWith}}{{/startsWith}}{{/allParams}} page_token: Union[str, object] = values.unset, page_number: Union[int, object] = values.unset, page_size: Union[int, object] = values.unset, @@ -365,8 +365,9 @@ headers["Accept"] = "{{{mediaType}}}" {{/vendorExtensions.successProduce}} - response = self._version.page(method='{{vendorExtensions.x-http-method}}', uri=self._uri, params=data, headers=headers) - return {{apiName}}Page(self._version, response{{#if listPathParams}}, self._solution{{/if}}) + response = self._version.page(method='{{vendorExtensions.x-http-method}}', uri=self._uri, params=data, headers=headers){{#isApiV1}} + return {{apiName}}Page(self._version, response, uri=self._uri{{#if listPathParams}}, self._solution{{/if}}){{/isApiV1}}{{^isApiV1}} + return {{apiName}}Page(self._version, response{{#if listPathParams}}, self._solution{{/if}}){{/isApiV1}} async def page_async(self, {{#allParams}} {{#startsWith paramName text='page_size'}}{{else}}{{paramName}}: Union[{{{dataType}}}, object] = values.unset,{{/startsWith}}{{/allParams}} diff --git a/src/main/resources/twilio-python/pagination.handlebars b/src/main/resources/twilio-python/pagination.handlebars index fed914e4a..e18993965 100644 --- a/src/main/resources/twilio-python/pagination.handlebars +++ b/src/main/resources/twilio-python/pagination.handlebars @@ -1,6 +1,6 @@ {{#operations}} {{#vendorExtensions.x-is-read-operation}} -class {{apiName}}Page(Page): +class {{apiName}}Page({{#isApiV1}}TokenPagination{{/isApiV1}}{{^isApiV1}}Page{{/isApiV1}}): def get_instance(self, payload: Dict[str, Any]) -> {{instanceName}}: """