Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ format-black:
update:
./scripts/update_swagger_spec.bash

# Inject parameter-group vendor extensions into the spec so the SDK templates
# emit grouped generate() methods. `update` runs this automatically after the
# fetch; this target re-applies it standalone (e.g. before regenerating without
# a re-fetch). Idempotent.
.PHONY: spec-param-groups
spec-param-groups:
python scripts/inject-param-groups.py spec/aspose-barcode-cloud.json

.PHONY: start-release
start-release:
./scripts/start-release.bash
Expand Down
38 changes: 30 additions & 8 deletions codegen/Templates/csharp/api.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,22 @@ namespace {{packageName}}.Api
/// <summary>
/// {{summary}} {{notes}}
/// </summary>
{{#allParams}}/// <param name="{{paramName}}">{{description}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}{{#isDeprecated}} (deprecated){{/isDeprecated}}</param>
{{#allParams}}
{{^vendorExtensions.x-param-group-camel}}
/// <param name="{{paramName}}">{{description}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}{{#isDeprecated}} (deprecated){{/isDeprecated}}</param>
{{/vendorExtensions.x-param-group-camel}}
{{/allParams}}
{{#vendorExtensions.x-param-groups}}
/// <param name="{{camel}}">Grouped parameters of type {{type}} (optional)</param>
{{/vendorExtensions.x-param-groups}}
/// <param name="cancellationToken"></param>
/// <returns>
/// A task that represents the asynchronous operation. {{#returnType}}Task result type is <see cref="{{returnType}}" /> {{/returnType}}
/// </returns>
{{#isDeprecated}}
[Obsolete]
{{/isDeprecated}}
public async {{#returnType}}Task<{{{returnType}}}>{{/returnType}}{{^returnType}}Task{{/returnType}} {{nickname}}Async({{#allParams}}{{{dataType}}} {{paramName}}{{^required}}{{#optionalMethodArgument}} = default{{/optionalMethodArgument}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#allParams.0}}, {{/allParams.0}}System.Threading.CancellationToken cancellationToken = default)
public async {{#returnType}}Task<{{{returnType}}}>{{/returnType}}{{^returnType}}Task{{/returnType}} {{nickname}}Async({{#allParams}}{{^vendorExtensions.x-param-group-camel}}{{{dataType}}} {{paramName}}{{^required}}{{#optionalMethodArgument}} = default{{/optionalMethodArgument}}{{/required}}, {{/vendorExtensions.x-param-group-camel}}{{/allParams}}{{#vendorExtensions.x-param-groups}}{{type}} {{camel}} = default, {{/vendorExtensions.x-param-groups}}System.Threading.CancellationToken cancellationToken = default)
{
{{#allParams}}{{#required}}{{^isEnum}} // verify the required parameter '{{paramName}}' is set
if ({{paramName}} == null)
Expand All @@ -87,17 +93,22 @@ namespace {{packageName}}.Api
.Replace("&amp;", "&")
.Replace("/?", "?");
{{#headerParams}}
{{#-first}}Dictionary<string, string> headerParams = new Dictionary<string, string>();{{/-first}}
{{#-first}}
Dictionary<string, string> headerParams = new Dictionary<string, string>();
{{/-first}}
{{/headerParams}}
{{#formParams}}
{{#-first}}MultipartFormDataContent multipartContent = new MultipartFormDataContent();{{/-first}}
{{#-first}}
MultipartFormDataContent multipartContent = new MultipartFormDataContent();
{{/-first}}
{{^vendorExtensions.x-param-group-camel}}
{{^isEnum}}
if ({{paramName}} != null)
{ {{/isEnum}} {{#isEnum}}{{^required}}if ({{paramName}} != null) { {{/required}}{{/isEnum}}
{{#isFile}}
{{^required}}
if ({{paramName}} != null)
{ {{/required}}
{ {{/required}}
multipartContent.Add(new StreamContent({{paramName}}), "{{paramName}}", "{{paramName}}.png");
{{^required}} } {{/required}}
{{/isFile}}
Expand All @@ -113,14 +124,25 @@ namespace {{packageName}}.Api
{{/isPrimitiveType}}
{{/isFile}}
{{^isEnum}} } {{/isEnum}} {{#isEnum}}{{^required}} } {{/required}}{{/isEnum}}
{{/vendorExtensions.x-param-group-camel}}
{{#vendorExtensions.x-param-group-camel}}
if ({{vendorExtensions.x-param-group-camel}}?.{{nameInPascalCase}} != null)
{
multipartContent.Add(new StringContent($"{ {{vendorExtensions.x-param-group-camel}}?.{{nameInPascalCase}} }"), "{{paramName}}");
}
{{/vendorExtensions.x-param-group-camel}}
{{/formParams}}
{{#pathParams}}
resourcePath = UrlHelper.AddPathParameter(resourcePath, "{{paramName}}", {{paramName}});
{{/pathParams}}
{{#queryParams}}
{{#-first}}#pragma warning disable CS0618 // Type or member is obsolete{{/-first}}
resourcePath = UrlHelper.AddQueryParameterToUrl(resourcePath, "{{paramName}}", {{paramName}});
{{#-last}}#pragma warning restore CS0618 // Type or member is obsolete{{/-last}}
{{#-first}}
#pragma warning disable CS0618 // Type or member is obsolete
{{/-first}}
{{^vendorExtensions.x-param-group-camel}}resourcePath = UrlHelper.AddQueryParameterToUrl(resourcePath, "{{paramName}}", {{paramName}});{{/vendorExtensions.x-param-group-camel}}{{#vendorExtensions.x-param-group-camel}}resourcePath = UrlHelper.AddQueryParameterToUrl(resourcePath, "{{paramName}}", {{vendorExtensions.x-param-group-camel}}?.{{nameInPascalCase}});{{/vendorExtensions.x-param-group-camel}}
{{#-last}}
#pragma warning restore CS0618 // Type or member is obsolete
{{/-last}}
{{/queryParams}}
{{#hasBodyParam}}string postBody = SerializationHelper.Serialize({{bodyParam.paramName}}); // http body (model) parameter{{/hasBodyParam}}

Expand Down
7 changes: 5 additions & 2 deletions codegen/Templates/csharp/api_test.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,17 @@ namespace {{packageName}}.Interfaces
/// </remarks>
/// <exception cref="{{packageName}}.Api.ApiException">Thrown when fails to make API call</exception>
{{#allParams}}
/// <param name="{{paramName}}">{{description}}</param>
{{^vendorExtensions.x-param-group-camel}}/// <param name="{{paramName}}">{{description}}</param>{{/vendorExtensions.x-param-group-camel}}
{{/allParams}}
{{#vendorExtensions.x-param-groups}}
/// <param name="{{camel}}">Grouped parameters of type {{type}}</param>
{{/vendorExtensions.x-param-groups}}
/// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
/// <returns>Task of {{returnType}}{{^returnType}}void{{/returnType}}</returns>
{{#isDeprecated}}
[Obsolete]
{{/isDeprecated}}
{{#returnType}}Task<{{{.}}}>{{/returnType}}{{^returnType}}Task{{/returnType}} {{operationId}}Async({{#allParams}}{{{dataType}}} {{paramName}}{{^required}}{{#optionalMethodArgument}} = default{{/optionalMethodArgument}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#allParams.0}}, {{/allParams.0}}System.Threading.CancellationToken cancellationToken = default);
{{#returnType}}Task<{{{.}}}>{{/returnType}}{{^returnType}}Task{{/returnType}} {{operationId}}Async({{#allParams}}{{^vendorExtensions.x-param-group-camel}}{{{dataType}}} {{paramName}}{{^required}}{{#optionalMethodArgument}} = default{{/optionalMethodArgument}}{{/required}}, {{/vendorExtensions.x-param-group-camel}}{{/allParams}}{{#vendorExtensions.x-param-groups}}{{type}} {{camel}} = default, {{/vendorExtensions.x-param-groups}}System.Threading.CancellationToken cancellationToken = default);
{{/operation}}
}
{{/operations}}
Expand Down
29 changes: 22 additions & 7 deletions codegen/Templates/dart/api.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class {{classname}} {
{{#isDeprecated}}
@deprecated
{{/isDeprecated}}
{{#returnType}}Future<{{#isResponseFile}}Uint8List{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}> {{/returnType}}{{^returnType}}Future {{/returnType}}{{nickname}}({{#allParams}}{{#required}}{{^isFile}}{{{dataType}}} {{paramName}}{{/isFile}}{{#isFile}}Uint8List {{paramName}}Bytes{{/isFile}}{{^-last}}, {{/-last}}{{/required}}{{/allParams}}{{#hasOptionalParams}}{ {{#allParams}}{{^required}}{{^isFile}}{{{dataType}}}? {{paramName}}{{/isFile}}{{#isFile}}Uint8List? {{paramName}}Bytes{{/isFile}}{{^-last}}, {{/-last}}{{/required}}{{/allParams}} }{{/hasOptionalParams}}) async {
{{#returnType}}Future<{{#isResponseFile}}Uint8List{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}> {{/returnType}}{{^returnType}}Future {{/returnType}}{{nickname}}({{#allParams}}{{#required}}{{^isFile}}{{{dataType}}} {{paramName}}{{/isFile}}{{#isFile}}Uint8List {{paramName}}Bytes{{/isFile}}{{^-last}}, {{/-last}}{{/required}}{{/allParams}}{{#hasOptionalParams}}{ {{#allParams}}{{^required}}{{^vendorExtensions.x-param-group-camel}}{{^isFile}}{{{dataType}}}? {{paramName}}{{/isFile}}{{#isFile}}Uint8List? {{paramName}}Bytes{{/isFile}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-param-group-camel}}{{/required}}{{/allParams}}{{#vendorExtensions.x-param-groups}}{{type}}? {{camel}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-param-groups}} }{{/hasOptionalParams}}) async {
// ignore: prefer_final_locals
Object? postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}};

Expand All @@ -34,13 +34,20 @@ class {{classname}} {
final Map<String, String> headerParams = {};
final Map<String, String> formParams = {};
{{#queryParams}}
{{^vendorExtensions.x-param-group-camel}}
{{^required}}
if({{paramName}} != null) {
{{/required}}
queryParams.addAll(convertParametersForCollectionFormat("{{collectionFormat}}", "{{baseName}}", {{paramName}}));
{{^required}}
}
{{/required}}
{{/vendorExtensions.x-param-group-camel}}
{{#vendorExtensions.x-param-group-camel}}
if({{vendorExtensions.x-param-group-camel}}?.{{paramName}} != null) {
queryParams.addAll(convertParametersForCollectionFormat("{{collectionFormat}}", "{{baseName}}", {{vendorExtensions.x-param-group-camel}}!.{{paramName}}));
}
{{/vendorExtensions.x-param-group-camel}}
{{/queryParams}}
{{#headerParams}}headerParams["{{baseName}}"] = {{paramName}};
{{/headerParams}}
Expand All @@ -52,7 +59,9 @@ class {{classname}} {

{{#hasFormParams}}
MultipartRequestPlus mp = MultipartRequestPlus('{{httpMethod}}', Uri.parse(requestPath));
{{#formParams}}{{^isFile}}
{{#formParams}}
{{^vendorExtensions.x-param-group-camel}}
{{^isFile}}
if ({{paramName}} != null) {
{{#isCollectionFormatMulti}}
final List<String> stringValues = {{paramName}}.map((i) => parameterToString(i)).toList();
Expand All @@ -62,8 +71,8 @@ class {{classname}} {
mp.fields['{{baseName}}'] = [parameterToString({{paramName}})];
{{/isCollectionFormatMulti}}
}
{{/isFile}}{{#isFile}}

{{/isFile}}
{{#isFile}}
{{#required}}
mp.files.add(MultipartFile.fromBytes("{{paramName}}", {{paramName}}Bytes.toList(), filename: "somefile.xyz"));
{{/required}}
Expand All @@ -72,10 +81,16 @@ class {{classname}} {
mp.files.add(MultipartFile.fromBytes("{{paramName}}", {{paramName}}Bytes.toList(), filename: "somefile.xyz"));
}
{{/required}}

{{/isFile}}{{/formParams}}
{{/isFile}}
{{/vendorExtensions.x-param-group-camel}}
{{#vendorExtensions.x-param-group-camel}}
if ({{vendorExtensions.x-param-group-camel}}?.{{paramName}} != null) {
mp.fields['{{baseName}}'] = [parameterToString({{vendorExtensions.x-param-group-camel}}!.{{paramName}})];
}
{{/vendorExtensions.x-param-group-camel}}
{{/formParams}}
postBody = mp;

{{/hasFormParams}}

final response = await _apiClient.invokeAPI(requestPath,
Expand Down
23 changes: 21 additions & 2 deletions codegen/Templates/go/api.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@ type {{classname}}Service service

{{#hasOptionalParams}}
//{{{classname}}}{{{nickname}}}Opts - Optional Parameters for {{{classname}}}{{{nickname}}}
type {{{classname}}}{{{nickname}}}Opts struct { {{#allParams}}{{^required}}
{{#isPrimitiveType}} {{vendorExtensions.x-export-param-name}} optional.{{dataType}}{{/isPrimitiveType}}{{^isPrimitiveType}} {{vendorExtensions.x-export-param-name}} optional.Interface{{/isPrimitiveType}}{{/required}}{{/allParams}}
type {{{classname}}}{{{nickname}}}Opts struct { {{#allParams}}{{^required}}{{^vendorExtensions.x-param-group-pascal}}
{{#isPrimitiveType}} {{vendorExtensions.x-export-param-name}} optional.{{dataType}}{{/isPrimitiveType}}{{^isPrimitiveType}} {{vendorExtensions.x-export-param-name}} optional.Interface{{/isPrimitiveType}}{{/vendorExtensions.x-param-group-pascal}}{{/required}}{{/allParams}}{{#vendorExtensions.x-param-groups}}
{{pascal}} optional.Interface{{/vendorExtensions.x-param-groups}}
}
{{/hasOptionalParams}}

Expand Down Expand Up @@ -108,6 +109,7 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx context.Context{{#hasParams}
queryParams.Add("{{baseName}}", parameterToString({{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
{{/required}}
{{^required}}
{{^vendorExtensions.x-param-group-pascal}}
if optionals != nil && optionals.{{vendorExtensions.x-export-param-name}}.IsSet() {
{{#isCollectionFormatMulti}}
values := reflect.ValueOf(optionals.{{vendorExtensions.x-export-param-name}}.Value());
Expand All @@ -120,6 +122,14 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx context.Context{{#hasParams}
queryParams.Add("{{baseName}}", parameterToString(optionals.{{vendorExtensions.x-export-param-name}}.Value(), "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
{{/isCollectionFormatMulti}}
}
{{/vendorExtensions.x-param-group-pascal}}
{{#vendorExtensions.x-param-group-pascal}}
if optionals != nil && optionals.{{vendorExtensions.x-param-group-pascal}}.IsSet() {
if {{paramName}}Value := optionals.{{vendorExtensions.x-param-group-pascal}}.Value().({{vendorExtensions.x-param-group-type}}).{{vendorExtensions.x-export-param-name}}; !reflect.ValueOf({{paramName}}Value).IsZero() {
queryParams.Add("{{baseName}}", parameterToString({{paramName}}Value, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
}
}
{{/vendorExtensions.x-param-group-pascal}}
{{/required}}
{{/queryParams}}
{{/hasQueryParams}}
Expand Down Expand Up @@ -195,6 +205,7 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx context.Context{{#hasParams}
formParams.Add("{{baseName}}", parameterToString({{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
{{/required}}
{{^required}}
{{^vendorExtensions.x-param-group-pascal}}
if optionals != nil && optionals.{{vendorExtensions.x-export-param-name}}.IsSet() {
{{#isCollectionFormatMulti}}
values := reflect.ValueOf(optionals.{{vendorExtensions.x-export-param-name}}.Value());
Expand All @@ -207,6 +218,14 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx context.Context{{#hasParams}
formParams.Add("{{baseName}}", parameterToString(optionals.{{vendorExtensions.x-export-param-name}}.Value(), "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
{{/isCollectionFormatMulti}}
}
{{/vendorExtensions.x-param-group-pascal}}
{{#vendorExtensions.x-param-group-pascal}}
if optionals != nil && optionals.{{vendorExtensions.x-param-group-pascal}}.IsSet() {
if {{paramName}}Value := optionals.{{vendorExtensions.x-param-group-pascal}}.Value().({{vendorExtensions.x-param-group-type}}).{{vendorExtensions.x-export-param-name}}; !reflect.ValueOf({{paramName}}Value).IsZero() {
formParams.Add("{{baseName}}", parameterToString({{paramName}}Value, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
}
}
{{/vendorExtensions.x-param-group-pascal}}
{{/required}}
{{/isFile}}
{{/formParams}}
Expand Down
Loading
Loading