Skip to content

Commit cf25c6a

Browse files
shortcutsmillotp
andauthored
fix(spec): fix wrong query parameters (#330)
Co-authored-by: Pierre Millot <[email protected]>
1 parent 58d7e7f commit cf25c6a

File tree

5 files changed

+36
-18
lines changed

5 files changed

+36
-18
lines changed

generators/src/main/java/com/algolia/codegen/AlgoliaJavascriptGenerator.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
import org.openapitools.codegen.CodegenOperation;
66
import org.openapitools.codegen.languages.TypeScriptNodeClientCodegen;
7-
7+
import io.swagger.v3.oas.models.media.Schema;
8+
import io.swagger.v3.oas.models.parameters.Parameter;
89
import io.swagger.v3.oas.models.Operation;
910
import io.swagger.v3.oas.models.servers.Server;
1011

@@ -18,4 +19,12 @@ public String getName() {
1819
public CodegenOperation fromOperation(String path, String httpMethod, Operation operation, List<Server> servers) {
1920
return Utils.specifyCustomRequest(super.fromOperation(path, httpMethod, operation, servers));
2021
}
22+
23+
@Override
24+
protected String getParameterDataType(Parameter parameter, Schema p) {
25+
String type = super.getParameterDataType(parameter, p);
26+
// openapi generator is wrong, 'object' is not a fit all object, we need 'any'
27+
// we use replace because there might be more to this type, like '| undefined'
28+
return type.replace("{ [key: string]: object; }", "Record<string, any>");
29+
}
2130
}

specs/common/schemas/CustomRequest.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ PathInPath:
3535
Parameters:
3636
name: parameters
3737
in: query
38-
description: URL-encoded query string. Force some query parameters to be applied for each query made with this API key.
38+
description: Query parameters to be applied to the current query.
3939
schema:
40-
type: string
41-
example: '?query=mySearchQuery&hitsPerPage=10'
40+
type: object
41+
additionalProperties: true

templates/java/libraries/okhttp-gson/api.mustache

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,18 +119,25 @@ public class {{classname}} extends ApiClient {
119119
{{javaUtilPrefix}}List<Pair> queryParams = new {{javaUtilPrefix}}ArrayList<Pair>();
120120
{{javaUtilPrefix}}Map<String, String> headers = new {{javaUtilPrefix}}HashMap<String, String>();
121121

122-
{{#queryParams}}
122+
{{#vendorExtensions}}{{#queryParams}}
123123
if ({{paramName}} != null) {
124+
{{^x-is-custom-request}}
124125
queryParams.addAll(this.parameterToPair("{{baseName}}", {{paramName}}));
126+
{{/x-is-custom-request}}
127+
{{#x-is-custom-request}}
128+
for (Map.Entry<String, Object> parameter : parameters.entrySet()) {
129+
queryParams.addAll(this.parameterToPair(parameter.getKey(), parameter.getValue().toString()));
130+
}
131+
{{/x-is-custom-request}}
125132
}
126133

127-
{{/queryParams}}
134+
{{/queryParams}}{{/vendorExtensions}}
128135
{{#headerParams}}
129136
if ({{paramName}} != null) {
130137
headers.put("{{baseName}}", this.parameterToString({{paramName}}));
131138
}
132139

133-
{{/headerParams}}
140+
{{/headerParams}}
134141
headers.put("Accept", "application/json");
135142
headers.put("Content-Type", "application/json");
136143

templates/javascript/api-single.mustache

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,6 @@ export function create{{capitalizedApiName}}Api(options: CreateClientOptions{{#h
202202
{{/allParams.0}}
203203
requestOptions?: RequestOptions
204204
) : Promise<{{{returnType}}}> {
205-
const requestPath = '{{{path}}}'{{#vendorExtensions}}{{#pathParams}}.replace(
206-
{{=<% %>=}}'{<%baseName%>}'<%={{ }}=%>,{{#x-is-custom-request}}String({{paramName}}){{/x-is-custom-request}}{{^x-is-custom-request}}encodeURIComponent(String({{paramName}})){{/x-is-custom-request}}
207-
){{/pathParams}}{{/vendorExtensions}};
208-
const headers: Headers = {};
209-
const queryParameters: QueryParameters = {};
210-
211205
{{#allParams}}
212206
{{#required}}
213207
if ({{#isBoolean}}{{paramName}} === null || {{paramName}} === undefined{{/isBoolean}}{{^isBoolean}}!{{paramName}}{{/isBoolean}}) {
@@ -224,12 +218,20 @@ export function create{{capitalizedApiName}}Api(options: CreateClientOptions{{#h
224218

225219
{{/required}}
226220
{{/allParams}}
227-
{{#queryParams}}
221+
222+
const requestPath = '{{{path}}}'{{#vendorExtensions}}{{#pathParams}}.replace(
223+
{{=<% %>=}}'{<%baseName%>}'<%={{ }}=%>,{{#x-is-custom-request}}{{paramName}}{{/x-is-custom-request}}{{^x-is-custom-request}}encodeURIComponent({{paramName}}){{/x-is-custom-request}}
224+
){{/pathParams}}{{/vendorExtensions}};
225+
const headers: Headers = {};
226+
const queryParameters: QueryParameters = {{#vendorExtensions.x-is-custom-request}}parameters || {{/vendorExtensions.x-is-custom-request}}{};
227+
228+
{{^vendorExtensions.x-is-custom-request}}{{#queryParams}}
228229
if ({{paramName}} !== undefined) {
229230
queryParameters['{{baseName}}'] = {{paramName}}.toString();
230231
}
231232

232-
{{/queryParams}}
233+
{{/queryParams}}{{/vendorExtensions.x-is-custom-request}}
234+
233235
{{#headerParams}}
234236
headers['{{baseName}}'] = {{paramName}};
235237
{{/headerParams}}

templates/php/api.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ use {{invokerPackage}}\RetryStrategy\ClusterHosts;
203203
$resourcePath = '{{{path}}}';
204204
$queryParams = [];
205205
$httpBody = [];
206-
{{#queryParams}}
206+
{{#vendorExtensions}}{{#queryParams}}
207207

208208
{{#isExplode}}
209209
if (${{paramName}} !== null) {
@@ -214,7 +214,7 @@ use {{invokerPackage}}\RetryStrategy\ClusterHosts;
214214
}
215215
}
216216
else {
217-
$queryParams['{{baseName}}'] = ${{paramName}};
217+
$queryParams{{^x-is-custom-request}}['{{baseName}}']{{/x-is-custom-request}} = ${{paramName}};
218218
}
219219
{{/style}}
220220
{{^style}}
@@ -230,7 +230,7 @@ use {{invokerPackage}}\RetryStrategy\ClusterHosts;
230230
$queryParams['{{baseName}}'] = ${{paramName}};
231231
}
232232
{{/isExplode}}
233-
{{/queryParams}}
233+
{{/queryParams}}{{/vendorExtensions}}
234234
{{#vendorExtensions}}{{#pathParams}}
235235
// path params
236236
{{#collectionFormat}}

0 commit comments

Comments
 (0)