[BUG] [kotlin-client / okhttp] Dollar sign in query parameter names generated invalid code
Created by: kunzese
Bug Report Checklist
-
Have you provided a full/minimal spec to reproduce the issue? -
Have you validated the input using an OpenAPI validator (example)? -
Have you tested with the latest master to confirm the issue still exists? -
Have you searched for related issues/PRs? -
What's the actual output vs expected output? See Suggest a fix -
[Optional] Sponsorship to speed up the bug fix or feature request (example)
Description
We consume a third-party API that has several query parameters that start with a dollar sign ($). Creating a kotlin-client with the okhttp lib results in an Unresolved reference: expand
error, because the dollar sign is not escaped and is interpreted as a string template.
openapi-generator version
5.2.1
OpenAPI declaration file content or url
openapi: "3.0.0"
info:
version: "1.0.0"
title: "Demo"
paths:
/:
get:
operationId: demo
parameters:
- in: query
name: $expand
schema:
type: string
responses:
'200':
description: OK
Generation Details
Via gradle plugin
openApiGenerate {
generatorName = "kotlin"
inputSpec = "$rootDir/specs/api.yaml"
}
Suggest a fix
Escape dollar signs in string literals.
Unresolved reference: expand
fun demoRequestConfig(dollarExpand: kotlin.String?) : RequestConfig<Unit> {
val localVariableBody = null
val localVariableQuery: MultiValueMap = mutableMapOf<kotlin.String, List<kotlin.String>>()
.apply {
if (dollarExpand != null) {
put("$expand", listOf(dollarExpand.toString()))
}
}
...
Fixed:
fun demoRequestConfig(dollarExpand: kotlin.String?) : RequestConfig<Unit> {
val localVariableBody = null
val localVariableQuery: MultiValueMap = mutableMapOf<kotlin.String, List<kotlin.String>>()
.apply {
if (dollarExpand != null) {
put("\$expand", listOf(dollarExpand.toString()))
}
}
...