From 2329a3c62e247fb279f63fe9a15684b426c52907 Mon Sep 17 00:00:00 2001 From: bikmazefe Date: Thu, 13 Feb 2025 18:46:24 +0300 Subject: [PATCH 1/4] feat(API) Add locale_ids param to synchronous download endpoint --- doc/compiled.json | 15 +++++++++++++++ paths/locales/download.yaml | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/doc/compiled.json b/doc/compiled.json index 0cb78d3e7..8ed1af5e5 100644 --- a/doc/compiled.json +++ b/doc/compiled.json @@ -8582,6 +8582,21 @@ }, "style": "deepObject", "explode": true + }, + { + "name": "locale_ids", + "description": "Locale IDs or locale names", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "example": [ + "de", + "en" + ] } ], "responses": { diff --git a/paths/locales/download.yaml b/paths/locales/download.yaml index 406b55be8..884499590 100644 --- a/paths/locales/download.yaml +++ b/paths/locales/download.yaml @@ -133,6 +133,16 @@ parameters: properties: {} style: deepObject explode: true + - name: locale_ids + description: Locale IDs or locale names + in: query + schema: + type: array + items: + type: string + example: + - de + - en responses: "200": description: OK From fd64f5636ab8f1c8e6f3982925554a4cb4197286 Mon Sep 17 00:00:00 2001 From: bikmazefe Date: Fri, 14 Feb 2025 16:45:19 +0300 Subject: [PATCH 2/4] Adjust API templates for Go & CLI --- openapi-generator/templates/cli/api.handlebars | 12 +++++++++--- openapi-generator/templates/go/api.mustache | 17 +++++++++++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/openapi-generator/templates/cli/api.handlebars b/openapi-generator/templates/cli/api.handlebars index 49b3551d7..324778071 100644 --- a/openapi-generator/templates/cli/api.handlebars +++ b/openapi-generator/templates/cli/api.handlebars @@ -96,12 +96,18 @@ func init{{{nickname}}}() { } {{/isModel~}} {{^isPrimitiveType}}{{^isModel}} - if params.IsSet(helpers.ToSnakeCase("{{paramName}}")) { - var {{paramName}} map[string]interface{} + {{#if (eq dataType "[]string")}} + if params.IsSet(helpers.ToSnakeCase("{{paramName}}")) { + var {{paramName}} []string + {{else}} + if params.IsSet(helpers.ToSnakeCase("{{paramName}}")) { + var {{paramName}} map[string]interface{} + {{/if}} + if err := json.Unmarshal([]byte(params.GetString(helpers.ToSnakeCase("{{{vendorExtensions.x-export-param-name}}}"))), &{{paramName}}); err != nil { HandleError(err) } - localVarOptionals.{{{vendorExtensions.x-export-param-name}}} = optional.NewInterface({{paramName}}) + localVarOptionals.{{{vendorExtensions.x-export-param-name}}} = {{#if (eq dataType "[]string")}}{{paramName}}{{else}}optional.NewInterface({{paramName}}){{/if}} } {{/isModel}}{{/isPrimitiveType}} {{/if}} diff --git a/openapi-generator/templates/go/api.mustache b/openapi-generator/templates/go/api.mustache index b050db124..97bba0f34 100644 --- a/openapi-generator/templates/go/api.mustache +++ b/openapi-generator/templates/go/api.mustache @@ -36,7 +36,12 @@ type {{#structPrefix}}{{&classname}}{{/structPrefix}}{{{nickname}}}Opts struct { {{/isBinary}} {{/isPrimitiveType}} {{^isPrimitiveType}} - {{vendorExtensions.x-export-param-name}} optional.Interface `json:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}` + {{#isArray}} + {{vendorExtensions.x-export-param-name}} []string `json:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}` + {{/isArray}} + {{^isArray}} + {{vendorExtensions.x-export-param-name}} optional.Interface `json:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}` + {{/isArray}} {{/isPrimitiveType}} {{/required}} {{/allParams}} @@ -154,8 +159,15 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx _context.Context{{#hasParams {{/isCollectionFormatMulti}} {{/required}} {{^required}} - if localVarOptionals != nil && localVarOptionals.{{vendorExtensions.x-export-param-name}}.IsSet() { + if localVarOptionals != nil && localVarOptionals.{{vendorExtensions.x-export-param-name}}{{^isArray}}.IsSet(){{/isArray}}{{#isArray}} != nil{{/isArray}} { {{#isCollectionFormatMulti}} + {{#isArray}} + t := localVarOptionals.{{vendorExtensions.x-export-param-name}} + for i := range t { + localVarQueryParams.Add("{{vendorExtensions.x-export-param-name}}[]", parameterToString(t[i], "multi")) + } + {{/isArray}} + {{^isArray}} t:=localVarOptionals.{{vendorExtensions.x-export-param-name}}.Value() if reflect.TypeOf(t).Kind() == reflect.Slice { s := reflect.ValueOf(t) @@ -165,6 +177,7 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx _context.Context{{#hasParams } else { localVarQueryParams.Add("{{baseName}}", parameterToString(t, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) } + {{/isArray}} {{/isCollectionFormatMulti}} {{^isCollectionFormatMulti}} {{#isPrimitiveType}}localVarQueryParams.Add("{{baseName}}", parameterToString(localVarOptionals.{{vendorExtensions.x-export-param-name}}.Value(), "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")){{/isPrimitiveType}}{{^isPrimitiveType}}for key, value := range localVarOptionals.{{vendorExtensions.x-export-param-name}}.Value().(map[string]interface{}) { From e959101bf01614badc4b9d6e9caa8dd3c2c350cc Mon Sep 17 00:00:00 2001 From: bikmazefe Date: Fri, 14 Feb 2025 16:55:04 +0300 Subject: [PATCH 3/4] Fix templates --- openapi-generator/templates/cli/api.handlebars | 13 ++++++------- openapi-generator/templates/go/api.mustache | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/openapi-generator/templates/cli/api.handlebars b/openapi-generator/templates/cli/api.handlebars index 324778071..5d955721e 100644 --- a/openapi-generator/templates/cli/api.handlebars +++ b/openapi-generator/templates/cli/api.handlebars @@ -96,15 +96,14 @@ func init{{{nickname}}}() { } {{/isModel~}} {{^isPrimitiveType}}{{^isModel}} + if params.IsSet(helpers.ToSnakeCase("{{paramName}}")) { {{#if (eq dataType "[]string")}} - if params.IsSet(helpers.ToSnakeCase("{{paramName}}")) { - var {{paramName}} []string - {{else}} - if params.IsSet(helpers.ToSnakeCase("{{paramName}}")) { - var {{paramName}} map[string]interface{} - {{/if}} + var {{paramName}} []string + {{else}} + var {{paramName}} map[string]interface{} + {{/if}} - if err := json.Unmarshal([]byte(params.GetString(helpers.ToSnakeCase("{{{vendorExtensions.x-export-param-name}}}"))), &{{paramName}}); err != nil { + if err := json.Unmarshal([]byte(params.GetString(helpers.ToSnakeCase("{{{paramName}}}"))), &{{paramName}}); err != nil { HandleError(err) } localVarOptionals.{{{vendorExtensions.x-export-param-name}}} = {{#if (eq dataType "[]string")}}{{paramName}}{{else}}optional.NewInterface({{paramName}}){{/if}} diff --git a/openapi-generator/templates/go/api.mustache b/openapi-generator/templates/go/api.mustache index 97bba0f34..993a31910 100644 --- a/openapi-generator/templates/go/api.mustache +++ b/openapi-generator/templates/go/api.mustache @@ -164,7 +164,7 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx _context.Context{{#hasParams {{#isArray}} t := localVarOptionals.{{vendorExtensions.x-export-param-name}} for i := range t { - localVarQueryParams.Add("{{vendorExtensions.x-export-param-name}}[]", parameterToString(t[i], "multi")) + localVarQueryParams.Add("{{baseName}}[]", parameterToString(t[i], "multi")) } {{/isArray}} {{^isArray}} From e0d573a1fe5a6e9ba3f4a152f6d2e8b649ff4931 Mon Sep 17 00:00:00 2001 From: bikmazefe Date: Fri, 14 Feb 2025 17:02:51 +0300 Subject: [PATCH 4/4] Fix Java test --- .../src/test/java/com/phrase/client/api/LocalesApiTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clients/java/src/test/java/com/phrase/client/api/LocalesApiTest.java b/clients/java/src/test/java/com/phrase/client/api/LocalesApiTest.java index ee5415418..29130c196 100644 --- a/clients/java/src/test/java/com/phrase/client/api/LocalesApiTest.java +++ b/clients/java/src/test/java/com/phrase/client/api/LocalesApiTest.java @@ -171,12 +171,13 @@ public void localeDownloadTest() throws ApiException, IOException, InterruptedEx Object customMetadataFilters = null; String translationKeyPrefix = null; Boolean filterByPrefix = null; + List localeIds = null; File response = api.localeDownload(projectId, id, xPhraseAppOTP, ifModifiedSince, ifNoneMatch, branch, fileFormat, tags, tag, includeEmptyTranslations, excludeEmptyZeroForms, includeTranslatedKeys, keepNotranslateTags, convertEmoji, formatOptions, encoding, skipUnverifiedTranslations, includeUnverifiedTranslations, useLastReviewedVersion, fallbackLocaleId, sourceLocaleId, translationKeyPrefix, filterByPrefix, - customMetadataFilters); + customMetadataFilters, localeIds); String fileContents = new String(java.nio.file.Files.readAllBytes(response.toPath())); Assert.assertEquals("Correct file contents", fileContents, body);