forked from loafle/openapi-generator-original
[Elm] Fix not sanitizing param name (#20171)
* Add failing example * Sanitize param name * Regenerate fixed sample * Override toParamName instead
This commit is contained in:
parent
55f02e995b
commit
ed211050f1
@ -228,10 +228,23 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toVarName(String name) {
|
public String toVarName(String name) {
|
||||||
final String varName = camelize(name.replaceAll("[^a-zA-Z0-9_]", ""), LOWERCASE_FIRST_LETTER);
|
// Replace space with _ (underscore) so camelize works as expected
|
||||||
|
final String varName = camelize(name.replaceAll(" ", "_").replaceAll("[^a-zA-Z0-9_]", ""),
|
||||||
|
LOWERCASE_FIRST_LETTER);
|
||||||
return isReservedWord(varName) ? escapeReservedWord(name) : varName;
|
return isReservedWord(varName) ? escapeReservedWord(name) : varName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toParamName(String name) {
|
||||||
|
// obtain the name from parameterNameMapping directly if provided
|
||||||
|
if (parameterNameMapping.containsKey(name)) {
|
||||||
|
return parameterNameMapping.get(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
// params should be lowerCamelCase
|
||||||
|
return toVarName(name);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toEnumVarName(String value, String datatype) {
|
public String toEnumVarName(String value, String datatype) {
|
||||||
String camelized = camelize(value.replace(" ", "_").replace("(", "_").replace(")", "")); // TODO FIXME escape properly
|
String camelized = camelize(value.replace(" ", "_").replace("(", "_").replace(")", "")); // TODO FIXME escape properly
|
||||||
|
@ -1 +1 @@
|
|||||||
{{^required}}Maybe.map ({{/required}}{{#required}}Just <| {{/required}}{{^isFile}}Http.stringPart {{/isFile}}{{#isFile}}Http.filePart {{/isFile}}"{{paramName}}"{{#isBoolean}}(\val -> if val then "true" else "false"){{/isBoolean}}{{#isDateTime}}Api.Time.dateTimeToString{{/isDateTime}}{{#isDate}}Api.Time.dateToString{{/isDate}}{{#isInteger}}String.fromInt{{/isInteger}}{{#isLong}}String.fromInt{{/isLong}}{{#isNumber}}String.fromFloat{{/isNumber}}{{#isFloat}}String.fromFloat{{/isFloat}}{{#isDouble}}String.fromFloat{{/isDouble}}{{#allowableValues}}Api.Data.stringFrom{{#datatypeWithEnum}}{{datatypeWithEnum}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{dataType}}{{/datatypeWithEnum}}{{/allowableValues}}{{#isUuid}}Uuid.toString{{/isUuid}}{{^required}}){{/required}} {{paramName}}
|
{{^required}}Maybe.map ({{/required}}{{#required}}Just <| {{/required}}{{^isFile}}Http.stringPart {{/isFile}}{{#isFile}}Http.filePart {{/isFile}}"{{baseName}}"{{#isBoolean}}(\val -> if val then "true" else "false"){{/isBoolean}}{{#isDateTime}}Api.Time.dateTimeToString{{/isDateTime}}{{#isDate}}Api.Time.dateToString{{/isDate}}{{#isInteger}}String.fromInt{{/isInteger}}{{#isLong}}String.fromInt{{/isLong}}{{#isNumber}}String.fromFloat{{/isNumber}}{{#isFloat}}String.fromFloat{{/isFloat}}{{#isDouble}}String.fromFloat{{/isDouble}}{{#allowableValues}}Api.Data.stringFrom{{#datatypeWithEnum}}{{datatypeWithEnum}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{dataType}}{{/datatypeWithEnum}}{{/allowableValues}}{{#isUuid}}Uuid.toString{{/isUuid}}{{^required}}){{/required}} {{paramName}}
|
@ -56,7 +56,7 @@ import File exposing (File){{/includeFile}}
|
|||||||
Api.request
|
Api.request
|
||||||
"{{httpMethod}}"
|
"{{httpMethod}}"
|
||||||
"{{path}}"
|
"{{path}}"
|
||||||
[{{#pathParams}} ( "{{paramName}}", {{>paramToString}} {{>paramName}} ){{#-last}} {{/-last}}{{^-last}},{{/-last}}{{/pathParams}}]
|
[{{#pathParams}} ( "{{baseName}}", {{>paramToString}} {{>paramName}} ){{#-last}} {{/-last}}{{^-last}},{{/-last}}{{/pathParams}}]
|
||||||
[{{#queryParams}} ( "{{baseName}}", {{#required}}Just <| {{/required}}{{^required}}Maybe.map {{/required}}{{>paramToString}} {{>paramName}} ){{#-last}} {{/-last}}{{^-last}},{{/-last}}{{/queryParams}}]
|
[{{#queryParams}} ( "{{baseName}}", {{#required}}Just <| {{/required}}{{^required}}Maybe.map {{/required}}{{>paramToString}} {{>paramName}} ){{#-last}} {{/-last}}{{^-last}},{{/-last}}{{/queryParams}}]
|
||||||
[{{#headerParams}} ( "{{baseName}}", {{#required}}Just <| {{/required}}{{^required}}Maybe.map {{/required}}{{>paramToString}} {{>paramName}} ){{#-last}} {{/-last}}{{^-last}},{{/-last}}{{/headerParams}}]
|
[{{#headerParams}} ( "{{baseName}}", {{#required}}Just <| {{/required}}{{^required}}Maybe.map {{/required}}{{>paramToString}} {{>paramName}} ){{#-last}} {{/-last}}{{^-last}},{{/-last}}{{/headerParams}}]
|
||||||
{{#bodyParam}}
|
{{#bodyParam}}
|
||||||
|
@ -126,6 +126,29 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
format: uuid
|
format: uuid
|
||||||
|
/param-sanitize/{test id}:
|
||||||
|
post:
|
||||||
|
responses:
|
||||||
|
'405':
|
||||||
|
description: Invalid input
|
||||||
|
parameters:
|
||||||
|
- name: "query with spaces"
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- name: "test id"
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/x-www-form-urlencoded:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
"name with spaces":
|
||||||
|
type: string
|
||||||
components:
|
components:
|
||||||
schemas:
|
schemas:
|
||||||
Absent:
|
Absent:
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
module Api.Request.Default exposing
|
module Api.Request.Default exposing
|
||||||
( headerPost, HeaderType(..), headerTypeVariants
|
( headerPost, HeaderType(..), headerTypeVariants
|
||||||
, maybeGet
|
, maybeGet
|
||||||
|
, paramSanitizeTestIdPost
|
||||||
, pathStringIntegerEnumerationGet, Enumeration(..), enumerationVariants
|
, pathStringIntegerEnumerationGet, Enumeration(..), enumerationVariants
|
||||||
, queryGet, Enum(..), enumVariants
|
, queryGet, Enum(..), enumVariants
|
||||||
, securedPost
|
, securedPost
|
||||||
@ -134,6 +135,18 @@ maybeGet =
|
|||||||
Api.Data.maybeDecoder
|
Api.Data.maybeDecoder
|
||||||
|
|
||||||
|
|
||||||
|
paramSanitizeTestIdPost : String -> Maybe String -> Maybe String -> Api.Request ()
|
||||||
|
paramSanitizeTestIdPost testId_path queryWithSpaces_query nameWithSpaces =
|
||||||
|
Api.request
|
||||||
|
"POST"
|
||||||
|
"/param-sanitize/{test id}"
|
||||||
|
[ ( "test id", identity testId_path ) ]
|
||||||
|
[ ( "query with spaces", Maybe.map identity queryWithSpaces_query ) ]
|
||||||
|
[]
|
||||||
|
(Just <| Http.multipartBody <| List.filterMap identity [ Maybe.map (Http.stringPart "name with spaces") nameWithSpaces ])
|
||||||
|
(Json.Decode.succeed ())
|
||||||
|
|
||||||
|
|
||||||
pathStringIntegerEnumerationGet : String -> Int -> Enumeration -> Api.Request ()
|
pathStringIntegerEnumerationGet : String -> Int -> Enumeration -> Api.Request ()
|
||||||
pathStringIntegerEnumerationGet string_path integer_path enumeration_path =
|
pathStringIntegerEnumerationGet string_path integer_path enumeration_path =
|
||||||
Api.request
|
Api.request
|
||||||
|
Loading…
x
Reference in New Issue
Block a user