[julia] fix enum default vals, add api validations (#20520)

- Fix enum default value generation. Default values were falling back to the default code generator and were being generated improperly for Julia.
- Add more validations to client and server API call handlers. These validations were already being generated for models, but were missed out for API calls.
This commit is contained in:
Tanmay Mohapatra 2025-01-24 12:47:25 +05:30 committed by GitHub
parent 95a74c804c
commit 561a707afc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 44 additions and 0 deletions

View File

@ -437,6 +437,18 @@ public abstract class AbstractJuliaCodegen extends DefaultCodegen {
return "nothing";
}
@Override
public String toEnumDefaultValue(String value, String datatype) {
// we do not generate any separate enum structure in Julia
return value;
}
@Override
public String toEnumVarName(String value, String datatype) {
// we do not generate any separate enum structure in Julia
return value;
}
@Override
public String escapeUnsafeCharacters(String input) {
return input.replace("#=", "#_=").replace("=#", "=_#");

View File

@ -43,6 +43,21 @@ function _oacinternal_{{operationId}}(_api::{{classname}}{{#allParams}}{{#requir
{{#minItems}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :minItems, {{paramName}}, {{minItems}})
{{/minItems}}
{{#uniqueItems}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :uniqueItems, {{paramName}}, {{uniqueItems}})
{{/uniqueItems}}
{{#maxProperties}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :maxProperties, {{paramName}}, {{maxProperties}})
{{/maxProperties}}
{{#minProperties}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :minProperties, {{paramName}}, {{minProperties}})
{{/minProperties}}
{{#pattern}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :pattern, {{paramName}}, r"{{{pattern}}}")
{{/pattern}}
{{#multipleOf}}
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :multipleOf, {{paramName}}, {{multipleOf}})
{{/multipleOf}}
{{/hasValidation}}
{{/allParams}}

View File

@ -43,6 +43,21 @@ function {{operationId}}_validate(handler)
{{#minItems}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :minItems, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{minItems}})
{{/minItems}}
{{#uniqueItems}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :uniqueItems, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{uniqueItems}})
{{/uniqueItems}}
{{#maxProperties}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :maxProperties, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{maxProperties}})
{{/maxProperties}}
{{#minProperties}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :minProperties, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{minProperties}})
{{/minProperties}}
{{#pattern}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :pattern, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], r"{{{pattern}}}")
{{/pattern}}
{{#multipleOf}}
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :multipleOf, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{multipleOf}})
{{/multipleOf}}
{{/hasValidation}}{{/allParams}}
return handler(req)
end

View File

@ -172,6 +172,7 @@ const _returntypes_login_user_UserApi = Dict{Regex,Type}(
)
function _oacinternal_login_user(_api::UserApi, username::String, password::String; _mediaType=nothing)
OpenAPI.validate_param("username", "login_user", :pattern, username, r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$")
_ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_login_user_UserApi, "/user/login", [])
OpenAPI.Clients.set_param(_ctx.query, "username", username; style="form", is_explode=true) # type String

View File

@ -155,6 +155,7 @@ function login_user_validate(handler)
function login_user_validate_handler(req::HTTP.Request)
openapi_params = req.context[:openapi_params]
OpenAPI.validate_param("username", "login_user", :pattern, openapi_params["username"], r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$")
return handler(req)
end