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/examples/ruby/lib/twilio-ruby/rest/api/v2010/account.rb b/examples/ruby/lib/twilio-ruby/rest/api/v2010/account.rb index cf2b68dcf..ece302360 100644 --- a/examples/ruby/lib/twilio-ruby/rest/api/v2010/account.rb +++ b/examples/ruby/lib/twilio-ruby/rest/api/v2010/account.rb @@ -52,10 +52,15 @@ def create( headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', 'X-Twilio-Webhook-Enabled' => x_twilio_webhook_enabled, }) - payload = @version.create('POST', @uri, data: data, headers: headers) + response = @version.create('POST', @uri, data: data, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to create record') + end + AccountInstance.new( @version, - payload, + response.body, ) end @@ -201,7 +206,13 @@ def initialize(version, sid) def delete headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - @version.delete('DELETE', @uri, headers: headers) + response = @version.delete('DELETE', @uri, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to delete record') + end + + delete_status_code(response) end ## @@ -210,10 +221,15 @@ def delete def fetch headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.fetch('GET', @uri, headers: headers) + response = @version.fetch('GET', @uri, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to fetch record') + end + AccountInstance.new( @version, - payload, + response.body, sid: @solution[:sid], ) end @@ -234,10 +250,15 @@ def update( headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.update('POST', @uri, data: data, headers: headers) + response = @version.update('POST', @uri, data: data, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to update record') + end + AccountInstance.new( @version, - payload, + response.body, sid: @solution[:sid], ) end diff --git a/examples/ruby/lib/twilio-ruby/rest/api/v2010/account/call.rb b/examples/ruby/lib/twilio-ruby/rest/api/v2010/account/call.rb index f30efc324..2fa511f40 100644 --- a/examples/ruby/lib/twilio-ruby/rest/api/v2010/account/call.rb +++ b/examples/ruby/lib/twilio-ruby/rest/api/v2010/account/call.rb @@ -55,10 +55,15 @@ def create( headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.create('POST', @uri, data: data, headers: headers) + response = @version.create('POST', @uri, data: data, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to create record') + end + CallInstance.new( @version, - payload, + response.body, account_sid: @solution[:account_sid], ) end @@ -102,7 +107,13 @@ def initialize(version, account_sid, test_integer) def delete headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - @version.delete('DELETE', @uri, headers: headers) + response = @version.delete('DELETE', @uri, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to delete record') + end + + delete_status_code(response) end ## @@ -111,10 +122,15 @@ def delete def fetch headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.fetch('GET', @uri, headers: headers) + response = @version.fetch('GET', @uri, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to fetch record') + end + CallInstance.new( @version, - payload, + response.body, account_sid: @solution[:account_sid], test_integer: @solution[:test_integer], ) diff --git a/examples/ruby/lib/twilio-ruby/rest/api/v2010/account/call/feedback_call_summary.rb b/examples/ruby/lib/twilio-ruby/rest/api/v2010/account/call/feedback_call_summary.rb index b3f06d8e6..ce7d63921 100644 --- a/examples/ruby/lib/twilio-ruby/rest/api/v2010/account/call/feedback_call_summary.rb +++ b/examples/ruby/lib/twilio-ruby/rest/api/v2010/account/call/feedback_call_summary.rb @@ -69,10 +69,15 @@ def update( headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.update('POST', @uri, data: data, headers: headers) + response = @version.update('POST', @uri, data: data, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to update record') + end + FeedbackCallSummaryInstance.new( @version, - payload, + response.body, account_sid: @solution[:account_sid], sid: @solution[:sid], ) diff --git a/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/call.rb b/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/call.rb index 92997381b..e2751d7a0 100644 --- a/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/call.rb +++ b/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/call.rb @@ -53,10 +53,15 @@ def initialize(version, sid) def update headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.update('POST', @uri, headers: headers) + response = @version.update('POST', @uri, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to update record') + end + CallInstance.new( @version, - payload, + response.body, sid: @solution[:sid], ) end diff --git a/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/aws.rb b/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/aws.rb index b281daad5..69792f2e4 100644 --- a/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/aws.rb +++ b/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/aws.rb @@ -144,7 +144,13 @@ def initialize(version, sid) def delete headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - @version.delete('DELETE', @uri, headers: headers) + response = @version.delete('DELETE', @uri, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to delete record') + end + + delete_status_code(response) end ## @@ -153,10 +159,15 @@ def delete def fetch headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.fetch('GET', @uri, headers: headers) + response = @version.fetch('GET', @uri, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to fetch record') + end + AwsInstance.new( @version, - payload, + response.body, sid: @solution[:sid], ) end @@ -177,10 +188,15 @@ def update( headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.update('POST', @uri, data: data, headers: headers) + response = @version.update('POST', @uri, data: data, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to update record') + end + AwsInstance.new( @version, - payload, + response.body, sid: @solution[:sid], ) end diff --git a/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/aws/history.rb b/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/aws/history.rb index b09d89364..5c5d6bee7 100644 --- a/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/aws/history.rb +++ b/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/aws/history.rb @@ -60,10 +60,15 @@ def fetch( params.merge!(Twilio.prefixed_collapsible_map(add_ons_data, 'AddOns')) headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.fetch('GET', @uri, params: params, headers: headers) + response = @version.fetch('GET', @uri, params: params, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to fetch record') + end + HistoryInstance.new( @version, - payload, + response.body, sid: @solution[:sid], ) end diff --git a/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/new_credentials.rb b/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/new_credentials.rb index 9508cd616..e35e948c6 100644 --- a/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/new_credentials.rb +++ b/examples/ruby/lib/twilio-ruby/rest/flex_api/v1/credential/new_credentials.rb @@ -94,10 +94,15 @@ def create( headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.create('POST', @uri, data: data, headers: headers) + response = @version.create('POST', @uri, data: data, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to create record') + end + NewCredentialsInstance.new( @version, - payload, + response.body, ) end diff --git a/examples/ruby/lib/twilio-ruby/rest/oauth/v2/token.rb b/examples/ruby/lib/twilio-ruby/rest/oauth/v2/token.rb index f2f54bf56..c804d6b25 100644 --- a/examples/ruby/lib/twilio-ruby/rest/oauth/v2/token.rb +++ b/examples/ruby/lib/twilio-ruby/rest/oauth/v2/token.rb @@ -62,10 +62,15 @@ def create( headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.create('POST', @uri, data: data, headers: headers) + response = @version.create('POST', @uri, data: data, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to create record') + end + TokenInstance.new( @version, - payload, + response.body, ) end diff --git a/examples/ruby/lib/twilio-ruby/rest/versionless/deployed_devices/fleet.rb b/examples/ruby/lib/twilio-ruby/rest/versionless/deployed_devices/fleet.rb index ab91f9809..41fab279d 100644 --- a/examples/ruby/lib/twilio-ruby/rest/versionless/deployed_devices/fleet.rb +++ b/examples/ruby/lib/twilio-ruby/rest/versionless/deployed_devices/fleet.rb @@ -41,10 +41,15 @@ def create( headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.create('POST', @uri, data: data, headers: headers) + response = @version.create('POST', @uri, data: data, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to create record') + end + FleetInstance.new( @version, - payload, + response.body, ) end @@ -74,10 +79,15 @@ def initialize(version, sid) def fetch headers = Twilio::Values.of({ 'Content-Type' => 'application/x-www-form-urlencoded', }) - payload = @version.fetch('GET', @uri, headers: headers) + response = @version.fetch('GET', @uri, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + + raise @version.exception(response, 'Unable to fetch record') + end + FleetInstance.new( @version, - payload, + response.body, sid: @solution[:sid], ) end diff --git a/src/main/java/com/twilio/oai/TwilioRubyGenerator.java b/src/main/java/com/twilio/oai/TwilioRubyGenerator.java index 7bf5c07cd..c6163bd71 100644 --- a/src/main/java/com/twilio/oai/TwilioRubyGenerator.java +++ b/src/main/java/com/twilio/oai/TwilioRubyGenerator.java @@ -2,8 +2,10 @@ import com.twilio.oai.api.RubyApiResourceBuilder; import com.twilio.oai.api.RubyApiResources; +import com.twilio.oai.common.ApplicationConstants; import com.twilio.oai.common.EnumConstants; import com.twilio.oai.common.Utility; +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; @@ -16,6 +18,7 @@ import com.twilio.oai.template.RubyApiActionTemplate; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.PathItem; +import java.util.LinkedHashMap; import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.languages.RubyClientCodegen; @@ -46,7 +49,13 @@ public TwilioRubyGenerator() { @Override public void processOpenAPI(final OpenAPI openAPI) { - + String apiStdVersion = null; + if (openAPI.getInfo().getExtensions() != null && openAPI.getInfo().getExtensions().containsKey("x-twilio")) { + LinkedHashMap xTwilio = (LinkedHashMap)openAPI.getInfo().getExtensions().get("x-twilio"); + apiStdVersion = (String) xTwilio.get("apiStandards"); + } + boolean isV1 = ApplicationConstants.isV1.test(apiStdVersion); + ResourceCacheContext.get().setV1(isV1); String domain = StringHelper.toSnakeCase(twilioCodegen.getDomainFromOpenAPI(openAPI)); String version = StringHelper.toSnakeCase(twilioCodegen.getVersionFromOpenAPI(openAPI)); twilioCodegen.setDomain(domain); diff --git a/src/main/java/com/twilio/oai/api/RubyApiResources.java b/src/main/java/com/twilio/oai/api/RubyApiResources.java index 15b4b0c42..1392ca4ff 100644 --- a/src/main/java/com/twilio/oai/api/RubyApiResources.java +++ b/src/main/java/com/twilio/oai/api/RubyApiResources.java @@ -1,5 +1,6 @@ package com.twilio.oai.api; +import com.twilio.oai.java.cache.ResourceCacheContext; import org.openapitools.codegen.CodegenParameter; import java.util.ArrayList; @@ -10,11 +11,15 @@ public class RubyApiResources extends FluentApiResources { private List readParams; List parentDir = new ArrayList<>(); boolean hasParents = false; + private Boolean isApiV1 = null; public RubyApiResources(RubyApiResourceBuilder apiResourceBuilder) { super(apiResourceBuilder); this.readParams = apiResourceBuilder.readParams; this.parentDir = apiResourceBuilder.parentDir; this.hasParents = apiResourceBuilder.hasParents; + if (ResourceCacheContext.get() != null && ResourceCacheContext.get().isV1()) { + isApiV1 = true; + } } } diff --git a/src/main/resources/twilio-ruby/contextMethodParams.mustache b/src/main/resources/twilio-ruby/contextMethodParams.mustache index d08400293..df0993b30 100644 --- a/src/main/resources/twilio-ruby/contextMethodParams.mustache +++ b/src/main/resources/twilio-ruby/contextMethodParams.mustache @@ -107,15 +107,34 @@ {{^vendorExtensions.x-is-delete-operation}} {{#vendorExtensions.scimProduces}}headers['Accept'] = 'application/scim+json'{{/vendorExtensions.scimProduces}} {{#vendorExtensions.multipleProduces}} headers['Accept'] = '*/*'{{/vendorExtensions.multipleProduces}} - payload = @version.{{#lambda.camelcase}}{{vendorExtensions.x-name}}{{/lambda.camelcase}}('{{httpMethod}}', @uri{{#queryParams.0}}, params: params{{/queryParams.0}}{{#formParams.0}}, data: data{{/formParams.0}}, headers: headers{{#bodyParams.0}}, data: {{paramName}}.to_json{{/bodyParams.0}}) + response = @version.{{#lambda.camelcase}}{{vendorExtensions.x-name}}{{/lambda.camelcase}}('{{httpMethod}}', @uri{{#queryParams.0}}, params: params{{/queryParams.0}}{{#formParams.0}}, data: data{{/formParams.0}}, headers: headers{{#bodyParams.0}}, data: {{paramName}}.to_json{{/bodyParams.0}}) + if response.status_code < 200 || response.status_code >= 300 + {{#isApiV1}}raise @version.exception_v10(response){{/isApiV1}} + {{^isApiV1}} + {{#vendorExtensions.x-is-update-operation}} + raise @version.exception(response, 'Unable to update record') + {{/vendorExtensions.x-is-update-operation}} + {{#vendorExtensions.x-is-create-operation}} + raise @version.exception(response, 'Unable to create record') + {{/vendorExtensions.x-is-create-operation}} + {{#vendorExtensions.x-is-fetch-operation}} + raise @version.exception(response, 'Unable to fetch record') + {{/vendorExtensions.x-is-fetch-operation}} + {{/isApiV1}} + end {{apiName}}Instance.new( @version, - payload,{{#vendorExtensions.listOperation}}{{#listPathParams}} + response.body,{{#vendorExtensions.listOperation}}{{#listPathParams}} {{paramName}}: @solution[:{{paramName}}],{{/listPathParams}}{{/vendorExtensions.listOperation}}{{#vendorExtensions.instanceOperation}}{{#instancePathParams}} {{paramName}}: @solution[:{{paramName}}],{{/instancePathParams}}{{/vendorExtensions.instanceOperation}} ) {{/vendorExtensions.x-is-delete-operation}} {{#vendorExtensions.x-is-delete-operation}} - @version.{{#lambda.camelcase}}{{vendorExtensions.x-name}}{{/lambda.camelcase}}('{{httpMethod}}', @uri{{#queryParams.0}}, params: params{{/queryParams.0}}{{#formParams.0}}, data: data{{/formParams.0}}, headers: headers) + response = @version.{{#lambda.camelcase}}{{vendorExtensions.x-name}}{{/lambda.camelcase}}('{{httpMethod}}', @uri{{#queryParams.0}}, params: params{{/queryParams.0}}{{#formParams.0}}, data: data{{/formParams.0}}, headers: headers) + if response.status_code < 200 || response.status_code >= 300 + {{#isApiV1}} raise @version.exception_v10(response){{/isApiV1}} + {{^isApiV1}}raise @version.exception(response, 'Unable to delete record'){{/isApiV1}} + end + delete_status_code(response) {{/vendorExtensions.x-is-delete-operation}} end