Skip to content

Commit

Permalink
chore: skipping optional part when param not in responseModel
Browse files Browse the repository at this point in the history
  • Loading branch information
tiwarishubham635 committed Aug 12, 2024
1 parent 1749980 commit 1c20550
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,13 @@ public ApiResourceBuilder updateOperations(final Resolver<CodegenParameter> code

// Fill out the list path params with any "parent params".
listPathParams = resourcePathParams.stream().filter(PathUtils::isParentParam).collect(Collectors.toList());
for(CodegenParameter param: instancePathParams)
if((boolean) param.vendorExtensions.getOrDefault(ACCOUNT_SID_VEND_EXT, false))
param.vendorExtensions.put(IS_PARENT_PARAM_EXTENSION_NAME, true);
}

if(instancePath != null && listPath == null && listPathParams.isEmpty()) {
for(CodegenParameter param: instancePathParams) {
param.vendorExtensions.put(IS_PARENT_PARAM_EXTENSION_NAME, false);
}
}
return this;
}

Expand Down
14 changes: 12 additions & 2 deletions src/main/java/com/twilio/oai/api/NodeApiResourceBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@
import org.openapitools.codegen.CodegenParameter;
import org.openapitools.codegen.CodegenProperty;

import static com.twilio.oai.common.ApplicationConstants.HTTP_METHOD;
import static com.twilio.oai.common.ApplicationConstants.STRING;
import static com.twilio.oai.common.ApplicationConstants.*;

public class NodeApiResourceBuilder extends FluentApiResourceBuilder {
public NodeApiResourceBuilder(final IApiActionTemplate template,
Expand Down Expand Up @@ -118,7 +117,18 @@ public ApiResourceBuilder updateResponseModel(Resolver<CodegenProperty> codegenP
variable.datatypeWithEnum = dataTypeWithEnum;
variable.baseType = dataType;
});

instancePathParams.forEach(param -> param.vendorExtensions.put("x-is-response-param", param.vendorExtensions.get(IS_PARENT_PARAM_EXTENSION_NAME)));

});

if(instancePath != null) {
for(CodegenParameter param: instancePathParams) {
if((!(boolean) param.vendorExtensions.getOrDefault(IS_PARENT_PARAM_EXTENSION_NAME, false)) &&
(responseModel.getVars().stream().noneMatch(variable -> variable.name.equals(param.paramName))))
param.vendorExtensions.put("x-is-response-param", true);
}
}
});

modelTree.values().forEach(model -> model.setName(getModelName(model.getClassname())));
Expand Down
15 changes: 1 addition & 14 deletions src/main/resources/twilio-node/api-single.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -145,27 +145,14 @@ export interface {{apiName}}ListInstance {
[inspect.custom](_depth: any, options: InspectOptions): any;
}

export function {{apiName}}ListInstance(version: {{apiVersionClass}}{{#listPathParams}}{{^vendorExtensions.x-is-account-sid}}, {{paramName}}: {{{dataType}}}{{/vendorExtensions.x-is-account-sid}}{{/listPathParams}}{{#listPathParams}}{{#vendorExtensions.x-is-account-sid}}, {{paramName}}?: {{{dataType}}}{{/vendorExtensions.x-is-account-sid}}{{/listPathParams}}): {{apiName}}ListInstance {
export function {{apiName}}ListInstance(version: {{apiVersionClass}}{{#listPathParams}}, {{paramName}}: {{{dataType}}}{{/listPathParams}}): {{apiName}}ListInstance {
{{#listPathParams}}
{{#vendorExtensions.x-is-account-sid}}
accountSid = accountSid || version.domain.twilio.accountSid;
{{/vendorExtensions.x-is-account-sid}}
if (!isValidPathParam({{paramName}})) {
throw new Error('Parameter \'{{paramName}}\' is not valid.');
}

{{/listPathParams}}

{{#instancePath}}
{{^listPath}}
{{^listPathParams}}
{{#instancePathParams}}
{{#vendorExtensions.x-is-account-sid}}
const accountSid = version.domain.twilio.accountSid;
{{/vendorExtensions.x-is-account-sid}}
{{/instancePathParams}}
{{/listPathParams}}
{{/listPath}}
const instance = (({{#instancePathParams}}{{^vendorExtensions.x-is-parent-param}}{{paramName}}, {{/vendorExtensions.x-is-parent-param}}{{/instancePathParams}}) => instance.get({{#instancePathParams}}{{^vendorExtensions.x-is-parent-param}}{{paramName}}, {{/vendorExtensions.x-is-parent-param}}{{/instancePathParams}})) as {{apiName}}ListInstance;

instance.get = function get({{#instancePathParams}}{{^vendorExtensions.x-is-parent-param}}{{paramName}}, {{/vendorExtensions.x-is-parent-param}}{{/instancePathParams}}): {{apiName}}Context {
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/twilio-node/responseModel.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ export class {{instanceName}} {
protected _context?: {{apiName}}Context;
{{/instancePath}}

constructor(protected _version: {{apiVersionClass}}, payload: {{apiName}}Resource{{#instancePathParams}}, {{paramName}}{{^vendorExtensions.x-is-parent-param}}?{{/vendorExtensions.x-is-parent-param}}: {{{dataType}}}{{/instancePathParams}}) {
constructor(protected _version: {{apiVersionClass}}, payload: {{apiName}}Resource{{#instancePathParams}}, {{paramName}}{{^vendorExtensions.x-is-response-param}}?{{/vendorExtensions.x-is-response-param}}: {{{dataType}}}{{/instancePathParams}}) {
{{#vars}}
this.{{name}} = {{vendorExtensions.x-deserialize}}(payload.{{baseName}});
{{/vars}}

{{#instancePath}}
this._solution = { {{#instancePathParams}}{{paramName}}{{^vendorExtensions.x-is-parent-param}}: {{paramName}} || this.{{paramName}}{{#vendorExtensions.x-stringify}}.toString(){{/vendorExtensions.x-stringify}}{{/vendorExtensions.x-is-parent-param}}, {{/instancePathParams}} };
this._solution = { {{#instancePathParams}}{{paramName}}{{^vendorExtensions.x-is-response-param}}: {{paramName}} || this.{{paramName}}{{#vendorExtensions.x-stringify}}.toString(){{/vendorExtensions.x-stringify}}{{/vendorExtensions.x-is-response-param}}, {{/instancePathParams}} };
{{/instancePath}}
}

Expand Down

0 comments on commit 1c20550

Please sign in to comment.