diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b2daac9..17d7e3c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: with: version: ${{ matrix.version }} arch: ${{ matrix.arch }} - - uses: actions/cache@v1 + - uses: actions/cache@v4 env: cache-name: cache-artifacts with: diff --git a/Project.toml b/Project.toml index a77ed3a..94ae989 100644 --- a/Project.toml +++ b/Project.toml @@ -4,7 +4,7 @@ keywords = ["Swagger", "OpenAPI", "REST"] license = "MIT" desc = "OpenAPI server and client helper for Julia" authors = ["JuliaHub Inc."] -version = "0.1.28" +version = "0.2.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" diff --git a/src/val.jl b/src/val.jl index 21f393b..c6cd73a 100644 --- a/src/val.jl +++ b/src/val.jl @@ -84,3 +84,5 @@ function validate_param(parameter, operation_or_model, rule, value, args...) end validate_property(::Type{T}, name::Symbol, val) where {T<:APIModel} = nothing +validate_properties(::T) where {T<:APIModel} = nothing +check_required(::T) where {T<:APIModel} = true diff --git a/test/client/allany/AllAnyClient/.openapi-generator/VERSION b/test/client/allany/AllAnyClient/.openapi-generator/VERSION index 44bad91..96cfbb1 100644 --- a/test/client/allany/AllAnyClient/.openapi-generator/VERSION +++ b/test/client/allany/AllAnyClient/.openapi-generator/VERSION @@ -1 +1 @@ -7.0.1-SNAPSHOT \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/client/allany/AllAnyClient/README.md b/test/client/allany/AllAnyClient/README.md index 878d7c8..97fc884 100644 --- a/test/client/allany/AllAnyClient/README.md +++ b/test/client/allany/AllAnyClient/README.md @@ -6,6 +6,7 @@ API to test code generation for oneof anyof allof This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 0.0.1 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaClientCodegen diff --git a/test/client/allany/AllAnyClient/docs/DefaultApi.md b/test/client/allany/AllAnyClient/docs/DefaultApi.md index b08b6ef..0d8ecc0 100644 --- a/test/client/allany/AllAnyClient/docs/DefaultApi.md +++ b/test/client/allany/AllAnyClient/docs/DefaultApi.md @@ -24,7 +24,7 @@ Method | HTTP request | Description Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **DefaultApi** | API context | -**any_of_base_type** | [**AnyOfBaseType**](AnyOfBaseType.md)| | +**any_of_base_type** | [**AnyOfBaseType**](AnyOfBaseType.md) | | ### Return type @@ -52,7 +52,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **DefaultApi** | API context | -**any_of_mapped_pets** | [**AnyOfMappedPets**](AnyOfMappedPets.md)| | +**any_of_mapped_pets** | [**AnyOfMappedPets**](AnyOfMappedPets.md) | | ### Return type @@ -80,7 +80,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **DefaultApi** | API context | -**any_of_pets** | [**AnyOfPets**](AnyOfPets.md)| | +**any_of_pets** | [**AnyOfPets**](AnyOfPets.md) | | ### Return type @@ -108,7 +108,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **DefaultApi** | API context | -**type_with_all_array_types** | [**TypeWithAllArrayTypes**](TypeWithAllArrayTypes.md)| | +**type_with_all_array_types** | [**TypeWithAllArrayTypes**](TypeWithAllArrayTypes.md) | | ### Return type @@ -136,7 +136,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **DefaultApi** | API context | -**one_of_base_type** | [**OneOfBaseType**](OneOfBaseType.md)| | +**one_of_base_type** | [**OneOfBaseType**](OneOfBaseType.md) | | ### Return type @@ -164,7 +164,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **DefaultApi** | API context | -**one_of_mapped_pets** | [**OneOfMappedPets**](OneOfMappedPets.md)| | +**one_of_mapped_pets** | [**OneOfMappedPets**](OneOfMappedPets.md) | | ### Return type @@ -192,7 +192,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **DefaultApi** | API context | -**one_of_pets** | [**OneOfPets**](OneOfPets.md)| | +**one_of_pets** | [**OneOfPets**](OneOfPets.md) | | ### Return type diff --git a/test/client/allany/AllAnyClient/src/models/model_Cat.jl b/test/client/allany/AllAnyClient/src/models/model_Cat.jl index d4230b9..1f720cf 100644 --- a/test/client/allany/AllAnyClient/src/models/model_Cat.jl +++ b/test/client/allany/AllAnyClient/src/models/model_Cat.jl @@ -20,20 +20,28 @@ Base.@kwdef mutable struct Cat <: OpenAPI.APIModel age::Union{Nothing, Int64} = nothing function Cat(pet_type, hunts, age, ) - OpenAPI.validate_property(Cat, Symbol("pet_type"), pet_type) - OpenAPI.validate_property(Cat, Symbol("hunts"), hunts) - OpenAPI.validate_property(Cat, Symbol("age"), age) - return new(pet_type, hunts, age, ) + o = new(pet_type, hunts, age, ) + OpenAPI.validate_properties(o) + return o end end # type Cat const _property_types_Cat = Dict{Symbol,String}(Symbol("pet_type")=>"String", Symbol("hunts")=>"Bool", Symbol("age")=>"Int64", ) OpenAPI.property_type(::Type{ Cat }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Cat[name]))} -function check_required(o::Cat) +function OpenAPI.check_required(o::Cat) o.pet_type === nothing && (return false) true end +function OpenAPI.validate_properties(o::Cat) + OpenAPI.validate_property(Cat, Symbol("pet_type"), o.pet_type) + OpenAPI.validate_property(Cat, Symbol("hunts"), o.hunts) + OpenAPI.validate_property(Cat, Symbol("age"), o.age) +end + function OpenAPI.validate_property(::Type{ Cat }, name::Symbol, val) + + + end diff --git a/test/client/allany/AllAnyClient/src/models/model_Dog.jl b/test/client/allany/AllAnyClient/src/models/model_Dog.jl index 8af93c8..c5ac6b9 100644 --- a/test/client/allany/AllAnyClient/src/models/model_Dog.jl +++ b/test/client/allany/AllAnyClient/src/models/model_Dog.jl @@ -20,23 +20,32 @@ Base.@kwdef mutable struct Dog <: OpenAPI.APIModel breed::Union{Nothing, String} = nothing function Dog(pet_type, bark, breed, ) - OpenAPI.validate_property(Dog, Symbol("pet_type"), pet_type) - OpenAPI.validate_property(Dog, Symbol("bark"), bark) - OpenAPI.validate_property(Dog, Symbol("breed"), breed) - return new(pet_type, bark, breed, ) + o = new(pet_type, bark, breed, ) + OpenAPI.validate_properties(o) + return o end end # type Dog const _property_types_Dog = Dict{Symbol,String}(Symbol("pet_type")=>"String", Symbol("bark")=>"Bool", Symbol("breed")=>"String", ) OpenAPI.property_type(::Type{ Dog }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Dog[name]))} -function check_required(o::Dog) +function OpenAPI.check_required(o::Dog) o.pet_type === nothing && (return false) true end +function OpenAPI.validate_properties(o::Dog) + OpenAPI.validate_property(Dog, Symbol("pet_type"), o.pet_type) + OpenAPI.validate_property(Dog, Symbol("bark"), o.bark) + OpenAPI.validate_property(Dog, Symbol("breed"), o.breed) +end + function OpenAPI.validate_property(::Type{ Dog }, name::Symbol, val) + + + if name === Symbol("breed") OpenAPI.validate_param(name, "Dog", :enum, val, ["Dingo", "Husky", "Retriever", "Shepherd"]) end + end diff --git a/test/client/allany/AllAnyClient/src/models/model_Pet.jl b/test/client/allany/AllAnyClient/src/models/model_Pet.jl index f9dcf1f..e95c0d4 100644 --- a/test/client/allany/AllAnyClient/src/models/model_Pet.jl +++ b/test/client/allany/AllAnyClient/src/models/model_Pet.jl @@ -14,18 +14,24 @@ Base.@kwdef mutable struct Pet <: OpenAPI.APIModel pet_type::Union{Nothing, String} = nothing function Pet(pet_type, ) - OpenAPI.validate_property(Pet, Symbol("pet_type"), pet_type) - return new(pet_type, ) + o = new(pet_type, ) + OpenAPI.validate_properties(o) + return o end end # type Pet const _property_types_Pet = Dict{Symbol,String}(Symbol("pet_type")=>"String", ) OpenAPI.property_type(::Type{ Pet }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Pet[name]))} -function check_required(o::Pet) +function OpenAPI.check_required(o::Pet) o.pet_type === nothing && (return false) true end +function OpenAPI.validate_properties(o::Pet) + OpenAPI.validate_property(Pet, Symbol("pet_type"), o.pet_type) +end + function OpenAPI.validate_property(::Type{ Pet }, name::Symbol, val) + end diff --git a/test/client/allany/AllAnyClient/src/models/model_TypeWithAllArrayTypes.jl b/test/client/allany/AllAnyClient/src/models/model_TypeWithAllArrayTypes.jl index e781139..5236187 100644 --- a/test/client/allany/AllAnyClient/src/models/model_TypeWithAllArrayTypes.jl +++ b/test/client/allany/AllAnyClient/src/models/model_TypeWithAllArrayTypes.jl @@ -23,20 +23,29 @@ Base.@kwdef mutable struct TypeWithAllArrayTypes <: OpenAPI.APIModel anyofpets::Union{Nothing, Vector} = nothing # spec type: Union{ Nothing, Vector{AnyOfPets} } function TypeWithAllArrayTypes(oneofbase, anyofbase, oneofpets, anyofpets, ) - OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("oneofbase"), oneofbase) - OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("anyofbase"), anyofbase) - OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("oneofpets"), oneofpets) - OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("anyofpets"), anyofpets) - return new(oneofbase, anyofbase, oneofpets, anyofpets, ) + o = new(oneofbase, anyofbase, oneofpets, anyofpets, ) + OpenAPI.validate_properties(o) + return o end end # type TypeWithAllArrayTypes const _property_types_TypeWithAllArrayTypes = Dict{Symbol,String}(Symbol("oneofbase")=>"Vector{OneOfBaseType}", Symbol("anyofbase")=>"Vector{AnyOfBaseType}", Symbol("oneofpets")=>"Vector{OneOfPets}", Symbol("anyofpets")=>"Vector{AnyOfPets}", ) OpenAPI.property_type(::Type{ TypeWithAllArrayTypes }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_TypeWithAllArrayTypes[name]))} -function check_required(o::TypeWithAllArrayTypes) +function OpenAPI.check_required(o::TypeWithAllArrayTypes) true end +function OpenAPI.validate_properties(o::TypeWithAllArrayTypes) + OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("oneofbase"), o.oneofbase) + OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("anyofbase"), o.anyofbase) + OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("oneofpets"), o.oneofpets) + OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("anyofpets"), o.anyofpets) +end + function OpenAPI.validate_property(::Type{ TypeWithAllArrayTypes }, name::Symbol, val) + + + + end diff --git a/test/client/openapigenerator_petstore_v3/petstore/.openapi-generator/VERSION b/test/client/openapigenerator_petstore_v3/petstore/.openapi-generator/VERSION index 757e674..96cfbb1 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/.openapi-generator/VERSION +++ b/test/client/openapigenerator_petstore_v3/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -7.0.0-SNAPSHOT \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/client/openapigenerator_petstore_v3/petstore/README.md b/test/client/openapigenerator_petstore_v3/petstore/README.md index eb433b9..498b243 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/README.md +++ b/test/client/openapigenerator_petstore_v3/petstore/README.md @@ -6,6 +6,7 @@ This is a sample server Petstore server. For this sample, you can use the api ke This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 1.0.0 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaClientCodegen diff --git a/test/client/openapigenerator_petstore_v3/petstore/docs/PetApi.md b/test/client/openapigenerator_petstore_v3/petstore/docs/PetApi.md index 12643bf..56b2a75 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/docs/PetApi.md +++ b/test/client/openapigenerator_petstore_v3/petstore/docs/PetApi.md @@ -27,7 +27,7 @@ Add a new pet to the store Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**pet** | [**Pet**](Pet.md) | Pet object that needs to be added to the store | ### Return type @@ -57,13 +57,13 @@ Deletes a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| Pet id to delete | [default to nothing] +**pet_id** | **Int64** | Pet id to delete | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **api_key** | **String**| | [default to nothing] + **api_key** | **String** | | [default to nothing] ### Return type @@ -93,7 +93,7 @@ Multiple status values can be provided with comma separated strings Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**status** | [**Vector{String}**](String.md)| Status values that need to be considered for filter | [default to nothing] +**status** | [**Vector{String}**](String.md) | Status values that need to be considered for filter | ### Return type @@ -123,7 +123,7 @@ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**tags** | [**Vector{String}**](String.md)| Tags to filter by | [default to nothing] +**tags** | [**Vector{String}**](String.md) | Tags to filter by | ### Return type @@ -153,7 +153,7 @@ Returns a single pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| ID of pet to return | [default to nothing] +**pet_id** | **Int64** | ID of pet to return | ### Return type @@ -183,7 +183,7 @@ Update an existing pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**pet** | [**Pet**](Pet.md) | Pet object that needs to be added to the store | ### Return type @@ -213,14 +213,14 @@ Updates a pet in the store with form data Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| ID of pet that needs to be updated | [default to nothing] +**pet_id** | **Int64** | ID of pet that needs to be updated | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **name** | **String**| Updated name of the pet | [default to nothing] - **status** | **String**| Updated status of the pet | [default to nothing] + **name** | **String** | Updated name of the pet | [default to nothing] + **status** | **String** | Updated status of the pet | [default to nothing] ### Return type @@ -250,14 +250,14 @@ uploads an image Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| ID of pet to update | [default to nothing] +**pet_id** | **Int64** | ID of pet to update | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **file** | **String****String**| file to upload | [default to nothing] - **additional_metadata** | **String**| Additional data to pass to server | [default to nothing] + **file** | **String** | file to upload | + **additional_metadata** | **String** | Additional data to pass to server | [default to nothing] ### Return type diff --git a/test/client/openapigenerator_petstore_v3/petstore/docs/StoreApi.md b/test/client/openapigenerator_petstore_v3/petstore/docs/StoreApi.md index 5e8bae0..659d144 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/docs/StoreApi.md +++ b/test/client/openapigenerator_petstore_v3/petstore/docs/StoreApi.md @@ -23,7 +23,7 @@ For valid response try integer IDs with value < 1000. Anything above 1000 or non Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **StoreApi** | API context | -**order_id** | **String**| ID of the order that needs to be deleted | [default to nothing] +**order_id** | **String** | ID of the order that needs to be deleted | ### Return type @@ -79,7 +79,7 @@ For valid response try integer IDs with value <= 5 or > 10. Other values will ge Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **StoreApi** | API context | -**order_id** | **Int64**| ID of pet that needs to be fetched | [default to nothing] +**order_id** | **Int64** | ID of pet that needs to be fetched | ### Return type @@ -109,7 +109,7 @@ Place an order for a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **StoreApi** | API context | -**order** | [**Order**](Order.md)| order placed for purchasing the pet | +**order** | [**Order**](Order.md) | order placed for purchasing the pet | ### Return type diff --git a/test/client/openapigenerator_petstore_v3/petstore/docs/UserApi.md b/test/client/openapigenerator_petstore_v3/petstore/docs/UserApi.md index d839da1..5a7a243 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/docs/UserApi.md +++ b/test/client/openapigenerator_petstore_v3/petstore/docs/UserApi.md @@ -27,7 +27,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**user** | [**User**](User.md)| Created user object | +**user** | [**User**](User.md) | Created user object | ### Return type @@ -57,7 +57,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**user** | [**Vector{User}**](User.md)| List of user object | +**user** | [**Vector{User}**](User.md) | List of user object | ### Return type @@ -87,7 +87,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**user** | [**Vector{User}**](User.md)| List of user object | +**user** | [**Vector{User}**](User.md) | List of user object | ### Return type @@ -117,7 +117,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| The name that needs to be deleted | [default to nothing] +**username** | **String** | The name that needs to be deleted | ### Return type @@ -147,7 +147,7 @@ Get user by user name Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| The name that needs to be fetched. Use user1 for testing. | [default to nothing] +**username** | **String** | The name that needs to be fetched. Use user1 for testing. | ### Return type @@ -177,8 +177,8 @@ Logs user into the system Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| The user name for login | [default to nothing] -**password** | **String**| The password for login in clear text | [default to nothing] +**username** | **String** | The user name for login | +**password** | **String** | The password for login in clear text | ### Return type @@ -234,8 +234,8 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| name that need to be deleted | [default to nothing] -**user** | [**User**](User.md)| Updated user object | +**username** | **String** | name that need to be deleted | +**user** | [**User**](User.md) | Updated user object | ### Return type diff --git a/test/client/openapigenerator_petstore_v3/petstore/src/apis/api_PetApi.jl b/test/client/openapigenerator_petstore_v3/petstore/src/apis/api_PetApi.jl index 2d66bf1..a4d9e1e 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/src/apis/api_PetApi.jl +++ b/test/client/openapigenerator_petstore_v3/petstore/src/apis/api_PetApi.jl @@ -82,7 +82,7 @@ const _returntypes_find_pets_by_status_PetApi = Dict{Regex,Type}( function _oacinternal_find_pets_by_status(_api::PetApi, status::Vector{String}; _mediaType=nothing) _ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_find_pets_by_status_PetApi, "/pet/findByStatus", ["petstore_auth", ]) - OpenAPI.Clients.set_param(_ctx.query, "status", status) # type Vector{String} + OpenAPI.Clients.set_param(_ctx.query, "status", status; style="form", is_explode=false) # type Vector{String} OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType]) return _ctx @@ -114,7 +114,7 @@ const _returntypes_find_pets_by_tags_PetApi = Dict{Regex,Type}( function _oacinternal_find_pets_by_tags(_api::PetApi, tags::Vector{String}; _mediaType=nothing) _ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_find_pets_by_tags_PetApi, "/pet/findByTags", ["petstore_auth", ]) - OpenAPI.Clients.set_param(_ctx.query, "tags", tags) # type Vector{String} + OpenAPI.Clients.set_param(_ctx.query, "tags", tags; style="form", is_explode=false) # type Vector{String} OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType]) return _ctx @@ -247,7 +247,7 @@ const _returntypes_upload_file_PetApi = Dict{Regex,Type}( function _oacinternal_upload_file(_api::PetApi, pet_id::Int64; file=nothing, additional_metadata=nothing, _mediaType=nothing) _ctx = OpenAPI.Clients.Ctx(_api.client, "POST", _returntypes_upload_file_PetApi, "/pet/{petId}/uploadImage", ["petstore_auth", ]) OpenAPI.Clients.set_param(_ctx.path, "petId", pet_id) # type Int64 - OpenAPI.Clients.set_param(_ctx.file, "file", file) # type Vector{UInt8} + OpenAPI.Clients.set_param(_ctx.file, "file", file) # type String OpenAPI.Clients.set_param(_ctx.form, "additionalMetadata", additional_metadata) # type String OpenAPI.Clients.set_header_accept(_ctx, ["application/json", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["multipart/form-data", ] : [_mediaType]) diff --git a/test/client/openapigenerator_petstore_v3/petstore/src/apis/api_UserApi.jl b/test/client/openapigenerator_petstore_v3/petstore/src/apis/api_UserApi.jl index 52dceb8..fb30046 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/src/apis/api_UserApi.jl +++ b/test/client/openapigenerator_petstore_v3/petstore/src/apis/api_UserApi.jl @@ -172,10 +172,11 @@ 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) # type String - OpenAPI.Clients.set_param(_ctx.query, "password", password) # type String + OpenAPI.Clients.set_param(_ctx.query, "username", username; style="form", is_explode=true) # type String + OpenAPI.Clients.set_param(_ctx.query, "password", password; style="form", is_explode=true) # type String OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType]) return _ctx diff --git a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_ApiResponse.jl b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_ApiResponse.jl index e19464b..80cfeac 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_ApiResponse.jl +++ b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_ApiResponse.jl @@ -21,22 +21,30 @@ Base.@kwdef mutable struct ApiResponse <: OpenAPI.APIModel type::Union{Nothing, String} = nothing function ApiResponse(message, code, type, ) - OpenAPI.validate_property(ApiResponse, Symbol("message"), message) - OpenAPI.validate_property(ApiResponse, Symbol("code"), code) - OpenAPI.validate_property(ApiResponse, Symbol("type"), type) - return new(message, code, type, ) + o = new(message, code, type, ) + OpenAPI.validate_properties(o) + return o end end # type ApiResponse const _property_types_ApiResponse = Dict{Symbol,String}(Symbol("message")=>"String", Symbol("code")=>"Int64", Symbol("type")=>"String", ) OpenAPI.property_type(::Type{ ApiResponse }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ApiResponse[name]))} -function check_required(o::ApiResponse) +function OpenAPI.check_required(o::ApiResponse) true end +function OpenAPI.validate_properties(o::ApiResponse) + OpenAPI.validate_property(ApiResponse, Symbol("message"), o.message) + OpenAPI.validate_property(ApiResponse, Symbol("code"), o.code) + OpenAPI.validate_property(ApiResponse, Symbol("type"), o.type) +end + function OpenAPI.validate_property(::Type{ ApiResponse }, name::Symbol, val) + + if name === Symbol("code") OpenAPI.validate_param(name, "ApiResponse", :format, val, "int32") end + end diff --git a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Category.jl b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Category.jl index 5224efb..53e027a 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Category.jl +++ b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Category.jl @@ -18,23 +18,30 @@ Base.@kwdef mutable struct Category <: OpenAPI.APIModel id::Union{Nothing, Int64} = nothing function Category(name, id, ) - OpenAPI.validate_property(Category, Symbol("name"), name) - OpenAPI.validate_property(Category, Symbol("id"), id) - return new(name, id, ) + o = new(name, id, ) + OpenAPI.validate_properties(o) + return o end end # type Category const _property_types_Category = Dict{Symbol,String}(Symbol("name")=>"String", Symbol("id")=>"Int64", ) OpenAPI.property_type(::Type{ Category }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Category[name]))} -function check_required(o::Category) +function OpenAPI.check_required(o::Category) true end +function OpenAPI.validate_properties(o::Category) + OpenAPI.validate_property(Category, Symbol("name"), o.name) + OpenAPI.validate_property(Category, Symbol("id"), o.id) +end + function OpenAPI.validate_property(::Type{ Category }, name::Symbol, val) + if name === Symbol("name") OpenAPI.validate_param(name, "Category", :pattern, val, r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$") end + if name === Symbol("id") OpenAPI.validate_param(name, "Category", :format, val, "int64") end diff --git a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Order.jl b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Order.jl index da94163..da6c81e 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Order.jl +++ b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Order.jl @@ -30,36 +30,48 @@ Base.@kwdef mutable struct Order <: OpenAPI.APIModel quantity::Union{Nothing, Int64} = nothing function Order(petId, shipDate, status, id, complete, quantity, ) - OpenAPI.validate_property(Order, Symbol("petId"), petId) - OpenAPI.validate_property(Order, Symbol("shipDate"), shipDate) - OpenAPI.validate_property(Order, Symbol("status"), status) - OpenAPI.validate_property(Order, Symbol("id"), id) - OpenAPI.validate_property(Order, Symbol("complete"), complete) - OpenAPI.validate_property(Order, Symbol("quantity"), quantity) - return new(petId, shipDate, status, id, complete, quantity, ) + o = new(petId, shipDate, status, id, complete, quantity, ) + OpenAPI.validate_properties(o) + return o end end # type Order const _property_types_Order = Dict{Symbol,String}(Symbol("petId")=>"Int64", Symbol("shipDate")=>"ZonedDateTime", Symbol("status")=>"String", Symbol("id")=>"Int64", Symbol("complete")=>"Bool", Symbol("quantity")=>"Int64", ) OpenAPI.property_type(::Type{ Order }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Order[name]))} -function check_required(o::Order) +function OpenAPI.check_required(o::Order) true end +function OpenAPI.validate_properties(o::Order) + OpenAPI.validate_property(Order, Symbol("petId"), o.petId) + OpenAPI.validate_property(Order, Symbol("shipDate"), o.shipDate) + OpenAPI.validate_property(Order, Symbol("status"), o.status) + OpenAPI.validate_property(Order, Symbol("id"), o.id) + OpenAPI.validate_property(Order, Symbol("complete"), o.complete) + OpenAPI.validate_property(Order, Symbol("quantity"), o.quantity) +end + function OpenAPI.validate_property(::Type{ Order }, name::Symbol, val) + if name === Symbol("petId") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + if name === Symbol("shipDate") OpenAPI.validate_param(name, "Order", :format, val, "date-time") end + if name === Symbol("status") OpenAPI.validate_param(name, "Order", :enum, val, ["placed", "approved", "delivered"]) end + + if name === Symbol("id") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + + if name === Symbol("quantity") OpenAPI.validate_param(name, "Order", :format, val, "int32") end diff --git a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Pet.jl b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Pet.jl index 2b4069f..9b30f64 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Pet.jl +++ b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Pet.jl @@ -30,30 +30,42 @@ Base.@kwdef mutable struct Pet <: OpenAPI.APIModel category = nothing # spec type: Union{ Nothing, Category } function Pet(name, status, id, photoUrls, tags, category, ) - OpenAPI.validate_property(Pet, Symbol("name"), name) - OpenAPI.validate_property(Pet, Symbol("status"), status) - OpenAPI.validate_property(Pet, Symbol("id"), id) - OpenAPI.validate_property(Pet, Symbol("photoUrls"), photoUrls) - OpenAPI.validate_property(Pet, Symbol("tags"), tags) - OpenAPI.validate_property(Pet, Symbol("category"), category) - return new(name, status, id, photoUrls, tags, category, ) + o = new(name, status, id, photoUrls, tags, category, ) + OpenAPI.validate_properties(o) + return o end end # type Pet const _property_types_Pet = Dict{Symbol,String}(Symbol("name")=>"String", Symbol("status")=>"String", Symbol("id")=>"Int64", Symbol("photoUrls")=>"Vector{String}", Symbol("tags")=>"Vector{Tag}", Symbol("category")=>"Category", ) OpenAPI.property_type(::Type{ Pet }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Pet[name]))} -function check_required(o::Pet) +function OpenAPI.check_required(o::Pet) o.name === nothing && (return false) o.photoUrls === nothing && (return false) true end +function OpenAPI.validate_properties(o::Pet) + OpenAPI.validate_property(Pet, Symbol("name"), o.name) + OpenAPI.validate_property(Pet, Symbol("status"), o.status) + OpenAPI.validate_property(Pet, Symbol("id"), o.id) + OpenAPI.validate_property(Pet, Symbol("photoUrls"), o.photoUrls) + OpenAPI.validate_property(Pet, Symbol("tags"), o.tags) + OpenAPI.validate_property(Pet, Symbol("category"), o.category) +end + function OpenAPI.validate_property(::Type{ Pet }, name::Symbol, val) + + if name === Symbol("status") OpenAPI.validate_param(name, "Pet", :enum, val, ["available", "pending", "sold"]) end + + if name === Symbol("id") OpenAPI.validate_param(name, "Pet", :format, val, "int64") end + + + end diff --git a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Tag.jl b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Tag.jl index f3410e8..0550acc 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Tag.jl +++ b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_Tag.jl @@ -18,20 +18,27 @@ Base.@kwdef mutable struct Tag <: OpenAPI.APIModel id::Union{Nothing, Int64} = nothing function Tag(name, id, ) - OpenAPI.validate_property(Tag, Symbol("name"), name) - OpenAPI.validate_property(Tag, Symbol("id"), id) - return new(name, id, ) + o = new(name, id, ) + OpenAPI.validate_properties(o) + return o end end # type Tag const _property_types_Tag = Dict{Symbol,String}(Symbol("name")=>"String", Symbol("id")=>"Int64", ) OpenAPI.property_type(::Type{ Tag }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Tag[name]))} -function check_required(o::Tag) +function OpenAPI.check_required(o::Tag) true end +function OpenAPI.validate_properties(o::Tag) + OpenAPI.validate_property(Tag, Symbol("name"), o.name) + OpenAPI.validate_property(Tag, Symbol("id"), o.id) +end + function OpenAPI.validate_property(::Type{ Tag }, name::Symbol, val) + + if name === Symbol("id") OpenAPI.validate_param(name, "Tag", :format, val, "int64") end diff --git a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_User.jl b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_User.jl index 0572483..95e836a 100644 --- a/test/client/openapigenerator_petstore_v3/petstore/src/models/model_User.jl +++ b/test/client/openapigenerator_petstore_v3/petstore/src/models/model_User.jl @@ -36,30 +36,43 @@ Base.@kwdef mutable struct User <: OpenAPI.APIModel email::Union{Nothing, String} = nothing function User(password, id, username, firstName, lastName, phone, userStatus, email, ) - OpenAPI.validate_property(User, Symbol("password"), password) - OpenAPI.validate_property(User, Symbol("id"), id) - OpenAPI.validate_property(User, Symbol("username"), username) - OpenAPI.validate_property(User, Symbol("firstName"), firstName) - OpenAPI.validate_property(User, Symbol("lastName"), lastName) - OpenAPI.validate_property(User, Symbol("phone"), phone) - OpenAPI.validate_property(User, Symbol("userStatus"), userStatus) - OpenAPI.validate_property(User, Symbol("email"), email) - return new(password, id, username, firstName, lastName, phone, userStatus, email, ) + o = new(password, id, username, firstName, lastName, phone, userStatus, email, ) + OpenAPI.validate_properties(o) + return o end end # type User const _property_types_User = Dict{Symbol,String}(Symbol("password")=>"String", Symbol("id")=>"Int64", Symbol("username")=>"String", Symbol("firstName")=>"String", Symbol("lastName")=>"String", Symbol("phone")=>"String", Symbol("userStatus")=>"Int64", Symbol("email")=>"String", ) OpenAPI.property_type(::Type{ User }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_User[name]))} -function check_required(o::User) +function OpenAPI.check_required(o::User) true end +function OpenAPI.validate_properties(o::User) + OpenAPI.validate_property(User, Symbol("password"), o.password) + OpenAPI.validate_property(User, Symbol("id"), o.id) + OpenAPI.validate_property(User, Symbol("username"), o.username) + OpenAPI.validate_property(User, Symbol("firstName"), o.firstName) + OpenAPI.validate_property(User, Symbol("lastName"), o.lastName) + OpenAPI.validate_property(User, Symbol("phone"), o.phone) + OpenAPI.validate_property(User, Symbol("userStatus"), o.userStatus) + OpenAPI.validate_property(User, Symbol("email"), o.email) +end + function OpenAPI.validate_property(::Type{ User }, name::Symbol, val) + + if name === Symbol("id") OpenAPI.validate_param(name, "User", :format, val, "int64") end + + + + + if name === Symbol("userStatus") OpenAPI.validate_param(name, "User", :format, val, "int32") end + end diff --git a/test/client/openapigenerator_petstore_v3/petstore_test_petapi.jl b/test/client/openapigenerator_petstore_v3/petstore_test_petapi.jl index fb0b080..363ee0f 100644 --- a/test/client/openapigenerator_petstore_v3/petstore_test_petapi.jl +++ b/test/client/openapigenerator_petstore_v3/petstore_test_petapi.jl @@ -17,7 +17,7 @@ function test(uri; test_file_upload=false) @test_throws OpenAPI.ValidationException Pet(;id=10, category=cat, name="felix", photoUrls=nothing, tags=[tag1, tag2], status="invalid-status") - pet = Pet(;id=10, category=cat, name="felix", photoUrls=nothing, tags=[tag1,tag2], status="pending") + pet = Pet(;id=10, category=cat, name="felix", photoUrls=["http://photo/1","http://photo/2"], tags=[tag1,tag2], status="pending") @info("PetApi - add_pet") api_return, http_resp = add_pet(api, pet) diff --git a/test/client/openapigenerator_petstore_v3/petstore_test_storeapi.jl b/test/client/openapigenerator_petstore_v3/petstore_test_storeapi.jl index 15991b6..81e8360 100644 --- a/test/client/openapigenerator_petstore_v3/petstore_test_storeapi.jl +++ b/test/client/openapigenerator_petstore_v3/petstore_test_storeapi.jl @@ -20,7 +20,7 @@ function test(uri) @test !isempty(inventory) @info("StoreApi - place_order") - @test_throws OpenAPI.ValidationException Order(; id=5, petId=10, quantity=2, shipDate=DateTime(2017, 03, 12), status="invalid_status", complete=false) + @test_throws OpenAPI.ValidationException Order(; id=5, petId=10, quantity=2, shipDate=ZonedDateTime(DateTime(2017, 03, 12), localzone()), status="invalid_status", complete=false) order = Order(; id=5, petId=10, quantity=2, shipDate=ZonedDateTime(DateTime(2017, 03, 12), localzone()), status="placed", complete=false) neworder, http_resp = place_order(api, order) @test http_resp.status == 200 diff --git a/test/client/petstore_v2/petstore/.openapi-generator/VERSION b/test/client/petstore_v2/petstore/.openapi-generator/VERSION index 757e674..96cfbb1 100644 --- a/test/client/petstore_v2/petstore/.openapi-generator/VERSION +++ b/test/client/petstore_v2/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -7.0.0-SNAPSHOT \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/client/petstore_v2/petstore/README.md b/test/client/petstore_v2/petstore/README.md index b6cee82..ffb43f5 100644 --- a/test/client/petstore_v2/petstore/README.md +++ b/test/client/petstore_v2/petstore/README.md @@ -6,6 +6,7 @@ This is a sample server Petstore server. You can find out more about Swagger at This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 1.0.6 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaClientCodegen diff --git a/test/client/petstore_v2/petstore/docs/PetApi.md b/test/client/petstore_v2/petstore/docs/PetApi.md index d9e89af..2d1454d 100644 --- a/test/client/petstore_v2/petstore/docs/PetApi.md +++ b/test/client/petstore_v2/petstore/docs/PetApi.md @@ -25,7 +25,7 @@ Add a new pet to the store Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**body** | [**Pet**](Pet.md) | Pet object that needs to be added to the store | ### Return type @@ -53,13 +53,13 @@ Deletes a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| Pet id to delete | [default to nothing] +**pet_id** | **Int64** | Pet id to delete | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **api_key** | **String**| | [default to nothing] + **api_key** | **String** | | [default to nothing] ### Return type @@ -89,7 +89,7 @@ Multiple status values can be provided with comma separated strings Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**status** | [**Vector{String}**](String.md)| Status values that need to be considered for filter | [default to nothing] +**status** | [**Vector{String}**](String.md) | Status values that need to be considered for filter | ### Return type @@ -119,7 +119,7 @@ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**tags** | [**Vector{String}**](String.md)| Tags to filter by | [default to nothing] +**tags** | [**Vector{String}**](String.md) | Tags to filter by | ### Return type @@ -149,7 +149,7 @@ Returns a single pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| ID of pet to return | [default to nothing] +**pet_id** | **Int64** | ID of pet to return | ### Return type @@ -177,7 +177,7 @@ Update an existing pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**body** | [**Pet**](Pet.md) | Pet object that needs to be added to the store | ### Return type @@ -205,14 +205,14 @@ Updates a pet in the store with form data Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| ID of pet that needs to be updated | [default to nothing] +**pet_id** | **Int64** | ID of pet that needs to be updated | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **name** | **String**| Updated name of the pet | [default to nothing] - **status** | **String**| Updated status of the pet | [default to nothing] + **name** | **String** | Updated name of the pet | [default to nothing] + **status** | **String** | Updated status of the pet | [default to nothing] ### Return type @@ -240,14 +240,14 @@ uploads an image Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| ID of pet to update | [default to nothing] +**pet_id** | **Int64** | ID of pet to update | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **additional_metadata** | **String**| Additional data to pass to server | [default to nothing] - **file** | **String****String**| file to upload | [default to nothing] + **additional_metadata** | **String** | Additional data to pass to server | [default to nothing] + **file** | **String** | file to upload | ### Return type diff --git a/test/client/petstore_v2/petstore/docs/StoreApi.md b/test/client/petstore_v2/petstore/docs/StoreApi.md index 5331bcd..0a1b029 100644 --- a/test/client/petstore_v2/petstore/docs/StoreApi.md +++ b/test/client/petstore_v2/petstore/docs/StoreApi.md @@ -23,7 +23,7 @@ For valid response try integer IDs with positive integer value. Negative or non- Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **StoreApi** | API context | -**order_id** | **Int64**| ID of the order that needs to be deleted | [default to nothing] +**order_id** | **Int64** | ID of the order that needs to be deleted | ### Return type @@ -79,7 +79,7 @@ For valid response try integer IDs with value >= 1 and <= 10. Other values will Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **StoreApi** | API context | -**order_id** | **Int64**| ID of pet that needs to be fetched | [default to nothing] +**order_id** | **Int64** | ID of pet that needs to be fetched | ### Return type @@ -107,7 +107,7 @@ Place an order for a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **StoreApi** | API context | -**body** | [**Order**](Order.md)| order placed for purchasing the pet | +**body** | [**Order**](Order.md) | order placed for purchasing the pet | ### Return type diff --git a/test/client/petstore_v2/petstore/docs/UserApi.md b/test/client/petstore_v2/petstore/docs/UserApi.md index b7befee..27639c4 100644 --- a/test/client/petstore_v2/petstore/docs/UserApi.md +++ b/test/client/petstore_v2/petstore/docs/UserApi.md @@ -27,7 +27,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**body** | [**User**](User.md)| Created user object | +**body** | [**User**](User.md) | Created user object | ### Return type @@ -55,7 +55,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**body** | [**Vector{User}**](User.md)| List of user object | +**body** | [**Vector{User}**](User.md) | List of user object | ### Return type @@ -83,7 +83,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**body** | [**Vector{User}**](User.md)| List of user object | +**body** | [**Vector{User}**](User.md) | List of user object | ### Return type @@ -113,7 +113,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| The name that needs to be deleted | [default to nothing] +**username** | **String** | The name that needs to be deleted | ### Return type @@ -141,7 +141,7 @@ Get user by user name Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| The name that needs to be fetched. Use user1 for testing. | [default to nothing] +**username** | **String** | The name that needs to be fetched. Use user1 for testing. | ### Return type @@ -169,8 +169,8 @@ Logs user into the system Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| The user name for login | [default to nothing] -**password** | **String**| The password for login in clear text | [default to nothing] +**username** | **String** | The user name for login | +**password** | **String** | The password for login in clear text | ### Return type @@ -224,8 +224,8 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| name that need to be updated | [default to nothing] -**body** | [**User**](User.md)| Updated user object | +**username** | **String** | name that need to be updated | +**body** | [**User**](User.md) | Updated user object | ### Return type diff --git a/test/client/petstore_v2/petstore/src/apis/api_PetApi.jl b/test/client/petstore_v2/petstore/src/apis/api_PetApi.jl index 6211942..4a3dada 100644 --- a/test/client/petstore_v2/petstore/src/apis/api_PetApi.jl +++ b/test/client/petstore_v2/petstore/src/apis/api_PetApi.jl @@ -78,7 +78,7 @@ const _returntypes_find_pets_by_status_PetApi = Dict{Regex,Type}( function _oacinternal_find_pets_by_status(_api::PetApi, status::Vector{String}; _mediaType=nothing) _ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_find_pets_by_status_PetApi, "/pet/findByStatus", ["petstore_auth", ]) - OpenAPI.Clients.set_param(_ctx.query, "status", status) # type Vector{String} + OpenAPI.Clients.set_param(_ctx.query, "status", status; style="form", is_explode=true) # type Vector{String} OpenAPI.Clients.set_header_accept(_ctx, ["application/json", "application/xml", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType]) return _ctx @@ -110,7 +110,7 @@ const _returntypes_find_pets_by_tags_PetApi = Dict{Regex,Type}( function _oacinternal_find_pets_by_tags(_api::PetApi, tags::Vector{String}; _mediaType=nothing) _ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_find_pets_by_tags_PetApi, "/pet/findByTags", ["petstore_auth", ]) - OpenAPI.Clients.set_param(_ctx.query, "tags", tags) # type Vector{String} + OpenAPI.Clients.set_param(_ctx.query, "tags", tags; style="form", is_explode=true) # type Vector{String} OpenAPI.Clients.set_header_accept(_ctx, ["application/json", "application/xml", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType]) return _ctx @@ -239,7 +239,7 @@ function _oacinternal_upload_file(_api::PetApi, pet_id::Int64; additional_metada _ctx = OpenAPI.Clients.Ctx(_api.client, "POST", _returntypes_upload_file_PetApi, "/pet/{petId}/uploadImage", ["petstore_auth", ]) OpenAPI.Clients.set_param(_ctx.path, "petId", pet_id) # type Int64 OpenAPI.Clients.set_param(_ctx.form, "additionalMetadata", additional_metadata) # type String - OpenAPI.Clients.set_param(_ctx.file, "file", file) # type Vector{UInt8} + OpenAPI.Clients.set_param(_ctx.file, "file", file) # type String OpenAPI.Clients.set_header_accept(_ctx, ["application/json", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["multipart/form-data", ] : [_mediaType]) return _ctx diff --git a/test/client/petstore_v2/petstore/src/apis/api_UserApi.jl b/test/client/petstore_v2/petstore/src/apis/api_UserApi.jl index cdc26df..3515b3d 100644 --- a/test/client/petstore_v2/petstore/src/apis/api_UserApi.jl +++ b/test/client/petstore_v2/petstore/src/apis/api_UserApi.jl @@ -167,8 +167,8 @@ const _returntypes_login_user_UserApi = Dict{Regex,Type}( function _oacinternal_login_user(_api::UserApi, username::String, password::String; _mediaType=nothing) _ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_login_user_UserApi, "/user/login", []) - OpenAPI.Clients.set_param(_ctx.query, "username", username) # type String - OpenAPI.Clients.set_param(_ctx.query, "password", password) # type String + OpenAPI.Clients.set_param(_ctx.query, "username", username; style="", is_explode=false) # type String + OpenAPI.Clients.set_param(_ctx.query, "password", password; style="", is_explode=false) # type String OpenAPI.Clients.set_header_accept(_ctx, ["application/json", "application/xml", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType]) return _ctx diff --git a/test/client/petstore_v2/petstore/src/models/model_ApiResponse.jl b/test/client/petstore_v2/petstore/src/models/model_ApiResponse.jl index e8b7ce2..a196ba0 100644 --- a/test/client/petstore_v2/petstore/src/models/model_ApiResponse.jl +++ b/test/client/petstore_v2/petstore/src/models/model_ApiResponse.jl @@ -20,22 +20,30 @@ Base.@kwdef mutable struct ApiResponse <: OpenAPI.APIModel message::Union{Nothing, String} = nothing function ApiResponse(code, type, message, ) - OpenAPI.validate_property(ApiResponse, Symbol("code"), code) - OpenAPI.validate_property(ApiResponse, Symbol("type"), type) - OpenAPI.validate_property(ApiResponse, Symbol("message"), message) - return new(code, type, message, ) + o = new(code, type, message, ) + OpenAPI.validate_properties(o) + return o end end # type ApiResponse const _property_types_ApiResponse = Dict{Symbol,String}(Symbol("code")=>"Int64", Symbol("type")=>"String", Symbol("message")=>"String", ) OpenAPI.property_type(::Type{ ApiResponse }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ApiResponse[name]))} -function check_required(o::ApiResponse) +function OpenAPI.check_required(o::ApiResponse) true end +function OpenAPI.validate_properties(o::ApiResponse) + OpenAPI.validate_property(ApiResponse, Symbol("code"), o.code) + OpenAPI.validate_property(ApiResponse, Symbol("type"), o.type) + OpenAPI.validate_property(ApiResponse, Symbol("message"), o.message) +end + function OpenAPI.validate_property(::Type{ ApiResponse }, name::Symbol, val) + if name === Symbol("code") OpenAPI.validate_param(name, "ApiResponse", :format, val, "int32") end + + end diff --git a/test/client/petstore_v2/petstore/src/models/model_Category.jl b/test/client/petstore_v2/petstore/src/models/model_Category.jl index 3153470..159890d 100644 --- a/test/client/petstore_v2/petstore/src/models/model_Category.jl +++ b/test/client/petstore_v2/petstore/src/models/model_Category.jl @@ -17,21 +17,28 @@ Base.@kwdef mutable struct Category <: OpenAPI.APIModel name::Union{Nothing, String} = nothing function Category(id, name, ) - OpenAPI.validate_property(Category, Symbol("id"), id) - OpenAPI.validate_property(Category, Symbol("name"), name) - return new(id, name, ) + o = new(id, name, ) + OpenAPI.validate_properties(o) + return o end end # type Category const _property_types_Category = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", ) OpenAPI.property_type(::Type{ Category }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Category[name]))} -function check_required(o::Category) +function OpenAPI.check_required(o::Category) true end +function OpenAPI.validate_properties(o::Category) + OpenAPI.validate_property(Category, Symbol("id"), o.id) + OpenAPI.validate_property(Category, Symbol("name"), o.name) +end + function OpenAPI.validate_property(::Type{ Category }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Category", :format, val, "int64") end + end diff --git a/test/client/petstore_v2/petstore/src/models/model_Order.jl b/test/client/petstore_v2/petstore/src/models/model_Order.jl index 0f7efe8..a11ca51 100644 --- a/test/client/petstore_v2/petstore/src/models/model_Order.jl +++ b/test/client/petstore_v2/petstore/src/models/model_Order.jl @@ -29,37 +29,49 @@ Base.@kwdef mutable struct Order <: OpenAPI.APIModel complete::Union{Nothing, Bool} = nothing function Order(id, petId, quantity, shipDate, status, complete, ) - OpenAPI.validate_property(Order, Symbol("id"), id) - OpenAPI.validate_property(Order, Symbol("petId"), petId) - OpenAPI.validate_property(Order, Symbol("quantity"), quantity) - OpenAPI.validate_property(Order, Symbol("shipDate"), shipDate) - OpenAPI.validate_property(Order, Symbol("status"), status) - OpenAPI.validate_property(Order, Symbol("complete"), complete) - return new(id, petId, quantity, shipDate, status, complete, ) + o = new(id, petId, quantity, shipDate, status, complete, ) + OpenAPI.validate_properties(o) + return o end end # type Order const _property_types_Order = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("petId")=>"Int64", Symbol("quantity")=>"Int64", Symbol("shipDate")=>"ZonedDateTime", Symbol("status")=>"String", Symbol("complete")=>"Bool", ) OpenAPI.property_type(::Type{ Order }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Order[name]))} -function check_required(o::Order) +function OpenAPI.check_required(o::Order) true end +function OpenAPI.validate_properties(o::Order) + OpenAPI.validate_property(Order, Symbol("id"), o.id) + OpenAPI.validate_property(Order, Symbol("petId"), o.petId) + OpenAPI.validate_property(Order, Symbol("quantity"), o.quantity) + OpenAPI.validate_property(Order, Symbol("shipDate"), o.shipDate) + OpenAPI.validate_property(Order, Symbol("status"), o.status) + OpenAPI.validate_property(Order, Symbol("complete"), o.complete) +end + function OpenAPI.validate_property(::Type{ Order }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + if name === Symbol("petId") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + if name === Symbol("quantity") OpenAPI.validate_param(name, "Order", :format, val, "int32") end + if name === Symbol("shipDate") OpenAPI.validate_param(name, "Order", :format, val, "date-time") end + if name === Symbol("status") OpenAPI.validate_param(name, "Order", :enum, val, ["placed", "approved", "delivered"]) end + + end diff --git a/test/client/petstore_v2/petstore/src/models/model_Pet.jl b/test/client/petstore_v2/petstore/src/models/model_Pet.jl index ab01a63..322d93a 100644 --- a/test/client/petstore_v2/petstore/src/models/model_Pet.jl +++ b/test/client/petstore_v2/petstore/src/models/model_Pet.jl @@ -29,30 +29,42 @@ Base.@kwdef mutable struct Pet <: OpenAPI.APIModel status::Union{Nothing, String} = nothing function Pet(id, category, name, photoUrls, tags, status, ) - OpenAPI.validate_property(Pet, Symbol("id"), id) - OpenAPI.validate_property(Pet, Symbol("category"), category) - OpenAPI.validate_property(Pet, Symbol("name"), name) - OpenAPI.validate_property(Pet, Symbol("photoUrls"), photoUrls) - OpenAPI.validate_property(Pet, Symbol("tags"), tags) - OpenAPI.validate_property(Pet, Symbol("status"), status) - return new(id, category, name, photoUrls, tags, status, ) + o = new(id, category, name, photoUrls, tags, status, ) + OpenAPI.validate_properties(o) + return o end end # type Pet const _property_types_Pet = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("category")=>"Category", Symbol("name")=>"String", Symbol("photoUrls")=>"Vector{String}", Symbol("tags")=>"Vector{Tag}", Symbol("status")=>"String", ) OpenAPI.property_type(::Type{ Pet }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Pet[name]))} -function check_required(o::Pet) +function OpenAPI.check_required(o::Pet) o.name === nothing && (return false) o.photoUrls === nothing && (return false) true end +function OpenAPI.validate_properties(o::Pet) + OpenAPI.validate_property(Pet, Symbol("id"), o.id) + OpenAPI.validate_property(Pet, Symbol("category"), o.category) + OpenAPI.validate_property(Pet, Symbol("name"), o.name) + OpenAPI.validate_property(Pet, Symbol("photoUrls"), o.photoUrls) + OpenAPI.validate_property(Pet, Symbol("tags"), o.tags) + OpenAPI.validate_property(Pet, Symbol("status"), o.status) +end + function OpenAPI.validate_property(::Type{ Pet }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Pet", :format, val, "int64") end + + + + + if name === Symbol("status") OpenAPI.validate_param(name, "Pet", :enum, val, ["available", "pending", "sold"]) end + end diff --git a/test/client/petstore_v2/petstore/src/models/model_Tag.jl b/test/client/petstore_v2/petstore/src/models/model_Tag.jl index ee91e56..83051f1 100644 --- a/test/client/petstore_v2/petstore/src/models/model_Tag.jl +++ b/test/client/petstore_v2/petstore/src/models/model_Tag.jl @@ -17,21 +17,28 @@ Base.@kwdef mutable struct Tag <: OpenAPI.APIModel name::Union{Nothing, String} = nothing function Tag(id, name, ) - OpenAPI.validate_property(Tag, Symbol("id"), id) - OpenAPI.validate_property(Tag, Symbol("name"), name) - return new(id, name, ) + o = new(id, name, ) + OpenAPI.validate_properties(o) + return o end end # type Tag const _property_types_Tag = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", ) OpenAPI.property_type(::Type{ Tag }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Tag[name]))} -function check_required(o::Tag) +function OpenAPI.check_required(o::Tag) true end +function OpenAPI.validate_properties(o::Tag) + OpenAPI.validate_property(Tag, Symbol("id"), o.id) + OpenAPI.validate_property(Tag, Symbol("name"), o.name) +end + function OpenAPI.validate_property(::Type{ Tag }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Tag", :format, val, "int64") end + end diff --git a/test/client/petstore_v2/petstore/src/models/model_User.jl b/test/client/petstore_v2/petstore/src/models/model_User.jl index 2233bcf..39b2359 100644 --- a/test/client/petstore_v2/petstore/src/models/model_User.jl +++ b/test/client/petstore_v2/petstore/src/models/model_User.jl @@ -35,29 +35,42 @@ Base.@kwdef mutable struct User <: OpenAPI.APIModel userStatus::Union{Nothing, Int64} = nothing function User(id, username, firstName, lastName, email, password, phone, userStatus, ) - OpenAPI.validate_property(User, Symbol("id"), id) - OpenAPI.validate_property(User, Symbol("username"), username) - OpenAPI.validate_property(User, Symbol("firstName"), firstName) - OpenAPI.validate_property(User, Symbol("lastName"), lastName) - OpenAPI.validate_property(User, Symbol("email"), email) - OpenAPI.validate_property(User, Symbol("password"), password) - OpenAPI.validate_property(User, Symbol("phone"), phone) - OpenAPI.validate_property(User, Symbol("userStatus"), userStatus) - return new(id, username, firstName, lastName, email, password, phone, userStatus, ) + o = new(id, username, firstName, lastName, email, password, phone, userStatus, ) + OpenAPI.validate_properties(o) + return o end end # type User const _property_types_User = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("username")=>"String", Symbol("firstName")=>"String", Symbol("lastName")=>"String", Symbol("email")=>"String", Symbol("password")=>"String", Symbol("phone")=>"String", Symbol("userStatus")=>"Int64", ) OpenAPI.property_type(::Type{ User }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_User[name]))} -function check_required(o::User) +function OpenAPI.check_required(o::User) true end +function OpenAPI.validate_properties(o::User) + OpenAPI.validate_property(User, Symbol("id"), o.id) + OpenAPI.validate_property(User, Symbol("username"), o.username) + OpenAPI.validate_property(User, Symbol("firstName"), o.firstName) + OpenAPI.validate_property(User, Symbol("lastName"), o.lastName) + OpenAPI.validate_property(User, Symbol("email"), o.email) + OpenAPI.validate_property(User, Symbol("password"), o.password) + OpenAPI.validate_property(User, Symbol("phone"), o.phone) + OpenAPI.validate_property(User, Symbol("userStatus"), o.userStatus) +end + function OpenAPI.validate_property(::Type{ User }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "User", :format, val, "int64") end + + + + + + + if name === Symbol("userStatus") OpenAPI.validate_param(name, "User", :format, val, "int32") end diff --git a/test/client/petstore_v2/petstore_test_petapi.jl b/test/client/petstore_v2/petstore_test_petapi.jl index 4ffa17c..ca34260 100644 --- a/test/client/petstore_v2/petstore_test_petapi.jl +++ b/test/client/petstore_v2/petstore_test_petapi.jl @@ -17,7 +17,7 @@ function test(uri) @test_throws OpenAPI.ValidationException Pet(;id=10, category=cat, name="felix", photoUrls=nothing, tags=[tag1, tag2], status="invalid-status") - pet = Pet(;id=10, category=cat, name="felix", photoUrls=nothing, tags=[tag1,tag2], status="pending") + pet = Pet(;id=10, category=cat, name="felix", photoUrls=["http://photo/1","http://photo/2"], tags=[tag1,tag2], status="pending") @info("PetApi - add_pet") api_return, http_resp = add_pet(api, pet) diff --git a/test/client/petstore_v2/petstore_test_storeapi.jl b/test/client/petstore_v2/petstore_test_storeapi.jl index fc07ef5..252a5f9 100644 --- a/test/client/petstore_v2/petstore_test_storeapi.jl +++ b/test/client/petstore_v2/petstore_test_storeapi.jl @@ -20,7 +20,7 @@ function test(uri) @test !isempty(inventory) @info("StoreApi - place_order") - @test_throws OpenAPI.ValidationException Order(; id=5, petId=10, quantity=2, shipDate=DateTime(2017, 03, 12), status="invalid_status", complete=false) + @test_throws OpenAPI.ValidationException Order(; id=5, petId=10, quantity=2, shipDate=ZonedDateTime(DateTime(2017, 03, 12), localzone()), status="invalid_status", complete=false) order = Order(; id=5, petId=10, quantity=2, shipDate=ZonedDateTime(DateTime(2017, 03, 12), localzone()), status="placed", complete=false) neworder, http_resp = place_order(api, order) @test http_resp.status == 200 diff --git a/test/client/petstore_v3/petstore/.openapi-generator/VERSION b/test/client/petstore_v3/petstore/.openapi-generator/VERSION index 757e674..96cfbb1 100644 --- a/test/client/petstore_v3/petstore/.openapi-generator/VERSION +++ b/test/client/petstore_v3/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -7.0.0-SNAPSHOT \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/client/petstore_v3/petstore/README.md b/test/client/petstore_v3/petstore/README.md index 2bf1cea..bb7aa74 100644 --- a/test/client/petstore_v3/petstore/README.md +++ b/test/client/petstore_v3/petstore/README.md @@ -6,6 +6,7 @@ This is a sample server Petstore server. For this sample, you can use the api ke This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 1.0.0 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaClientCodegen diff --git a/test/client/petstore_v3/petstore/docs/PetApi.md b/test/client/petstore_v3/petstore/docs/PetApi.md index 00fa41e..e9355d1 100644 --- a/test/client/petstore_v3/petstore/docs/PetApi.md +++ b/test/client/petstore_v3/petstore/docs/PetApi.md @@ -25,7 +25,7 @@ Add a new pet to the store Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**pet** | [**Pet**](Pet.md) | Pet object that needs to be added to the store | ### Return type @@ -53,13 +53,13 @@ Deletes a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| Pet id to delete | [default to nothing] +**pet_id** | **Int64** | Pet id to delete | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **api_key** | **String**| | [default to nothing] + **api_key** | **String** | | [default to nothing] ### Return type @@ -89,7 +89,7 @@ Multiple status values can be provided with comma separated strings Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**status** | [**Vector{String}**](String.md)| Status values that need to be considered for filter | [default to nothing] +**status** | [**Vector{String}**](String.md) | Status values that need to be considered for filter | ### Return type @@ -119,7 +119,7 @@ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**tags** | [**Vector{String}**](String.md)| Tags to filter by | [default to nothing] +**tags** | [**Vector{String}**](String.md) | Tags to filter by | ### Return type @@ -149,7 +149,7 @@ Returns a single pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| ID of pet to return | [default to nothing] +**pet_id** | **Int64** | ID of pet to return | ### Return type @@ -177,7 +177,7 @@ Update an existing pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**pet** | [**Pet**](Pet.md) | Pet object that needs to be added to the store | ### Return type @@ -205,14 +205,14 @@ Updates a pet in the store with form data Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| ID of pet that needs to be updated | [default to nothing] +**pet_id** | **Int64** | ID of pet that needs to be updated | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **name** | **String**| Updated name of the pet | [default to nothing] - **status** | **String**| Updated status of the pet | [default to nothing] + **name** | **String** | Updated name of the pet | [default to nothing] + **status** | **String** | Updated status of the pet | [default to nothing] ### Return type @@ -240,14 +240,14 @@ uploads an image Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **PetApi** | API context | -**pet_id** | **Int64**| ID of pet to update | [default to nothing] +**pet_id** | **Int64** | ID of pet to update | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **additional_metadata** | **String**| Additional data to pass to server | [default to nothing] - **file** | **String****String**| file to upload | [default to nothing] + **additional_metadata** | **String** | Additional data to pass to server | [default to nothing] + **file** | **String** | file to upload | ### Return type diff --git a/test/client/petstore_v3/petstore/docs/StoreApi.md b/test/client/petstore_v3/petstore/docs/StoreApi.md index bca4f2f..6a6f6b9 100644 --- a/test/client/petstore_v3/petstore/docs/StoreApi.md +++ b/test/client/petstore_v3/petstore/docs/StoreApi.md @@ -23,7 +23,7 @@ For valid response try integer IDs with value < 1000. Anything above 1000 or non Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **StoreApi** | API context | -**order_id** | **String**| ID of the order that needs to be deleted | [default to nothing] +**order_id** | **String** | ID of the order that needs to be deleted | ### Return type @@ -79,7 +79,7 @@ For valid response try integer IDs with value <= 5 or > 10. Other values will ge Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **StoreApi** | API context | -**order_id** | **Int64**| ID of pet that needs to be fetched | [default to nothing] +**order_id** | **Int64** | ID of pet that needs to be fetched | ### Return type @@ -107,7 +107,7 @@ Place an order for a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **StoreApi** | API context | -**order** | [**Order**](Order.md)| order placed for purchasing the pet | +**order** | [**Order**](Order.md) | order placed for purchasing the pet | ### Return type diff --git a/test/client/petstore_v3/petstore/docs/UserApi.md b/test/client/petstore_v3/petstore/docs/UserApi.md index 305e173..fdb5b07 100644 --- a/test/client/petstore_v3/petstore/docs/UserApi.md +++ b/test/client/petstore_v3/petstore/docs/UserApi.md @@ -27,7 +27,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**user** | [**User**](User.md)| Created user object | +**user** | [**User**](User.md) | Created user object | ### Return type @@ -55,7 +55,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**user** | [**Vector{User}**](User.md)| List of user object | +**user** | [**Vector{User}**](User.md) | List of user object | ### Return type @@ -83,7 +83,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**user** | [**Vector{User}**](User.md)| List of user object | +**user** | [**Vector{User}**](User.md) | List of user object | ### Return type @@ -113,7 +113,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| The name that needs to be deleted | [default to nothing] +**username** | **String** | The name that needs to be deleted | ### Return type @@ -141,7 +141,7 @@ Get user by user name Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| The name that needs to be fetched. Use user1 for testing. | [default to nothing] +**username** | **String** | The name that needs to be fetched. Use user1 for testing. | ### Return type @@ -169,8 +169,8 @@ Logs user into the system Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| The user name for login | [default to nothing] -**password** | **String**| The password for login in clear text | [default to nothing] +**username** | **String** | The user name for login | +**password** | **String** | The password for login in clear text | ### Return type @@ -224,8 +224,8 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **UserApi** | API context | -**username** | **String**| name that need to be deleted | [default to nothing] -**user** | [**User**](User.md)| Updated user object | +**username** | **String** | name that need to be deleted | +**user** | [**User**](User.md) | Updated user object | ### Return type diff --git a/test/client/petstore_v3/petstore/src/apis/api_PetApi.jl b/test/client/petstore_v3/petstore/src/apis/api_PetApi.jl index c80c8f2..426eb55 100644 --- a/test/client/petstore_v3/petstore/src/apis/api_PetApi.jl +++ b/test/client/petstore_v3/petstore/src/apis/api_PetApi.jl @@ -77,7 +77,7 @@ const _returntypes_find_pets_by_status_PetApi = Dict{Regex,Type}( function _oacinternal_find_pets_by_status(_api::PetApi, status::Vector{String}; _mediaType=nothing) _ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_find_pets_by_status_PetApi, "/pet/findByStatus", ["petstore_auth", ]) - OpenAPI.Clients.set_param(_ctx.query, "status", status) # type Vector{String} + OpenAPI.Clients.set_param(_ctx.query, "status", status; style="form", is_explode=false) # type Vector{String} OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType]) return _ctx @@ -109,7 +109,7 @@ const _returntypes_find_pets_by_tags_PetApi = Dict{Regex,Type}( function _oacinternal_find_pets_by_tags(_api::PetApi, tags::Vector{String}; _mediaType=nothing) _ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_find_pets_by_tags_PetApi, "/pet/findByTags", ["petstore_auth", ]) - OpenAPI.Clients.set_param(_ctx.query, "tags", tags) # type Vector{String} + OpenAPI.Clients.set_param(_ctx.query, "tags", tags; style="form", is_explode=false) # type Vector{String} OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType]) return _ctx @@ -238,7 +238,7 @@ function _oacinternal_upload_file(_api::PetApi, pet_id::Int64; additional_metada _ctx = OpenAPI.Clients.Ctx(_api.client, "POST", _returntypes_upload_file_PetApi, "/pet/{petId}/uploadImage", ["petstore_auth", ]) OpenAPI.Clients.set_param(_ctx.path, "petId", pet_id) # type Int64 OpenAPI.Clients.set_param(_ctx.form, "additionalMetadata", additional_metadata) # type String - OpenAPI.Clients.set_param(_ctx.file, "file", file) # type Vector{UInt8} + OpenAPI.Clients.set_param(_ctx.file, "file", file) # type String OpenAPI.Clients.set_header_accept(_ctx, ["application/json", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["multipart/form-data", ] : [_mediaType]) return _ctx diff --git a/test/client/petstore_v3/petstore/src/apis/api_UserApi.jl b/test/client/petstore_v3/petstore/src/apis/api_UserApi.jl index 62af4d7..5939776 100644 --- a/test/client/petstore_v3/petstore/src/apis/api_UserApi.jl +++ b/test/client/petstore_v3/petstore/src/apis/api_UserApi.jl @@ -167,8 +167,8 @@ const _returntypes_login_user_UserApi = Dict{Regex,Type}( function _oacinternal_login_user(_api::UserApi, username::String, password::String; _mediaType=nothing) _ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_login_user_UserApi, "/user/login", []) - OpenAPI.Clients.set_param(_ctx.query, "username", username) # type String - OpenAPI.Clients.set_param(_ctx.query, "password", password) # type String + OpenAPI.Clients.set_param(_ctx.query, "username", username; style="form", is_explode=true) # type String + OpenAPI.Clients.set_param(_ctx.query, "password", password; style="form", is_explode=true) # type String OpenAPI.Clients.set_header_accept(_ctx, ["application/xml", "application/json", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType]) return _ctx diff --git a/test/client/petstore_v3/petstore/src/models/model_ApiResponse.jl b/test/client/petstore_v3/petstore/src/models/model_ApiResponse.jl index 107fab6..1d6b413 100644 --- a/test/client/petstore_v3/petstore/src/models/model_ApiResponse.jl +++ b/test/client/petstore_v3/petstore/src/models/model_ApiResponse.jl @@ -21,22 +21,30 @@ Base.@kwdef mutable struct ApiResponse <: OpenAPI.APIModel message::Union{Nothing, String} = nothing function ApiResponse(code, type, message, ) - OpenAPI.validate_property(ApiResponse, Symbol("code"), code) - OpenAPI.validate_property(ApiResponse, Symbol("type"), type) - OpenAPI.validate_property(ApiResponse, Symbol("message"), message) - return new(code, type, message, ) + o = new(code, type, message, ) + OpenAPI.validate_properties(o) + return o end end # type ApiResponse const _property_types_ApiResponse = Dict{Symbol,String}(Symbol("code")=>"Int64", Symbol("type")=>"String", Symbol("message")=>"String", ) OpenAPI.property_type(::Type{ ApiResponse }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ApiResponse[name]))} -function check_required(o::ApiResponse) +function OpenAPI.check_required(o::ApiResponse) true end +function OpenAPI.validate_properties(o::ApiResponse) + OpenAPI.validate_property(ApiResponse, Symbol("code"), o.code) + OpenAPI.validate_property(ApiResponse, Symbol("type"), o.type) + OpenAPI.validate_property(ApiResponse, Symbol("message"), o.message) +end + function OpenAPI.validate_property(::Type{ ApiResponse }, name::Symbol, val) + if name === Symbol("code") OpenAPI.validate_param(name, "ApiResponse", :format, val, "int32") end + + end diff --git a/test/client/petstore_v3/petstore/src/models/model_Category.jl b/test/client/petstore_v3/petstore/src/models/model_Category.jl index 90c8264..843d8a5 100644 --- a/test/client/petstore_v3/petstore/src/models/model_Category.jl +++ b/test/client/petstore_v3/petstore/src/models/model_Category.jl @@ -18,21 +18,28 @@ Base.@kwdef mutable struct Category <: OpenAPI.APIModel name::Union{Nothing, String} = nothing function Category(id, name, ) - OpenAPI.validate_property(Category, Symbol("id"), id) - OpenAPI.validate_property(Category, Symbol("name"), name) - return new(id, name, ) + o = new(id, name, ) + OpenAPI.validate_properties(o) + return o end end # type Category const _property_types_Category = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", ) OpenAPI.property_type(::Type{ Category }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Category[name]))} -function check_required(o::Category) +function OpenAPI.check_required(o::Category) true end +function OpenAPI.validate_properties(o::Category) + OpenAPI.validate_property(Category, Symbol("id"), o.id) + OpenAPI.validate_property(Category, Symbol("name"), o.name) +end + function OpenAPI.validate_property(::Type{ Category }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Category", :format, val, "int64") end + end diff --git a/test/client/petstore_v3/petstore/src/models/model_Order.jl b/test/client/petstore_v3/petstore/src/models/model_Order.jl index 9443890..c1e95bc 100644 --- a/test/client/petstore_v3/petstore/src/models/model_Order.jl +++ b/test/client/petstore_v3/petstore/src/models/model_Order.jl @@ -30,37 +30,49 @@ Base.@kwdef mutable struct Order <: OpenAPI.APIModel complete::Union{Nothing, Bool} = false function Order(id, petId, quantity, shipDate, status, complete, ) - OpenAPI.validate_property(Order, Symbol("id"), id) - OpenAPI.validate_property(Order, Symbol("petId"), petId) - OpenAPI.validate_property(Order, Symbol("quantity"), quantity) - OpenAPI.validate_property(Order, Symbol("shipDate"), shipDate) - OpenAPI.validate_property(Order, Symbol("status"), status) - OpenAPI.validate_property(Order, Symbol("complete"), complete) - return new(id, petId, quantity, shipDate, status, complete, ) + o = new(id, petId, quantity, shipDate, status, complete, ) + OpenAPI.validate_properties(o) + return o end end # type Order const _property_types_Order = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("petId")=>"Int64", Symbol("quantity")=>"Int64", Symbol("shipDate")=>"ZonedDateTime", Symbol("status")=>"String", Symbol("complete")=>"Bool", ) OpenAPI.property_type(::Type{ Order }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Order[name]))} -function check_required(o::Order) +function OpenAPI.check_required(o::Order) true end +function OpenAPI.validate_properties(o::Order) + OpenAPI.validate_property(Order, Symbol("id"), o.id) + OpenAPI.validate_property(Order, Symbol("petId"), o.petId) + OpenAPI.validate_property(Order, Symbol("quantity"), o.quantity) + OpenAPI.validate_property(Order, Symbol("shipDate"), o.shipDate) + OpenAPI.validate_property(Order, Symbol("status"), o.status) + OpenAPI.validate_property(Order, Symbol("complete"), o.complete) +end + function OpenAPI.validate_property(::Type{ Order }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + if name === Symbol("petId") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + if name === Symbol("quantity") OpenAPI.validate_param(name, "Order", :format, val, "int32") end + if name === Symbol("shipDate") OpenAPI.validate_param(name, "Order", :format, val, "date-time") end + if name === Symbol("status") OpenAPI.validate_param(name, "Order", :enum, val, ["placed", "approved", "delivered"]) end + + end diff --git a/test/client/petstore_v3/petstore/src/models/model_Pet.jl b/test/client/petstore_v3/petstore/src/models/model_Pet.jl index 569a932..47f8f83 100644 --- a/test/client/petstore_v3/petstore/src/models/model_Pet.jl +++ b/test/client/petstore_v3/petstore/src/models/model_Pet.jl @@ -30,30 +30,42 @@ Base.@kwdef mutable struct Pet <: OpenAPI.APIModel status::Union{Nothing, String} = nothing function Pet(id, category, name, photoUrls, tags, status, ) - OpenAPI.validate_property(Pet, Symbol("id"), id) - OpenAPI.validate_property(Pet, Symbol("category"), category) - OpenAPI.validate_property(Pet, Symbol("name"), name) - OpenAPI.validate_property(Pet, Symbol("photoUrls"), photoUrls) - OpenAPI.validate_property(Pet, Symbol("tags"), tags) - OpenAPI.validate_property(Pet, Symbol("status"), status) - return new(id, category, name, photoUrls, tags, status, ) + o = new(id, category, name, photoUrls, tags, status, ) + OpenAPI.validate_properties(o) + return o end end # type Pet const _property_types_Pet = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("category")=>"Category", Symbol("name")=>"String", Symbol("photoUrls")=>"Vector{String}", Symbol("tags")=>"Vector{Tag}", Symbol("status")=>"String", ) OpenAPI.property_type(::Type{ Pet }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Pet[name]))} -function check_required(o::Pet) +function OpenAPI.check_required(o::Pet) o.name === nothing && (return false) o.photoUrls === nothing && (return false) true end +function OpenAPI.validate_properties(o::Pet) + OpenAPI.validate_property(Pet, Symbol("id"), o.id) + OpenAPI.validate_property(Pet, Symbol("category"), o.category) + OpenAPI.validate_property(Pet, Symbol("name"), o.name) + OpenAPI.validate_property(Pet, Symbol("photoUrls"), o.photoUrls) + OpenAPI.validate_property(Pet, Symbol("tags"), o.tags) + OpenAPI.validate_property(Pet, Symbol("status"), o.status) +end + function OpenAPI.validate_property(::Type{ Pet }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Pet", :format, val, "int64") end + + + + + if name === Symbol("status") OpenAPI.validate_param(name, "Pet", :enum, val, ["available", "pending", "sold"]) end + end diff --git a/test/client/petstore_v3/petstore/src/models/model_Tag.jl b/test/client/petstore_v3/petstore/src/models/model_Tag.jl index f717688..2743b59 100644 --- a/test/client/petstore_v3/petstore/src/models/model_Tag.jl +++ b/test/client/petstore_v3/petstore/src/models/model_Tag.jl @@ -18,21 +18,28 @@ Base.@kwdef mutable struct Tag <: OpenAPI.APIModel name::Union{Nothing, String} = nothing function Tag(id, name, ) - OpenAPI.validate_property(Tag, Symbol("id"), id) - OpenAPI.validate_property(Tag, Symbol("name"), name) - return new(id, name, ) + o = new(id, name, ) + OpenAPI.validate_properties(o) + return o end end # type Tag const _property_types_Tag = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", ) OpenAPI.property_type(::Type{ Tag }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Tag[name]))} -function check_required(o::Tag) +function OpenAPI.check_required(o::Tag) true end +function OpenAPI.validate_properties(o::Tag) + OpenAPI.validate_property(Tag, Symbol("id"), o.id) + OpenAPI.validate_property(Tag, Symbol("name"), o.name) +end + function OpenAPI.validate_property(::Type{ Tag }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Tag", :format, val, "int64") end + end diff --git a/test/client/petstore_v3/petstore/src/models/model_User.jl b/test/client/petstore_v3/petstore/src/models/model_User.jl index 5af0ccd..8e95c9a 100644 --- a/test/client/petstore_v3/petstore/src/models/model_User.jl +++ b/test/client/petstore_v3/petstore/src/models/model_User.jl @@ -36,29 +36,42 @@ Base.@kwdef mutable struct User <: OpenAPI.APIModel userStatus::Union{Nothing, Int64} = nothing function User(id, username, firstName, lastName, email, password, phone, userStatus, ) - OpenAPI.validate_property(User, Symbol("id"), id) - OpenAPI.validate_property(User, Symbol("username"), username) - OpenAPI.validate_property(User, Symbol("firstName"), firstName) - OpenAPI.validate_property(User, Symbol("lastName"), lastName) - OpenAPI.validate_property(User, Symbol("email"), email) - OpenAPI.validate_property(User, Symbol("password"), password) - OpenAPI.validate_property(User, Symbol("phone"), phone) - OpenAPI.validate_property(User, Symbol("userStatus"), userStatus) - return new(id, username, firstName, lastName, email, password, phone, userStatus, ) + o = new(id, username, firstName, lastName, email, password, phone, userStatus, ) + OpenAPI.validate_properties(o) + return o end end # type User const _property_types_User = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("username")=>"String", Symbol("firstName")=>"String", Symbol("lastName")=>"String", Symbol("email")=>"String", Symbol("password")=>"String", Symbol("phone")=>"String", Symbol("userStatus")=>"Int64", ) OpenAPI.property_type(::Type{ User }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_User[name]))} -function check_required(o::User) +function OpenAPI.check_required(o::User) true end +function OpenAPI.validate_properties(o::User) + OpenAPI.validate_property(User, Symbol("id"), o.id) + OpenAPI.validate_property(User, Symbol("username"), o.username) + OpenAPI.validate_property(User, Symbol("firstName"), o.firstName) + OpenAPI.validate_property(User, Symbol("lastName"), o.lastName) + OpenAPI.validate_property(User, Symbol("email"), o.email) + OpenAPI.validate_property(User, Symbol("password"), o.password) + OpenAPI.validate_property(User, Symbol("phone"), o.phone) + OpenAPI.validate_property(User, Symbol("userStatus"), o.userStatus) +end + function OpenAPI.validate_property(::Type{ User }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "User", :format, val, "int64") end + + + + + + + if name === Symbol("userStatus") OpenAPI.validate_param(name, "User", :format, val, "int32") end diff --git a/test/client/petstore_v3/petstore_test_petapi.jl b/test/client/petstore_v3/petstore_test_petapi.jl index 36d3a6f..fcd0781 100644 --- a/test/client/petstore_v3/petstore_test_petapi.jl +++ b/test/client/petstore_v3/petstore_test_petapi.jl @@ -17,7 +17,7 @@ function test(uri; test_file_upload=false) @test_throws OpenAPI.ValidationException Pet(;id=10, category=cat, name="felix", photoUrls=nothing, tags=[tag1, tag2], status="invalid-status") - pet = Pet(;id=10, category=cat, name="felix", photoUrls=nothing, tags=[tag1,tag2], status="pending") + pet = Pet(;id=10, category=cat, name="felix", photoUrls=["http://photo/1","http://photo/2"], tags=[tag1,tag2], status="pending") @info("PetApi - add_pet") api_return, http_resp = add_pet(api, pet) diff --git a/test/client/petstore_v3/petstore_test_storeapi.jl b/test/client/petstore_v3/petstore_test_storeapi.jl index 1aa7beb..e94cfa9 100644 --- a/test/client/petstore_v3/petstore_test_storeapi.jl +++ b/test/client/petstore_v3/petstore_test_storeapi.jl @@ -20,7 +20,7 @@ function test(uri) @test !isempty(inventory) @info("StoreApi - place_order") - @test_throws OpenAPI.ValidationException Order(; id=5, petId=10, quantity=2, shipDate=DateTime(2017, 03, 12), status="invalid_status", complete=false) + @test_throws OpenAPI.ValidationException Order(; id=5, petId=10, quantity=2, shipDate=ZonedDateTime(DateTime(2017, 03, 12), localzone()), status="invalid_status", complete=false) order = Order(; id=5, petId=10, quantity=2, shipDate=ZonedDateTime(DateTime(2017, 03, 12), localzone()), status="placed", complete=false) neworder, http_resp = place_order(api, order) @test http_resp.status == 200 diff --git a/test/client/timeouttest/TimeoutTestClient/.openapi-generator/FILES b/test/client/timeouttest/TimeoutTestClient/.openapi-generator/FILES index cbc004f..7d2bf6b 100644 --- a/test/client/timeouttest/TimeoutTestClient/.openapi-generator/FILES +++ b/test/client/timeouttest/TimeoutTestClient/.openapi-generator/FILES @@ -1,4 +1,3 @@ -.openapi-generator-ignore README.md docs/DefaultApi.md docs/DelayresponseGet200Response.md diff --git a/test/client/timeouttest/TimeoutTestClient/.openapi-generator/VERSION b/test/client/timeouttest/TimeoutTestClient/.openapi-generator/VERSION index 4b49d9b..96cfbb1 100644 --- a/test/client/timeouttest/TimeoutTestClient/.openapi-generator/VERSION +++ b/test/client/timeouttest/TimeoutTestClient/.openapi-generator/VERSION @@ -1 +1 @@ -7.2.0 \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/client/timeouttest/TimeoutTestClient/README.md b/test/client/timeouttest/TimeoutTestClient/README.md index 4f1e662..0fcd6e1 100644 --- a/test/client/timeouttest/TimeoutTestClient/README.md +++ b/test/client/timeouttest/TimeoutTestClient/README.md @@ -6,6 +6,7 @@ No description provided (generated by Openapi Generator https://github.com/opena This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 1.0.0 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaClientCodegen diff --git a/test/client/timeouttest/TimeoutTestClient/docs/DefaultApi.md b/test/client/timeouttest/TimeoutTestClient/docs/DefaultApi.md index 74c4a60..67d2be8 100644 --- a/test/client/timeouttest/TimeoutTestClient/docs/DefaultApi.md +++ b/test/client/timeouttest/TimeoutTestClient/docs/DefaultApi.md @@ -18,7 +18,7 @@ Delay Response Endpoint Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **DefaultApi** | API context | -**delay_seconds** | **Int64**| Number of seconds to delay the response | [default to nothing] +**delay_seconds** | **Int64** | Number of seconds to delay the response | ### Return type diff --git a/test/client/timeouttest/TimeoutTestClient/src/apis/api_DefaultApi.jl b/test/client/timeouttest/TimeoutTestClient/src/apis/api_DefaultApi.jl index 3cf0a93..0b30be7 100644 --- a/test/client/timeouttest/TimeoutTestClient/src/apis/api_DefaultApi.jl +++ b/test/client/timeouttest/TimeoutTestClient/src/apis/api_DefaultApi.jl @@ -19,7 +19,7 @@ function _oacinternal_delayresponse_get(_api::DefaultApi, delay_seconds::Int64; OpenAPI.validate_param("delay_seconds", "delayresponse_get", :minimum, delay_seconds, 0, false) _ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_delayresponse_get_DefaultApi, "/delayresponse", []) - OpenAPI.Clients.set_param(_ctx.query, "delay_seconds", delay_seconds) # type Int64 + OpenAPI.Clients.set_param(_ctx.query, "delay_seconds", delay_seconds; style="form", is_explode=true) # type Int64 OpenAPI.Clients.set_header_accept(_ctx, ["application/json", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? [] : [_mediaType]) return _ctx diff --git a/test/client/timeouttest/TimeoutTestClient/src/models/model_DelayresponseGet200Response.jl b/test/client/timeouttest/TimeoutTestClient/src/models/model_DelayresponseGet200Response.jl index c700d17..caa9121 100644 --- a/test/client/timeouttest/TimeoutTestClient/src/models/model_DelayresponseGet200Response.jl +++ b/test/client/timeouttest/TimeoutTestClient/src/models/model_DelayresponseGet200Response.jl @@ -14,17 +14,23 @@ Base.@kwdef mutable struct DelayresponseGet200Response <: OpenAPI.APIModel delay_seconds::Union{Nothing, String} = nothing function DelayresponseGet200Response(delay_seconds, ) - OpenAPI.validate_property(DelayresponseGet200Response, Symbol("delay_seconds"), delay_seconds) - return new(delay_seconds, ) + o = new(delay_seconds, ) + OpenAPI.validate_properties(o) + return o end end # type DelayresponseGet200Response const _property_types_DelayresponseGet200Response = Dict{Symbol,String}(Symbol("delay_seconds")=>"String", ) OpenAPI.property_type(::Type{ DelayresponseGet200Response }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_DelayresponseGet200Response[name]))} -function check_required(o::DelayresponseGet200Response) +function OpenAPI.check_required(o::DelayresponseGet200Response) true end +function OpenAPI.validate_properties(o::DelayresponseGet200Response) + OpenAPI.validate_property(DelayresponseGet200Response, Symbol("delay_seconds"), o.delay_seconds) +end + function OpenAPI.validate_property(::Type{ DelayresponseGet200Response }, name::Symbol, val) + end diff --git a/test/forms/FormsClient/.openapi-generator/VERSION b/test/forms/FormsClient/.openapi-generator/VERSION index 757e674..96cfbb1 100644 --- a/test/forms/FormsClient/.openapi-generator/VERSION +++ b/test/forms/FormsClient/.openapi-generator/VERSION @@ -1 +1 @@ -7.0.0-SNAPSHOT \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/forms/FormsClient/README.md b/test/forms/FormsClient/README.md index cb5cd5f..b7cf708 100644 --- a/test/forms/FormsClient/README.md +++ b/test/forms/FormsClient/README.md @@ -6,6 +6,7 @@ Tests for different types of POST operations with forms and file uploads This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 0.1.0 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaClientCodegen diff --git a/test/forms/FormsClient/docs/DefaultApi.md b/test/forms/FormsClient/docs/DefaultApi.md index 764a7e3..9101942 100644 --- a/test/forms/FormsClient/docs/DefaultApi.md +++ b/test/forms/FormsClient/docs/DefaultApi.md @@ -20,14 +20,14 @@ posts a urlencoded form, with file contents and additional metadata, both of whi Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **DefaultApi** | API context | -**form_id** | **Int64**| ID of form to update | [default to nothing] -**file** | **String**| file contents to upload, in string format | [default to nothing] +**form_id** | **Int64** | ID of form to update | +**file** | **String** | file contents to upload, in string format | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **additional_metadata** | **String**| Additional data to pass to server | [default to nothing] + **additional_metadata** | **String** | Additional data to pass to server | [default to nothing] ### Return type @@ -55,14 +55,14 @@ uploads a binary file given its path, along with some metadata Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **DefaultApi** | API context | -**file_id** | **Int64**| ID of file to update | [default to nothing] +**file_id** | **Int64** | ID of file to update | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **additional_metadata** | **String**| Additional data to pass to server | [default to nothing] - **file** | **String****String**| file to upload, must be a string representing a valid file path | [default to nothing] + **additional_metadata** | **String** | Additional data to pass to server | [default to nothing] + **file** | **String** | file to upload, must be a string representing a valid file path | ### Return type @@ -90,14 +90,14 @@ uploads text file contents along with some metadata Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **_api** | **DefaultApi** | API context | -**file_id** | **Int64**| ID of file to update | [default to nothing] +**file_id** | **Int64** | ID of file to update | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **additional_metadata** | **String**| Additional data to pass to server, a string | [default to nothing] - **file** | **String**| file contents to upload in base64 encoded format | [default to nothing] + **additional_metadata** | **String** | Additional data to pass to server, a string | [default to nothing] + **file** | **String** | file contents to upload in base64 encoded format | [default to nothing] ### Return type diff --git a/test/forms/FormsClient/src/apis/api_DefaultApi.jl b/test/forms/FormsClient/src/apis/api_DefaultApi.jl index 2bd6a3a..e937581 100644 --- a/test/forms/FormsClient/src/apis/api_DefaultApi.jl +++ b/test/forms/FormsClient/src/apis/api_DefaultApi.jl @@ -52,7 +52,7 @@ function _oacinternal_upload_binary_file(_api::DefaultApi, file_id::Int64; addit _ctx = OpenAPI.Clients.Ctx(_api.client, "POST", _returntypes_upload_binary_file_DefaultApi, "/test/{file_id}/upload_binary_file", []) OpenAPI.Clients.set_param(_ctx.path, "file_id", file_id) # type Int64 OpenAPI.Clients.set_param(_ctx.form, "additionalMetadata", additional_metadata) # type String - OpenAPI.Clients.set_param(_ctx.file, "file", file) # type Vector{UInt8} + OpenAPI.Clients.set_param(_ctx.file, "file", file) # type String OpenAPI.Clients.set_header_accept(_ctx, ["application/json", ]) OpenAPI.Clients.set_header_content_type(_ctx, (_mediaType === nothing) ? ["multipart/form-data", ] : [_mediaType]) return _ctx diff --git a/test/forms/FormsClient/src/models/model_TestResponse.jl b/test/forms/FormsClient/src/models/model_TestResponse.jl index 285549d..a7dfca7 100644 --- a/test/forms/FormsClient/src/models/model_TestResponse.jl +++ b/test/forms/FormsClient/src/models/model_TestResponse.jl @@ -14,17 +14,23 @@ Base.@kwdef mutable struct TestResponse <: OpenAPI.APIModel message::Union{Nothing, String} = nothing function TestResponse(message, ) - OpenAPI.validate_property(TestResponse, Symbol("message"), message) - return new(message, ) + o = new(message, ) + OpenAPI.validate_properties(o) + return o end end # type TestResponse const _property_types_TestResponse = Dict{Symbol,String}(Symbol("message")=>"String", ) OpenAPI.property_type(::Type{ TestResponse }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_TestResponse[name]))} -function check_required(o::TestResponse) +function OpenAPI.check_required(o::TestResponse) true end +function OpenAPI.validate_properties(o::TestResponse) + OpenAPI.validate_property(TestResponse, Symbol("message"), o.message) +end + function OpenAPI.validate_property(::Type{ TestResponse }, name::Symbol, val) + end diff --git a/test/forms/FormsServer/.openapi-generator/VERSION b/test/forms/FormsServer/.openapi-generator/VERSION index 757e674..96cfbb1 100644 --- a/test/forms/FormsServer/.openapi-generator/VERSION +++ b/test/forms/FormsServer/.openapi-generator/VERSION @@ -1 +1 @@ -7.0.0-SNAPSHOT \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/forms/FormsServer/README.md b/test/forms/FormsServer/README.md index 2af8cc0..b287034 100644 --- a/test/forms/FormsServer/README.md +++ b/test/forms/FormsServer/README.md @@ -6,6 +6,7 @@ Tests for different types of POST operations with forms and file uploads This API server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 0.1.0 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaServerCodegen diff --git a/test/forms/FormsServer/docs/DefaultApi.md b/test/forms/FormsServer/docs/DefaultApi.md index d118965..b677d84 100644 --- a/test/forms/FormsServer/docs/DefaultApi.md +++ b/test/forms/FormsServer/docs/DefaultApi.md @@ -19,8 +19,8 @@ posts a urlencoded form, with file contents and additional metadata, both of whi Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**form_id** | **Int64**| ID of form to update | [default to nothing] -**file** | **String**| file contents to upload, in string format | [default to nothing] +**form_id** | **Int64**| ID of form to update | +**file** | **String**| file contents to upload, in string format | ### Optional Parameters @@ -53,14 +53,14 @@ uploads a binary file given its path, along with some metadata Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**file_id** | **Int64**| ID of file to update | [default to nothing] +**file_id** | **Int64**| ID of file to update | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **additional_metadata** | **String**| Additional data to pass to server | [default to nothing] - **file** | **String****String**| file to upload, must be a string representing a valid file path | [default to nothing] + **file** | **Vector{UInt8}**| file to upload, must be a string representing a valid file path | ### Return type @@ -87,7 +87,7 @@ uploads text file contents along with some metadata Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**file_id** | **Int64**| ID of file to update | [default to nothing] +**file_id** | **Int64**| ID of file to update | ### Optional Parameters diff --git a/test/forms/FormsServer/src/apis/api_DefaultApi.jl b/test/forms/FormsServer/src/apis/api_DefaultApi.jl index aabb0af..8290a13 100644 --- a/test/forms/FormsServer/src/apis/api_DefaultApi.jl +++ b/test/forms/FormsServer/src/apis/api_DefaultApi.jl @@ -20,7 +20,43 @@ end function post_urlencoded_form_validate(handler) function post_urlencoded_form_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "post_urlencoded_form" + n = "form_id" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "file" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "additionalMetadata" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -52,7 +88,42 @@ end function upload_binary_file_validate(handler) function upload_binary_file_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "upload_binary_file" + + n = "file_id" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "additionalMetadata" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + n = "file" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -84,7 +155,42 @@ end function upload_text_file_validate(handler) function upload_text_file_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "upload_text_file" + + n = "file_id" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + n = "additionalMetadata" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "file" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end diff --git a/test/forms/FormsServer/src/models/model_TestResponse.jl b/test/forms/FormsServer/src/models/model_TestResponse.jl index 285549d..a7dfca7 100644 --- a/test/forms/FormsServer/src/models/model_TestResponse.jl +++ b/test/forms/FormsServer/src/models/model_TestResponse.jl @@ -14,17 +14,23 @@ Base.@kwdef mutable struct TestResponse <: OpenAPI.APIModel message::Union{Nothing, String} = nothing function TestResponse(message, ) - OpenAPI.validate_property(TestResponse, Symbol("message"), message) - return new(message, ) + o = new(message, ) + OpenAPI.validate_properties(o) + return o end end # type TestResponse const _property_types_TestResponse = Dict{Symbol,String}(Symbol("message")=>"String", ) OpenAPI.property_type(::Type{ TestResponse }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_TestResponse[name]))} -function check_required(o::TestResponse) +function OpenAPI.check_required(o::TestResponse) true end +function OpenAPI.validate_properties(o::TestResponse) + OpenAPI.validate_property(TestResponse, Symbol("message"), o.message) +end + function OpenAPI.validate_property(::Type{ TestResponse }, name::Symbol, val) + end diff --git a/test/server/allany/AllAnyServer/.openapi-generator/VERSION b/test/server/allany/AllAnyServer/.openapi-generator/VERSION index 44bad91..96cfbb1 100644 --- a/test/server/allany/AllAnyServer/.openapi-generator/VERSION +++ b/test/server/allany/AllAnyServer/.openapi-generator/VERSION @@ -1 +1 @@ -7.0.1-SNAPSHOT \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/server/allany/AllAnyServer/README.md b/test/server/allany/AllAnyServer/README.md index b7456c3..0111a58 100644 --- a/test/server/allany/AllAnyServer/README.md +++ b/test/server/allany/AllAnyServer/README.md @@ -6,6 +6,7 @@ API to test code generation for oneof anyof allof This API server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 0.0.1 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaServerCodegen diff --git a/test/server/allany/AllAnyServer/docs/DefaultApi.md b/test/server/allany/AllAnyServer/docs/DefaultApi.md index 1b7bb3c..a3d457a 100644 --- a/test/server/allany/AllAnyServer/docs/DefaultApi.md +++ b/test/server/allany/AllAnyServer/docs/DefaultApi.md @@ -23,7 +23,7 @@ Method | HTTP request | Description Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**any_of_base_type** | [**AnyOfBaseType**](AnyOfBaseType.md)| | +**any_of_base_type** | [**AnyOfBaseType**](AnyOfBaseType.md)| | ### Return type @@ -50,7 +50,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**any_of_mapped_pets** | [**AnyOfMappedPets**](AnyOfMappedPets.md)| | +**any_of_mapped_pets** | [**AnyOfMappedPets**](AnyOfMappedPets.md)| | ### Return type @@ -77,7 +77,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**any_of_pets** | [**AnyOfPets**](AnyOfPets.md)| | +**any_of_pets** | [**AnyOfPets**](AnyOfPets.md)| | ### Return type @@ -104,7 +104,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**type_with_all_array_types** | [**TypeWithAllArrayTypes**](TypeWithAllArrayTypes.md)| | +**type_with_all_array_types** | [**TypeWithAllArrayTypes**](TypeWithAllArrayTypes.md)| | ### Return type @@ -131,7 +131,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**one_of_base_type** | [**OneOfBaseType**](OneOfBaseType.md)| | +**one_of_base_type** | [**OneOfBaseType**](OneOfBaseType.md)| | ### Return type @@ -158,7 +158,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**one_of_mapped_pets** | [**OneOfMappedPets**](OneOfMappedPets.md)| | +**one_of_mapped_pets** | [**OneOfMappedPets**](OneOfMappedPets.md)| | ### Return type @@ -185,7 +185,7 @@ No authorization required Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**one_of_pets** | [**OneOfPets**](OneOfPets.md)| | +**one_of_pets** | [**OneOfPets**](OneOfPets.md)| | ### Return type diff --git a/test/server/allany/AllAnyServer/src/apis/api_DefaultApi.jl b/test/server/allany/AllAnyServer/src/apis/api_DefaultApi.jl index 2831204..d4fba67 100644 --- a/test/server/allany/AllAnyServer/src/apis/api_DefaultApi.jl +++ b/test/server/allany/AllAnyServer/src/apis/api_DefaultApi.jl @@ -15,7 +15,20 @@ end function echo_anyof_base_type_post_validate(handler) function echo_anyof_base_type_post_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "echo_anyof_base_type_post" + n = "AnyOfBaseType" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -42,7 +55,20 @@ end function echo_anyof_mapped_pets_post_validate(handler) function echo_anyof_mapped_pets_post_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "echo_anyof_mapped_pets_post" + n = "AnyOfMappedPets" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -69,7 +95,20 @@ end function echo_anyof_pets_post_validate(handler) function echo_anyof_pets_post_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "echo_anyof_pets_post" + n = "AnyOfPets" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -96,7 +135,20 @@ end function echo_arrays_post_validate(handler) function echo_arrays_post_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "echo_arrays_post" + n = "TypeWithAllArrayTypes" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -104,7 +156,7 @@ end function echo_arrays_post_invoke(impl; post_invoke=nothing) function echo_arrays_post_invoke_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] - ret = impl.echo_arrays_post(req::HTTP.Request, openapi_params["TypeWithAllArrayTypes"];) + ret = impl.echo_arrays_post(req::HTTP.Request, openapi_params["TypeWithAllArrayTypes"];) resp = OpenAPI.Servers.server_response(ret) return (post_invoke === nothing) ? resp : post_invoke(req, resp) end @@ -123,7 +175,20 @@ end function echo_oneof_base_type_post_validate(handler) function echo_oneof_base_type_post_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "echo_oneof_base_type_post" + n = "OneOfBaseType" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -150,7 +215,20 @@ end function echo_oneof_mapped_pets_post_validate(handler) function echo_oneof_mapped_pets_post_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "echo_oneof_mapped_pets_post" + n = "OneOfMappedPets" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -177,7 +255,20 @@ end function echo_oneof_pets_post_validate(handler) function echo_oneof_pets_post_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "echo_oneof_pets_post" + n = "OneOfPets" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end diff --git a/test/server/allany/AllAnyServer/src/models/model_Cat.jl b/test/server/allany/AllAnyServer/src/models/model_Cat.jl index d4230b9..1f720cf 100644 --- a/test/server/allany/AllAnyServer/src/models/model_Cat.jl +++ b/test/server/allany/AllAnyServer/src/models/model_Cat.jl @@ -20,20 +20,28 @@ Base.@kwdef mutable struct Cat <: OpenAPI.APIModel age::Union{Nothing, Int64} = nothing function Cat(pet_type, hunts, age, ) - OpenAPI.validate_property(Cat, Symbol("pet_type"), pet_type) - OpenAPI.validate_property(Cat, Symbol("hunts"), hunts) - OpenAPI.validate_property(Cat, Symbol("age"), age) - return new(pet_type, hunts, age, ) + o = new(pet_type, hunts, age, ) + OpenAPI.validate_properties(o) + return o end end # type Cat const _property_types_Cat = Dict{Symbol,String}(Symbol("pet_type")=>"String", Symbol("hunts")=>"Bool", Symbol("age")=>"Int64", ) OpenAPI.property_type(::Type{ Cat }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Cat[name]))} -function check_required(o::Cat) +function OpenAPI.check_required(o::Cat) o.pet_type === nothing && (return false) true end +function OpenAPI.validate_properties(o::Cat) + OpenAPI.validate_property(Cat, Symbol("pet_type"), o.pet_type) + OpenAPI.validate_property(Cat, Symbol("hunts"), o.hunts) + OpenAPI.validate_property(Cat, Symbol("age"), o.age) +end + function OpenAPI.validate_property(::Type{ Cat }, name::Symbol, val) + + + end diff --git a/test/server/allany/AllAnyServer/src/models/model_Dog.jl b/test/server/allany/AllAnyServer/src/models/model_Dog.jl index 8af93c8..c5ac6b9 100644 --- a/test/server/allany/AllAnyServer/src/models/model_Dog.jl +++ b/test/server/allany/AllAnyServer/src/models/model_Dog.jl @@ -20,23 +20,32 @@ Base.@kwdef mutable struct Dog <: OpenAPI.APIModel breed::Union{Nothing, String} = nothing function Dog(pet_type, bark, breed, ) - OpenAPI.validate_property(Dog, Symbol("pet_type"), pet_type) - OpenAPI.validate_property(Dog, Symbol("bark"), bark) - OpenAPI.validate_property(Dog, Symbol("breed"), breed) - return new(pet_type, bark, breed, ) + o = new(pet_type, bark, breed, ) + OpenAPI.validate_properties(o) + return o end end # type Dog const _property_types_Dog = Dict{Symbol,String}(Symbol("pet_type")=>"String", Symbol("bark")=>"Bool", Symbol("breed")=>"String", ) OpenAPI.property_type(::Type{ Dog }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Dog[name]))} -function check_required(o::Dog) +function OpenAPI.check_required(o::Dog) o.pet_type === nothing && (return false) true end +function OpenAPI.validate_properties(o::Dog) + OpenAPI.validate_property(Dog, Symbol("pet_type"), o.pet_type) + OpenAPI.validate_property(Dog, Symbol("bark"), o.bark) + OpenAPI.validate_property(Dog, Symbol("breed"), o.breed) +end + function OpenAPI.validate_property(::Type{ Dog }, name::Symbol, val) + + + if name === Symbol("breed") OpenAPI.validate_param(name, "Dog", :enum, val, ["Dingo", "Husky", "Retriever", "Shepherd"]) end + end diff --git a/test/server/allany/AllAnyServer/src/models/model_Pet.jl b/test/server/allany/AllAnyServer/src/models/model_Pet.jl index f9dcf1f..e95c0d4 100644 --- a/test/server/allany/AllAnyServer/src/models/model_Pet.jl +++ b/test/server/allany/AllAnyServer/src/models/model_Pet.jl @@ -14,18 +14,24 @@ Base.@kwdef mutable struct Pet <: OpenAPI.APIModel pet_type::Union{Nothing, String} = nothing function Pet(pet_type, ) - OpenAPI.validate_property(Pet, Symbol("pet_type"), pet_type) - return new(pet_type, ) + o = new(pet_type, ) + OpenAPI.validate_properties(o) + return o end end # type Pet const _property_types_Pet = Dict{Symbol,String}(Symbol("pet_type")=>"String", ) OpenAPI.property_type(::Type{ Pet }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Pet[name]))} -function check_required(o::Pet) +function OpenAPI.check_required(o::Pet) o.pet_type === nothing && (return false) true end +function OpenAPI.validate_properties(o::Pet) + OpenAPI.validate_property(Pet, Symbol("pet_type"), o.pet_type) +end + function OpenAPI.validate_property(::Type{ Pet }, name::Symbol, val) + end diff --git a/test/server/allany/AllAnyServer/src/models/model_TypeWithAllArrayTypes.jl b/test/server/allany/AllAnyServer/src/models/model_TypeWithAllArrayTypes.jl index e781139..5236187 100644 --- a/test/server/allany/AllAnyServer/src/models/model_TypeWithAllArrayTypes.jl +++ b/test/server/allany/AllAnyServer/src/models/model_TypeWithAllArrayTypes.jl @@ -23,20 +23,29 @@ Base.@kwdef mutable struct TypeWithAllArrayTypes <: OpenAPI.APIModel anyofpets::Union{Nothing, Vector} = nothing # spec type: Union{ Nothing, Vector{AnyOfPets} } function TypeWithAllArrayTypes(oneofbase, anyofbase, oneofpets, anyofpets, ) - OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("oneofbase"), oneofbase) - OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("anyofbase"), anyofbase) - OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("oneofpets"), oneofpets) - OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("anyofpets"), anyofpets) - return new(oneofbase, anyofbase, oneofpets, anyofpets, ) + o = new(oneofbase, anyofbase, oneofpets, anyofpets, ) + OpenAPI.validate_properties(o) + return o end end # type TypeWithAllArrayTypes const _property_types_TypeWithAllArrayTypes = Dict{Symbol,String}(Symbol("oneofbase")=>"Vector{OneOfBaseType}", Symbol("anyofbase")=>"Vector{AnyOfBaseType}", Symbol("oneofpets")=>"Vector{OneOfPets}", Symbol("anyofpets")=>"Vector{AnyOfPets}", ) OpenAPI.property_type(::Type{ TypeWithAllArrayTypes }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_TypeWithAllArrayTypes[name]))} -function check_required(o::TypeWithAllArrayTypes) +function OpenAPI.check_required(o::TypeWithAllArrayTypes) true end +function OpenAPI.validate_properties(o::TypeWithAllArrayTypes) + OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("oneofbase"), o.oneofbase) + OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("anyofbase"), o.anyofbase) + OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("oneofpets"), o.oneofpets) + OpenAPI.validate_property(TypeWithAllArrayTypes, Symbol("anyofpets"), o.anyofpets) +end + function OpenAPI.validate_property(::Type{ TypeWithAllArrayTypes }, name::Symbol, val) + + + + end diff --git a/test/server/openapigenerator_petstore_v3/petstore/.openapi-generator/VERSION b/test/server/openapigenerator_petstore_v3/petstore/.openapi-generator/VERSION index 757e674..96cfbb1 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/.openapi-generator/VERSION +++ b/test/server/openapigenerator_petstore_v3/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -7.0.0-SNAPSHOT \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/server/openapigenerator_petstore_v3/petstore/README.md b/test/server/openapigenerator_petstore_v3/petstore/README.md index 37e15b3..87a8bcf 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/README.md +++ b/test/server/openapigenerator_petstore_v3/petstore/README.md @@ -6,6 +6,7 @@ This is a sample server Petstore server. For this sample, you can use the api ke This API server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 1.0.0 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaServerCodegen diff --git a/test/server/openapigenerator_petstore_v3/petstore/docs/PetApi.md b/test/server/openapigenerator_petstore_v3/petstore/docs/PetApi.md index 8803bc4..655746e 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/docs/PetApi.md +++ b/test/server/openapigenerator_petstore_v3/petstore/docs/PetApi.md @@ -26,7 +26,7 @@ Add a new pet to the store Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -55,7 +55,7 @@ Deletes a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| Pet id to delete | [default to nothing] +**pet_id** | **Int64**| Pet id to delete | ### Optional Parameters @@ -90,7 +90,7 @@ Multiple status values can be provided with comma separated strings Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**status** | [**Vector{String}**](String.md)| Status values that need to be considered for filter | [default to nothing] +**status** | [**Vector{String}**](String.md)| Status values that need to be considered for filter | ### Return type @@ -119,7 +119,7 @@ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**tags** | [**Vector{String}**](String.md)| Tags to filter by | [default to nothing] +**tags** | [**Vector{String}**](String.md)| Tags to filter by | ### Return type @@ -148,7 +148,7 @@ Returns a single pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| ID of pet to return | [default to nothing] +**pet_id** | **Int64**| ID of pet to return | ### Return type @@ -177,7 +177,7 @@ Update an existing pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -206,7 +206,7 @@ Updates a pet in the store with form data Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| ID of pet that needs to be updated | [default to nothing] +**pet_id** | **Int64**| ID of pet that needs to be updated | ### Optional Parameters @@ -242,13 +242,13 @@ uploads an image Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| ID of pet to update | [default to nothing] +**pet_id** | **Int64**| ID of pet to update | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **file** | **String****String**| file to upload | [default to nothing] + **file** | **Vector{UInt8}**| file to upload | **additional_metadata** | **String**| Additional data to pass to server | [default to nothing] ### Return type diff --git a/test/server/openapigenerator_petstore_v3/petstore/docs/StoreApi.md b/test/server/openapigenerator_petstore_v3/petstore/docs/StoreApi.md index acd3cc5..e64ce54 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/docs/StoreApi.md +++ b/test/server/openapigenerator_petstore_v3/petstore/docs/StoreApi.md @@ -22,7 +22,7 @@ For valid response try integer IDs with value < 1000. Anything above 1000 or non Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**order_id** | **String**| ID of the order that needs to be deleted | [default to nothing] +**order_id** | **String**| ID of the order that needs to be deleted | ### Return type @@ -76,7 +76,7 @@ For valid response try integer IDs with value <= 5 or > 10. Other values will ge Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**order_id** | **Int64**| ID of pet that needs to be fetched | [default to nothing] +**order_id** | **Int64**| ID of pet that needs to be fetched | ### Return type @@ -105,7 +105,7 @@ Place an order for a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**order** | [**Order**](Order.md)| order placed for purchasing the pet | +**order** | [**Order**](Order.md)| order placed for purchasing the pet | ### Return type diff --git a/test/server/openapigenerator_petstore_v3/petstore/docs/UserApi.md b/test/server/openapigenerator_petstore_v3/petstore/docs/UserApi.md index 6f8cbb3..49afb18 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/docs/UserApi.md +++ b/test/server/openapigenerator_petstore_v3/petstore/docs/UserApi.md @@ -26,7 +26,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**user** | [**User**](User.md)| Created user object | +**user** | [**User**](User.md)| Created user object | ### Return type @@ -55,7 +55,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**user** | [**Vector{User}**](User.md)| List of user object | +**user** | [**Vector{User}**](User.md)| List of user object | ### Return type @@ -84,7 +84,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**user** | [**Vector{User}**](User.md)| List of user object | +**user** | [**Vector{User}**](User.md)| List of user object | ### Return type @@ -113,7 +113,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| The name that needs to be deleted | [default to nothing] +**username** | **String**| The name that needs to be deleted | ### Return type @@ -142,7 +142,7 @@ Get user by user name Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| The name that needs to be fetched. Use user1 for testing. | [default to nothing] +**username** | **String**| The name that needs to be fetched. Use user1 for testing. | ### Return type @@ -171,8 +171,8 @@ Logs user into the system Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| The user name for login | [default to nothing] -**password** | **String**| The password for login in clear text | [default to nothing] +**username** | **String**| The user name for login | +**password** | **String**| The password for login in clear text | ### Return type @@ -226,8 +226,8 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| name that need to be deleted | [default to nothing] -**user** | [**User**](User.md)| Updated user object | +**username** | **String**| name that need to be deleted | +**user** | [**User**](User.md)| Updated user object | ### Return type diff --git a/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_PetApi.jl b/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_PetApi.jl index 9484444..861be59 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_PetApi.jl +++ b/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_PetApi.jl @@ -15,7 +15,20 @@ end function add_pet_validate(handler) function add_pet_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "add_pet" + n = "Pet" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -45,7 +58,31 @@ end function delete_pet_validate(handler) function delete_pet_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "delete_pet" + + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + n = "api_key" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -63,7 +100,7 @@ function find_pets_by_status_read(handler) function find_pets_by_status_read_handler(req::HTTP.Request) openapi_params = Dict{String,Any}() query_params = HTTP.queryparams(URIs.URI(req.target)) - openapi_params["status"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "status", required=true, ) + openapi_params["status"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "status", required=true, style="form", is_explode=false) req.context[:openapi_params] = openapi_params return handler(req) @@ -73,7 +110,20 @@ end function find_pets_by_status_validate(handler) function find_pets_by_status_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "find_pets_by_status" + n = "status" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -91,7 +141,7 @@ function find_pets_by_tags_read(handler) function find_pets_by_tags_read_handler(req::HTTP.Request) openapi_params = Dict{String,Any}() query_params = HTTP.queryparams(URIs.URI(req.target)) - openapi_params["tags"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "tags", required=true, ) + openapi_params["tags"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "tags", required=true, style="form", is_explode=false) req.context[:openapi_params] = openapi_params return handler(req) @@ -101,7 +151,20 @@ end function find_pets_by_tags_validate(handler) function find_pets_by_tags_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "find_pets_by_tags" + n = "tags" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -129,7 +192,20 @@ end function get_pet_by_id_validate(handler) function get_pet_by_id_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "get_pet_by_id" + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -156,7 +232,20 @@ end function update_pet_validate(handler) function update_pet_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "update_pet" + n = "Pet" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -188,7 +277,42 @@ end function update_pet_with_form_validate(handler) function update_pet_with_form_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "update_pet_with_form" + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "name" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "status" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -220,7 +344,42 @@ end function upload_file_validate(handler) function upload_file_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "upload_file" + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "file" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "additionalMetadata" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end diff --git a/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_StoreApi.jl b/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_StoreApi.jl index b982905..4a8b69f 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_StoreApi.jl +++ b/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_StoreApi.jl @@ -16,7 +16,20 @@ end function delete_order_validate(handler) function delete_order_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "delete_order" + n = "orderId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -42,7 +55,8 @@ end function get_inventory_validate(handler) function get_inventory_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] - + op = "get_inventory" + return handler(req) end end @@ -70,10 +84,16 @@ end function get_order_by_id_validate(handler) function get_order_by_id_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "get_order_by_id" - OpenAPI.validate_param("orderId", "get_order_by_id", :maximum, openapi_params["orderId"], 5, false) - OpenAPI.validate_param("orderId", "get_order_by_id", :minimum, openapi_params["orderId"], 1, false) - + n = "orderId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + OpenAPI.validate_param(n, op, :maximum, v, 5, false) + OpenAPI.validate_param(n, op, :minimum, v, 1, false) + end + return handler(req) end end @@ -100,7 +120,20 @@ end function place_order_validate(handler) function place_order_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "place_order" + n = "Order" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end diff --git a/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_UserApi.jl b/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_UserApi.jl index f8033b3..65f5cdd 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_UserApi.jl +++ b/test/server/openapigenerator_petstore_v3/petstore/src/apis/api_UserApi.jl @@ -15,7 +15,20 @@ end function create_user_validate(handler) function create_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "create_user" + n = "User" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -42,7 +55,20 @@ end function create_users_with_array_input_validate(handler) function create_users_with_array_input_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "create_users_with_array_input" + n = "User" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -69,7 +95,20 @@ end function create_users_with_list_input_validate(handler) function create_users_with_list_input_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "create_users_with_list_input" + n = "User" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -97,7 +136,20 @@ end function delete_user_validate(handler) function delete_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "delete_user" + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -125,7 +177,20 @@ end function get_user_by_name_validate(handler) function get_user_by_name_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "get_user_by_name" + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -143,8 +208,8 @@ function login_user_read(handler) function login_user_read_handler(req::HTTP.Request) openapi_params = Dict{String,Any}() query_params = HTTP.queryparams(URIs.URI(req.target)) - openapi_params["username"] = OpenAPI.Servers.to_param(String, query_params, "username", required=true, ) - openapi_params["password"] = OpenAPI.Servers.to_param(String, query_params, "password", required=true, ) + openapi_params["username"] = OpenAPI.Servers.to_param(String, query_params, "username", required=true, style="form", is_explode=true) + openapi_params["password"] = OpenAPI.Servers.to_param(String, query_params, "password", required=true, style="form", is_explode=true) req.context[:openapi_params] = openapi_params return handler(req) @@ -154,8 +219,27 @@ end function login_user_validate(handler) function login_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "login_user" + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + OpenAPI.validate_param(n, op, :pattern, v, r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$") + end + n = "password" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -181,7 +265,8 @@ end function logout_user_validate(handler) function logout_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] - + op = "logout_user" + return handler(req) end end @@ -210,7 +295,32 @@ end function update_user_validate(handler) function update_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "update_user" + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "User" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end diff --git a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_ApiResponse.jl b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_ApiResponse.jl index e19464b..80cfeac 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_ApiResponse.jl +++ b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_ApiResponse.jl @@ -21,22 +21,30 @@ Base.@kwdef mutable struct ApiResponse <: OpenAPI.APIModel type::Union{Nothing, String} = nothing function ApiResponse(message, code, type, ) - OpenAPI.validate_property(ApiResponse, Symbol("message"), message) - OpenAPI.validate_property(ApiResponse, Symbol("code"), code) - OpenAPI.validate_property(ApiResponse, Symbol("type"), type) - return new(message, code, type, ) + o = new(message, code, type, ) + OpenAPI.validate_properties(o) + return o end end # type ApiResponse const _property_types_ApiResponse = Dict{Symbol,String}(Symbol("message")=>"String", Symbol("code")=>"Int64", Symbol("type")=>"String", ) OpenAPI.property_type(::Type{ ApiResponse }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ApiResponse[name]))} -function check_required(o::ApiResponse) +function OpenAPI.check_required(o::ApiResponse) true end +function OpenAPI.validate_properties(o::ApiResponse) + OpenAPI.validate_property(ApiResponse, Symbol("message"), o.message) + OpenAPI.validate_property(ApiResponse, Symbol("code"), o.code) + OpenAPI.validate_property(ApiResponse, Symbol("type"), o.type) +end + function OpenAPI.validate_property(::Type{ ApiResponse }, name::Symbol, val) + + if name === Symbol("code") OpenAPI.validate_param(name, "ApiResponse", :format, val, "int32") end + end diff --git a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Category.jl b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Category.jl index 5224efb..53e027a 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Category.jl +++ b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Category.jl @@ -18,23 +18,30 @@ Base.@kwdef mutable struct Category <: OpenAPI.APIModel id::Union{Nothing, Int64} = nothing function Category(name, id, ) - OpenAPI.validate_property(Category, Symbol("name"), name) - OpenAPI.validate_property(Category, Symbol("id"), id) - return new(name, id, ) + o = new(name, id, ) + OpenAPI.validate_properties(o) + return o end end # type Category const _property_types_Category = Dict{Symbol,String}(Symbol("name")=>"String", Symbol("id")=>"Int64", ) OpenAPI.property_type(::Type{ Category }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Category[name]))} -function check_required(o::Category) +function OpenAPI.check_required(o::Category) true end +function OpenAPI.validate_properties(o::Category) + OpenAPI.validate_property(Category, Symbol("name"), o.name) + OpenAPI.validate_property(Category, Symbol("id"), o.id) +end + function OpenAPI.validate_property(::Type{ Category }, name::Symbol, val) + if name === Symbol("name") OpenAPI.validate_param(name, "Category", :pattern, val, r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$") end + if name === Symbol("id") OpenAPI.validate_param(name, "Category", :format, val, "int64") end diff --git a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Order.jl b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Order.jl index da94163..da6c81e 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Order.jl +++ b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Order.jl @@ -30,36 +30,48 @@ Base.@kwdef mutable struct Order <: OpenAPI.APIModel quantity::Union{Nothing, Int64} = nothing function Order(petId, shipDate, status, id, complete, quantity, ) - OpenAPI.validate_property(Order, Symbol("petId"), petId) - OpenAPI.validate_property(Order, Symbol("shipDate"), shipDate) - OpenAPI.validate_property(Order, Symbol("status"), status) - OpenAPI.validate_property(Order, Symbol("id"), id) - OpenAPI.validate_property(Order, Symbol("complete"), complete) - OpenAPI.validate_property(Order, Symbol("quantity"), quantity) - return new(petId, shipDate, status, id, complete, quantity, ) + o = new(petId, shipDate, status, id, complete, quantity, ) + OpenAPI.validate_properties(o) + return o end end # type Order const _property_types_Order = Dict{Symbol,String}(Symbol("petId")=>"Int64", Symbol("shipDate")=>"ZonedDateTime", Symbol("status")=>"String", Symbol("id")=>"Int64", Symbol("complete")=>"Bool", Symbol("quantity")=>"Int64", ) OpenAPI.property_type(::Type{ Order }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Order[name]))} -function check_required(o::Order) +function OpenAPI.check_required(o::Order) true end +function OpenAPI.validate_properties(o::Order) + OpenAPI.validate_property(Order, Symbol("petId"), o.petId) + OpenAPI.validate_property(Order, Symbol("shipDate"), o.shipDate) + OpenAPI.validate_property(Order, Symbol("status"), o.status) + OpenAPI.validate_property(Order, Symbol("id"), o.id) + OpenAPI.validate_property(Order, Symbol("complete"), o.complete) + OpenAPI.validate_property(Order, Symbol("quantity"), o.quantity) +end + function OpenAPI.validate_property(::Type{ Order }, name::Symbol, val) + if name === Symbol("petId") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + if name === Symbol("shipDate") OpenAPI.validate_param(name, "Order", :format, val, "date-time") end + if name === Symbol("status") OpenAPI.validate_param(name, "Order", :enum, val, ["placed", "approved", "delivered"]) end + + if name === Symbol("id") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + + if name === Symbol("quantity") OpenAPI.validate_param(name, "Order", :format, val, "int32") end diff --git a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Pet.jl b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Pet.jl index 2b4069f..9b30f64 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Pet.jl +++ b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Pet.jl @@ -30,30 +30,42 @@ Base.@kwdef mutable struct Pet <: OpenAPI.APIModel category = nothing # spec type: Union{ Nothing, Category } function Pet(name, status, id, photoUrls, tags, category, ) - OpenAPI.validate_property(Pet, Symbol("name"), name) - OpenAPI.validate_property(Pet, Symbol("status"), status) - OpenAPI.validate_property(Pet, Symbol("id"), id) - OpenAPI.validate_property(Pet, Symbol("photoUrls"), photoUrls) - OpenAPI.validate_property(Pet, Symbol("tags"), tags) - OpenAPI.validate_property(Pet, Symbol("category"), category) - return new(name, status, id, photoUrls, tags, category, ) + o = new(name, status, id, photoUrls, tags, category, ) + OpenAPI.validate_properties(o) + return o end end # type Pet const _property_types_Pet = Dict{Symbol,String}(Symbol("name")=>"String", Symbol("status")=>"String", Symbol("id")=>"Int64", Symbol("photoUrls")=>"Vector{String}", Symbol("tags")=>"Vector{Tag}", Symbol("category")=>"Category", ) OpenAPI.property_type(::Type{ Pet }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Pet[name]))} -function check_required(o::Pet) +function OpenAPI.check_required(o::Pet) o.name === nothing && (return false) o.photoUrls === nothing && (return false) true end +function OpenAPI.validate_properties(o::Pet) + OpenAPI.validate_property(Pet, Symbol("name"), o.name) + OpenAPI.validate_property(Pet, Symbol("status"), o.status) + OpenAPI.validate_property(Pet, Symbol("id"), o.id) + OpenAPI.validate_property(Pet, Symbol("photoUrls"), o.photoUrls) + OpenAPI.validate_property(Pet, Symbol("tags"), o.tags) + OpenAPI.validate_property(Pet, Symbol("category"), o.category) +end + function OpenAPI.validate_property(::Type{ Pet }, name::Symbol, val) + + if name === Symbol("status") OpenAPI.validate_param(name, "Pet", :enum, val, ["available", "pending", "sold"]) end + + if name === Symbol("id") OpenAPI.validate_param(name, "Pet", :format, val, "int64") end + + + end diff --git a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Tag.jl b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Tag.jl index f3410e8..0550acc 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Tag.jl +++ b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_Tag.jl @@ -18,20 +18,27 @@ Base.@kwdef mutable struct Tag <: OpenAPI.APIModel id::Union{Nothing, Int64} = nothing function Tag(name, id, ) - OpenAPI.validate_property(Tag, Symbol("name"), name) - OpenAPI.validate_property(Tag, Symbol("id"), id) - return new(name, id, ) + o = new(name, id, ) + OpenAPI.validate_properties(o) + return o end end # type Tag const _property_types_Tag = Dict{Symbol,String}(Symbol("name")=>"String", Symbol("id")=>"Int64", ) OpenAPI.property_type(::Type{ Tag }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Tag[name]))} -function check_required(o::Tag) +function OpenAPI.check_required(o::Tag) true end +function OpenAPI.validate_properties(o::Tag) + OpenAPI.validate_property(Tag, Symbol("name"), o.name) + OpenAPI.validate_property(Tag, Symbol("id"), o.id) +end + function OpenAPI.validate_property(::Type{ Tag }, name::Symbol, val) + + if name === Symbol("id") OpenAPI.validate_param(name, "Tag", :format, val, "int64") end diff --git a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_User.jl b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_User.jl index 0572483..95e836a 100644 --- a/test/server/openapigenerator_petstore_v3/petstore/src/models/model_User.jl +++ b/test/server/openapigenerator_petstore_v3/petstore/src/models/model_User.jl @@ -36,30 +36,43 @@ Base.@kwdef mutable struct User <: OpenAPI.APIModel email::Union{Nothing, String} = nothing function User(password, id, username, firstName, lastName, phone, userStatus, email, ) - OpenAPI.validate_property(User, Symbol("password"), password) - OpenAPI.validate_property(User, Symbol("id"), id) - OpenAPI.validate_property(User, Symbol("username"), username) - OpenAPI.validate_property(User, Symbol("firstName"), firstName) - OpenAPI.validate_property(User, Symbol("lastName"), lastName) - OpenAPI.validate_property(User, Symbol("phone"), phone) - OpenAPI.validate_property(User, Symbol("userStatus"), userStatus) - OpenAPI.validate_property(User, Symbol("email"), email) - return new(password, id, username, firstName, lastName, phone, userStatus, email, ) + o = new(password, id, username, firstName, lastName, phone, userStatus, email, ) + OpenAPI.validate_properties(o) + return o end end # type User const _property_types_User = Dict{Symbol,String}(Symbol("password")=>"String", Symbol("id")=>"Int64", Symbol("username")=>"String", Symbol("firstName")=>"String", Symbol("lastName")=>"String", Symbol("phone")=>"String", Symbol("userStatus")=>"Int64", Symbol("email")=>"String", ) OpenAPI.property_type(::Type{ User }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_User[name]))} -function check_required(o::User) +function OpenAPI.check_required(o::User) true end +function OpenAPI.validate_properties(o::User) + OpenAPI.validate_property(User, Symbol("password"), o.password) + OpenAPI.validate_property(User, Symbol("id"), o.id) + OpenAPI.validate_property(User, Symbol("username"), o.username) + OpenAPI.validate_property(User, Symbol("firstName"), o.firstName) + OpenAPI.validate_property(User, Symbol("lastName"), o.lastName) + OpenAPI.validate_property(User, Symbol("phone"), o.phone) + OpenAPI.validate_property(User, Symbol("userStatus"), o.userStatus) + OpenAPI.validate_property(User, Symbol("email"), o.email) +end + function OpenAPI.validate_property(::Type{ User }, name::Symbol, val) + + if name === Symbol("id") OpenAPI.validate_param(name, "User", :format, val, "int64") end + + + + + if name === Symbol("userStatus") OpenAPI.validate_param(name, "User", :format, val, "int32") end + end diff --git a/test/server/petstore_v2/petstore/.openapi-generator/VERSION b/test/server/petstore_v2/petstore/.openapi-generator/VERSION index 757e674..96cfbb1 100644 --- a/test/server/petstore_v2/petstore/.openapi-generator/VERSION +++ b/test/server/petstore_v2/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -7.0.0-SNAPSHOT \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/server/petstore_v2/petstore/README.md b/test/server/petstore_v2/petstore/README.md index ffeaa70..dfaddfe 100644 --- a/test/server/petstore_v2/petstore/README.md +++ b/test/server/petstore_v2/petstore/README.md @@ -6,6 +6,7 @@ This is a sample server Petstore server. You can find out more about Swagger at This API server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 1.0.6 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaServerCodegen diff --git a/test/server/petstore_v2/petstore/docs/PetApi.md b/test/server/petstore_v2/petstore/docs/PetApi.md index 90ab709..291445d 100644 --- a/test/server/petstore_v2/petstore/docs/PetApi.md +++ b/test/server/petstore_v2/petstore/docs/PetApi.md @@ -24,7 +24,7 @@ Add a new pet to the store Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -51,7 +51,7 @@ Deletes a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| Pet id to delete | [default to nothing] +**pet_id** | **Int64**| Pet id to delete | ### Optional Parameters @@ -86,7 +86,7 @@ Multiple status values can be provided with comma separated strings Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**status** | [**Vector{String}**](String.md)| Status values that need to be considered for filter | [default to nothing] +**status** | [**Vector{String}**](String.md)| Status values that need to be considered for filter | ### Return type @@ -115,7 +115,7 @@ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**tags** | [**Vector{String}**](String.md)| Tags to filter by | [default to nothing] +**tags** | [**Vector{String}**](String.md)| Tags to filter by | ### Return type @@ -144,7 +144,7 @@ Returns a single pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| ID of pet to return | [default to nothing] +**pet_id** | **Int64**| ID of pet to return | ### Return type @@ -171,7 +171,7 @@ Update an existing pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -198,7 +198,7 @@ Updates a pet in the store with form data Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| ID of pet that needs to be updated | [default to nothing] +**pet_id** | **Int64**| ID of pet that needs to be updated | ### Optional Parameters @@ -232,14 +232,14 @@ uploads an image Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| ID of pet to update | [default to nothing] +**pet_id** | **Int64**| ID of pet to update | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **additional_metadata** | **String**| Additional data to pass to server | [default to nothing] - **file** | **String****String**| file to upload | [default to nothing] + **file** | **Vector{UInt8}**| file to upload | ### Return type diff --git a/test/server/petstore_v2/petstore/docs/StoreApi.md b/test/server/petstore_v2/petstore/docs/StoreApi.md index 3c17628..6a9b9fd 100644 --- a/test/server/petstore_v2/petstore/docs/StoreApi.md +++ b/test/server/petstore_v2/petstore/docs/StoreApi.md @@ -22,7 +22,7 @@ For valid response try integer IDs with positive integer value. Negative or non- Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**order_id** | **Int64**| ID of the order that needs to be deleted | [default to nothing] +**order_id** | **Int64**| ID of the order that needs to be deleted | ### Return type @@ -76,7 +76,7 @@ For valid response try integer IDs with value >= 1 and <= 10. Other values will Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**order_id** | **Int64**| ID of pet that needs to be fetched | [default to nothing] +**order_id** | **Int64**| ID of pet that needs to be fetched | ### Return type @@ -103,7 +103,7 @@ Place an order for a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**body** | [**Order**](Order.md)| order placed for purchasing the pet | +**body** | [**Order**](Order.md)| order placed for purchasing the pet | ### Return type diff --git a/test/server/petstore_v2/petstore/docs/UserApi.md b/test/server/petstore_v2/petstore/docs/UserApi.md index b9f02ff..7f21ab5 100644 --- a/test/server/petstore_v2/petstore/docs/UserApi.md +++ b/test/server/petstore_v2/petstore/docs/UserApi.md @@ -26,7 +26,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**body** | [**User**](User.md)| Created user object | +**body** | [**User**](User.md)| Created user object | ### Return type @@ -53,7 +53,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**body** | [**Vector{User}**](User.md)| List of user object | +**body** | [**Vector{User}**](User.md)| List of user object | ### Return type @@ -80,7 +80,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**body** | [**Vector{User}**](User.md)| List of user object | +**body** | [**Vector{User}**](User.md)| List of user object | ### Return type @@ -109,7 +109,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| The name that needs to be deleted | [default to nothing] +**username** | **String**| The name that needs to be deleted | ### Return type @@ -136,7 +136,7 @@ Get user by user name Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| The name that needs to be fetched. Use user1 for testing. | [default to nothing] +**username** | **String**| The name that needs to be fetched. Use user1 for testing. | ### Return type @@ -163,8 +163,8 @@ Logs user into the system Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| The user name for login | [default to nothing] -**password** | **String**| The password for login in clear text | [default to nothing] +**username** | **String**| The user name for login | +**password** | **String**| The password for login in clear text | ### Return type @@ -216,8 +216,8 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| name that need to be updated | [default to nothing] -**body** | [**User**](User.md)| Updated user object | +**username** | **String**| name that need to be updated | +**body** | [**User**](User.md)| Updated user object | ### Return type diff --git a/test/server/petstore_v2/petstore/src/apis/api_PetApi.jl b/test/server/petstore_v2/petstore/src/apis/api_PetApi.jl index 4447492..8a8eec7 100644 --- a/test/server/petstore_v2/petstore/src/apis/api_PetApi.jl +++ b/test/server/petstore_v2/petstore/src/apis/api_PetApi.jl @@ -15,7 +15,20 @@ end function add_pet_validate(handler) function add_pet_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "add_pet" + n = "body" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -45,7 +58,31 @@ end function delete_pet_validate(handler) function delete_pet_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "delete_pet" + + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + n = "api_key" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -63,7 +100,7 @@ function find_pets_by_status_read(handler) function find_pets_by_status_read_handler(req::HTTP.Request) openapi_params = Dict{String,Any}() query_params = HTTP.queryparams(URIs.URI(req.target)) - openapi_params["status"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "status", required=true, ) + openapi_params["status"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "status", required=true, style="form", is_explode=true) req.context[:openapi_params] = openapi_params return handler(req) @@ -73,7 +110,20 @@ end function find_pets_by_status_validate(handler) function find_pets_by_status_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "find_pets_by_status" + n = "status" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -91,7 +141,7 @@ function find_pets_by_tags_read(handler) function find_pets_by_tags_read_handler(req::HTTP.Request) openapi_params = Dict{String,Any}() query_params = HTTP.queryparams(URIs.URI(req.target)) - openapi_params["tags"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "tags", required=true, ) + openapi_params["tags"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "tags", required=true, style="form", is_explode=true) req.context[:openapi_params] = openapi_params return handler(req) @@ -101,7 +151,20 @@ end function find_pets_by_tags_validate(handler) function find_pets_by_tags_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "find_pets_by_tags" + n = "tags" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -129,7 +192,20 @@ end function get_pet_by_id_validate(handler) function get_pet_by_id_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "get_pet_by_id" + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -156,7 +232,20 @@ end function update_pet_validate(handler) function update_pet_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "update_pet" + n = "body" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -188,7 +277,42 @@ end function update_pet_with_form_validate(handler) function update_pet_with_form_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "update_pet_with_form" + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "name" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "status" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -220,7 +344,42 @@ end function upload_file_validate(handler) function upload_file_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "upload_file" + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "additionalMetadata" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "file" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end diff --git a/test/server/petstore_v2/petstore/src/apis/api_StoreApi.jl b/test/server/petstore_v2/petstore/src/apis/api_StoreApi.jl index 81f630f..9482b0c 100644 --- a/test/server/petstore_v2/petstore/src/apis/api_StoreApi.jl +++ b/test/server/petstore_v2/petstore/src/apis/api_StoreApi.jl @@ -16,9 +16,15 @@ end function delete_order_validate(handler) function delete_order_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "delete_order" - OpenAPI.validate_param("orderId", "delete_order", :minimum, openapi_params["orderId"], 1, false) - + n = "orderId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + OpenAPI.validate_param(n, op, :minimum, v, 1, false) + end + return handler(req) end end @@ -44,7 +50,8 @@ end function get_inventory_validate(handler) function get_inventory_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] - + op = "get_inventory" + return handler(req) end end @@ -72,10 +79,16 @@ end function get_order_by_id_validate(handler) function get_order_by_id_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "get_order_by_id" - OpenAPI.validate_param("orderId", "get_order_by_id", :maximum, openapi_params["orderId"], 10, false) - OpenAPI.validate_param("orderId", "get_order_by_id", :minimum, openapi_params["orderId"], 1, false) - + n = "orderId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + OpenAPI.validate_param(n, op, :maximum, v, 10, false) + OpenAPI.validate_param(n, op, :minimum, v, 1, false) + end + return handler(req) end end @@ -102,7 +115,20 @@ end function place_order_validate(handler) function place_order_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "place_order" + n = "body" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end diff --git a/test/server/petstore_v2/petstore/src/apis/api_UserApi.jl b/test/server/petstore_v2/petstore/src/apis/api_UserApi.jl index d4d913e..5d4ffed 100644 --- a/test/server/petstore_v2/petstore/src/apis/api_UserApi.jl +++ b/test/server/petstore_v2/petstore/src/apis/api_UserApi.jl @@ -15,7 +15,20 @@ end function create_user_validate(handler) function create_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "create_user" + n = "body" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -42,7 +55,20 @@ end function create_users_with_array_input_validate(handler) function create_users_with_array_input_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "create_users_with_array_input" + n = "body" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -69,7 +95,20 @@ end function create_users_with_list_input_validate(handler) function create_users_with_list_input_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "create_users_with_list_input" + n = "body" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -97,7 +136,20 @@ end function delete_user_validate(handler) function delete_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "delete_user" + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -125,7 +177,20 @@ end function get_user_by_name_validate(handler) function get_user_by_name_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "get_user_by_name" + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -143,8 +208,8 @@ function login_user_read(handler) function login_user_read_handler(req::HTTP.Request) openapi_params = Dict{String,Any}() query_params = HTTP.queryparams(URIs.URI(req.target)) - openapi_params["username"] = OpenAPI.Servers.to_param(String, query_params, "username", required=true, ) - openapi_params["password"] = OpenAPI.Servers.to_param(String, query_params, "password", required=true, ) + openapi_params["username"] = OpenAPI.Servers.to_param(String, query_params, "username", required=true, style="", is_explode=false) + openapi_params["password"] = OpenAPI.Servers.to_param(String, query_params, "password", required=true, style="", is_explode=false) req.context[:openapi_params] = openapi_params return handler(req) @@ -154,7 +219,32 @@ end function login_user_validate(handler) function login_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "login_user" + + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + n = "password" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -180,7 +270,8 @@ end function logout_user_validate(handler) function logout_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] - + op = "logout_user" + return handler(req) end end @@ -209,7 +300,32 @@ end function update_user_validate(handler) function update_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "update_user" + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "body" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end diff --git a/test/server/petstore_v2/petstore/src/models/model_ApiResponse.jl b/test/server/petstore_v2/petstore/src/models/model_ApiResponse.jl index e8b7ce2..a196ba0 100644 --- a/test/server/petstore_v2/petstore/src/models/model_ApiResponse.jl +++ b/test/server/petstore_v2/petstore/src/models/model_ApiResponse.jl @@ -20,22 +20,30 @@ Base.@kwdef mutable struct ApiResponse <: OpenAPI.APIModel message::Union{Nothing, String} = nothing function ApiResponse(code, type, message, ) - OpenAPI.validate_property(ApiResponse, Symbol("code"), code) - OpenAPI.validate_property(ApiResponse, Symbol("type"), type) - OpenAPI.validate_property(ApiResponse, Symbol("message"), message) - return new(code, type, message, ) + o = new(code, type, message, ) + OpenAPI.validate_properties(o) + return o end end # type ApiResponse const _property_types_ApiResponse = Dict{Symbol,String}(Symbol("code")=>"Int64", Symbol("type")=>"String", Symbol("message")=>"String", ) OpenAPI.property_type(::Type{ ApiResponse }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ApiResponse[name]))} -function check_required(o::ApiResponse) +function OpenAPI.check_required(o::ApiResponse) true end +function OpenAPI.validate_properties(o::ApiResponse) + OpenAPI.validate_property(ApiResponse, Symbol("code"), o.code) + OpenAPI.validate_property(ApiResponse, Symbol("type"), o.type) + OpenAPI.validate_property(ApiResponse, Symbol("message"), o.message) +end + function OpenAPI.validate_property(::Type{ ApiResponse }, name::Symbol, val) + if name === Symbol("code") OpenAPI.validate_param(name, "ApiResponse", :format, val, "int32") end + + end diff --git a/test/server/petstore_v2/petstore/src/models/model_Category.jl b/test/server/petstore_v2/petstore/src/models/model_Category.jl index 3153470..159890d 100644 --- a/test/server/petstore_v2/petstore/src/models/model_Category.jl +++ b/test/server/petstore_v2/petstore/src/models/model_Category.jl @@ -17,21 +17,28 @@ Base.@kwdef mutable struct Category <: OpenAPI.APIModel name::Union{Nothing, String} = nothing function Category(id, name, ) - OpenAPI.validate_property(Category, Symbol("id"), id) - OpenAPI.validate_property(Category, Symbol("name"), name) - return new(id, name, ) + o = new(id, name, ) + OpenAPI.validate_properties(o) + return o end end # type Category const _property_types_Category = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", ) OpenAPI.property_type(::Type{ Category }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Category[name]))} -function check_required(o::Category) +function OpenAPI.check_required(o::Category) true end +function OpenAPI.validate_properties(o::Category) + OpenAPI.validate_property(Category, Symbol("id"), o.id) + OpenAPI.validate_property(Category, Symbol("name"), o.name) +end + function OpenAPI.validate_property(::Type{ Category }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Category", :format, val, "int64") end + end diff --git a/test/server/petstore_v2/petstore/src/models/model_Order.jl b/test/server/petstore_v2/petstore/src/models/model_Order.jl index 0f7efe8..a11ca51 100644 --- a/test/server/petstore_v2/petstore/src/models/model_Order.jl +++ b/test/server/petstore_v2/petstore/src/models/model_Order.jl @@ -29,37 +29,49 @@ Base.@kwdef mutable struct Order <: OpenAPI.APIModel complete::Union{Nothing, Bool} = nothing function Order(id, petId, quantity, shipDate, status, complete, ) - OpenAPI.validate_property(Order, Symbol("id"), id) - OpenAPI.validate_property(Order, Symbol("petId"), petId) - OpenAPI.validate_property(Order, Symbol("quantity"), quantity) - OpenAPI.validate_property(Order, Symbol("shipDate"), shipDate) - OpenAPI.validate_property(Order, Symbol("status"), status) - OpenAPI.validate_property(Order, Symbol("complete"), complete) - return new(id, petId, quantity, shipDate, status, complete, ) + o = new(id, petId, quantity, shipDate, status, complete, ) + OpenAPI.validate_properties(o) + return o end end # type Order const _property_types_Order = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("petId")=>"Int64", Symbol("quantity")=>"Int64", Symbol("shipDate")=>"ZonedDateTime", Symbol("status")=>"String", Symbol("complete")=>"Bool", ) OpenAPI.property_type(::Type{ Order }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Order[name]))} -function check_required(o::Order) +function OpenAPI.check_required(o::Order) true end +function OpenAPI.validate_properties(o::Order) + OpenAPI.validate_property(Order, Symbol("id"), o.id) + OpenAPI.validate_property(Order, Symbol("petId"), o.petId) + OpenAPI.validate_property(Order, Symbol("quantity"), o.quantity) + OpenAPI.validate_property(Order, Symbol("shipDate"), o.shipDate) + OpenAPI.validate_property(Order, Symbol("status"), o.status) + OpenAPI.validate_property(Order, Symbol("complete"), o.complete) +end + function OpenAPI.validate_property(::Type{ Order }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + if name === Symbol("petId") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + if name === Symbol("quantity") OpenAPI.validate_param(name, "Order", :format, val, "int32") end + if name === Symbol("shipDate") OpenAPI.validate_param(name, "Order", :format, val, "date-time") end + if name === Symbol("status") OpenAPI.validate_param(name, "Order", :enum, val, ["placed", "approved", "delivered"]) end + + end diff --git a/test/server/petstore_v2/petstore/src/models/model_Pet.jl b/test/server/petstore_v2/petstore/src/models/model_Pet.jl index ab01a63..322d93a 100644 --- a/test/server/petstore_v2/petstore/src/models/model_Pet.jl +++ b/test/server/petstore_v2/petstore/src/models/model_Pet.jl @@ -29,30 +29,42 @@ Base.@kwdef mutable struct Pet <: OpenAPI.APIModel status::Union{Nothing, String} = nothing function Pet(id, category, name, photoUrls, tags, status, ) - OpenAPI.validate_property(Pet, Symbol("id"), id) - OpenAPI.validate_property(Pet, Symbol("category"), category) - OpenAPI.validate_property(Pet, Symbol("name"), name) - OpenAPI.validate_property(Pet, Symbol("photoUrls"), photoUrls) - OpenAPI.validate_property(Pet, Symbol("tags"), tags) - OpenAPI.validate_property(Pet, Symbol("status"), status) - return new(id, category, name, photoUrls, tags, status, ) + o = new(id, category, name, photoUrls, tags, status, ) + OpenAPI.validate_properties(o) + return o end end # type Pet const _property_types_Pet = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("category")=>"Category", Symbol("name")=>"String", Symbol("photoUrls")=>"Vector{String}", Symbol("tags")=>"Vector{Tag}", Symbol("status")=>"String", ) OpenAPI.property_type(::Type{ Pet }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Pet[name]))} -function check_required(o::Pet) +function OpenAPI.check_required(o::Pet) o.name === nothing && (return false) o.photoUrls === nothing && (return false) true end +function OpenAPI.validate_properties(o::Pet) + OpenAPI.validate_property(Pet, Symbol("id"), o.id) + OpenAPI.validate_property(Pet, Symbol("category"), o.category) + OpenAPI.validate_property(Pet, Symbol("name"), o.name) + OpenAPI.validate_property(Pet, Symbol("photoUrls"), o.photoUrls) + OpenAPI.validate_property(Pet, Symbol("tags"), o.tags) + OpenAPI.validate_property(Pet, Symbol("status"), o.status) +end + function OpenAPI.validate_property(::Type{ Pet }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Pet", :format, val, "int64") end + + + + + if name === Symbol("status") OpenAPI.validate_param(name, "Pet", :enum, val, ["available", "pending", "sold"]) end + end diff --git a/test/server/petstore_v2/petstore/src/models/model_Tag.jl b/test/server/petstore_v2/petstore/src/models/model_Tag.jl index ee91e56..83051f1 100644 --- a/test/server/petstore_v2/petstore/src/models/model_Tag.jl +++ b/test/server/petstore_v2/petstore/src/models/model_Tag.jl @@ -17,21 +17,28 @@ Base.@kwdef mutable struct Tag <: OpenAPI.APIModel name::Union{Nothing, String} = nothing function Tag(id, name, ) - OpenAPI.validate_property(Tag, Symbol("id"), id) - OpenAPI.validate_property(Tag, Symbol("name"), name) - return new(id, name, ) + o = new(id, name, ) + OpenAPI.validate_properties(o) + return o end end # type Tag const _property_types_Tag = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", ) OpenAPI.property_type(::Type{ Tag }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Tag[name]))} -function check_required(o::Tag) +function OpenAPI.check_required(o::Tag) true end +function OpenAPI.validate_properties(o::Tag) + OpenAPI.validate_property(Tag, Symbol("id"), o.id) + OpenAPI.validate_property(Tag, Symbol("name"), o.name) +end + function OpenAPI.validate_property(::Type{ Tag }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Tag", :format, val, "int64") end + end diff --git a/test/server/petstore_v2/petstore/src/models/model_User.jl b/test/server/petstore_v2/petstore/src/models/model_User.jl index 2233bcf..39b2359 100644 --- a/test/server/petstore_v2/petstore/src/models/model_User.jl +++ b/test/server/petstore_v2/petstore/src/models/model_User.jl @@ -35,29 +35,42 @@ Base.@kwdef mutable struct User <: OpenAPI.APIModel userStatus::Union{Nothing, Int64} = nothing function User(id, username, firstName, lastName, email, password, phone, userStatus, ) - OpenAPI.validate_property(User, Symbol("id"), id) - OpenAPI.validate_property(User, Symbol("username"), username) - OpenAPI.validate_property(User, Symbol("firstName"), firstName) - OpenAPI.validate_property(User, Symbol("lastName"), lastName) - OpenAPI.validate_property(User, Symbol("email"), email) - OpenAPI.validate_property(User, Symbol("password"), password) - OpenAPI.validate_property(User, Symbol("phone"), phone) - OpenAPI.validate_property(User, Symbol("userStatus"), userStatus) - return new(id, username, firstName, lastName, email, password, phone, userStatus, ) + o = new(id, username, firstName, lastName, email, password, phone, userStatus, ) + OpenAPI.validate_properties(o) + return o end end # type User const _property_types_User = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("username")=>"String", Symbol("firstName")=>"String", Symbol("lastName")=>"String", Symbol("email")=>"String", Symbol("password")=>"String", Symbol("phone")=>"String", Symbol("userStatus")=>"Int64", ) OpenAPI.property_type(::Type{ User }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_User[name]))} -function check_required(o::User) +function OpenAPI.check_required(o::User) true end +function OpenAPI.validate_properties(o::User) + OpenAPI.validate_property(User, Symbol("id"), o.id) + OpenAPI.validate_property(User, Symbol("username"), o.username) + OpenAPI.validate_property(User, Symbol("firstName"), o.firstName) + OpenAPI.validate_property(User, Symbol("lastName"), o.lastName) + OpenAPI.validate_property(User, Symbol("email"), o.email) + OpenAPI.validate_property(User, Symbol("password"), o.password) + OpenAPI.validate_property(User, Symbol("phone"), o.phone) + OpenAPI.validate_property(User, Symbol("userStatus"), o.userStatus) +end + function OpenAPI.validate_property(::Type{ User }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "User", :format, val, "int64") end + + + + + + + if name === Symbol("userStatus") OpenAPI.validate_param(name, "User", :format, val, "int32") end diff --git a/test/server/petstore_v3/petstore/.openapi-generator/VERSION b/test/server/petstore_v3/petstore/.openapi-generator/VERSION index 757e674..96cfbb1 100644 --- a/test/server/petstore_v3/petstore/.openapi-generator/VERSION +++ b/test/server/petstore_v3/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -7.0.0-SNAPSHOT \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/server/petstore_v3/petstore/README.md b/test/server/petstore_v3/petstore/README.md index b45da64..b1fc21d 100644 --- a/test/server/petstore_v3/petstore/README.md +++ b/test/server/petstore_v3/petstore/README.md @@ -6,6 +6,7 @@ This is a sample server Petstore server. For this sample, you can use the api ke This API server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 1.0.0 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaServerCodegen diff --git a/test/server/petstore_v3/petstore/docs/PetApi.md b/test/server/petstore_v3/petstore/docs/PetApi.md index c625bd4..22e34a9 100644 --- a/test/server/petstore_v3/petstore/docs/PetApi.md +++ b/test/server/petstore_v3/petstore/docs/PetApi.md @@ -24,7 +24,7 @@ Add a new pet to the store Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -51,7 +51,7 @@ Deletes a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| Pet id to delete | [default to nothing] +**pet_id** | **Int64**| Pet id to delete | ### Optional Parameters @@ -86,7 +86,7 @@ Multiple status values can be provided with comma separated strings Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**status** | [**Vector{String}**](String.md)| Status values that need to be considered for filter | [default to nothing] +**status** | [**Vector{String}**](String.md)| Status values that need to be considered for filter | ### Return type @@ -115,7 +115,7 @@ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**tags** | [**Vector{String}**](String.md)| Tags to filter by | [default to nothing] +**tags** | [**Vector{String}**](String.md)| Tags to filter by | ### Return type @@ -144,7 +144,7 @@ Returns a single pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| ID of pet to return | [default to nothing] +**pet_id** | **Int64**| ID of pet to return | ### Return type @@ -171,7 +171,7 @@ Update an existing pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | +**pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -198,7 +198,7 @@ Updates a pet in the store with form data Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| ID of pet that needs to be updated | [default to nothing] +**pet_id** | **Int64**| ID of pet that needs to be updated | ### Optional Parameters @@ -232,14 +232,14 @@ uploads an image Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**pet_id** | **Int64**| ID of pet to update | [default to nothing] +**pet_id** | **Int64**| ID of pet to update | ### Optional Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **additional_metadata** | **String**| Additional data to pass to server | [default to nothing] - **file** | **String****String**| file to upload | [default to nothing] + **file** | **Vector{UInt8}**| file to upload | ### Return type diff --git a/test/server/petstore_v3/petstore/docs/StoreApi.md b/test/server/petstore_v3/petstore/docs/StoreApi.md index 834c458..3bd28f9 100644 --- a/test/server/petstore_v3/petstore/docs/StoreApi.md +++ b/test/server/petstore_v3/petstore/docs/StoreApi.md @@ -22,7 +22,7 @@ For valid response try integer IDs with value < 1000. Anything above 1000 or non Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**order_id** | **String**| ID of the order that needs to be deleted | [default to nothing] +**order_id** | **String**| ID of the order that needs to be deleted | ### Return type @@ -76,7 +76,7 @@ For valid response try integer IDs with value <= 5 or > 10. Other values will ge Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**order_id** | **Int64**| ID of pet that needs to be fetched | [default to nothing] +**order_id** | **Int64**| ID of pet that needs to be fetched | ### Return type @@ -103,7 +103,7 @@ Place an order for a pet Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**order** | [**Order**](Order.md)| order placed for purchasing the pet | +**order** | [**Order**](Order.md)| order placed for purchasing the pet | ### Return type diff --git a/test/server/petstore_v3/petstore/docs/UserApi.md b/test/server/petstore_v3/petstore/docs/UserApi.md index 7003c40..e6b0821 100644 --- a/test/server/petstore_v3/petstore/docs/UserApi.md +++ b/test/server/petstore_v3/petstore/docs/UserApi.md @@ -26,7 +26,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**user** | [**User**](User.md)| Created user object | +**user** | [**User**](User.md)| Created user object | ### Return type @@ -53,7 +53,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**user** | [**Vector{User}**](User.md)| List of user object | +**user** | [**Vector{User}**](User.md)| List of user object | ### Return type @@ -80,7 +80,7 @@ Creates list of users with given input array Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**user** | [**Vector{User}**](User.md)| List of user object | +**user** | [**Vector{User}**](User.md)| List of user object | ### Return type @@ -109,7 +109,7 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| The name that needs to be deleted | [default to nothing] +**username** | **String**| The name that needs to be deleted | ### Return type @@ -136,7 +136,7 @@ Get user by user name Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| The name that needs to be fetched. Use user1 for testing. | [default to nothing] +**username** | **String**| The name that needs to be fetched. Use user1 for testing. | ### Return type @@ -163,8 +163,8 @@ Logs user into the system Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| The user name for login | [default to nothing] -**password** | **String**| The password for login in clear text | [default to nothing] +**username** | **String**| The user name for login | +**password** | **String**| The password for login in clear text | ### Return type @@ -216,8 +216,8 @@ This can only be done by the logged in user. Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**username** | **String**| name that need to be deleted | [default to nothing] -**user** | [**User**](User.md)| Updated user object | +**username** | **String**| name that need to be deleted | +**user** | [**User**](User.md)| Updated user object | ### Return type diff --git a/test/server/petstore_v3/petstore/src/apis/api_PetApi.jl b/test/server/petstore_v3/petstore/src/apis/api_PetApi.jl index 2d8ac35..8f42cf3 100644 --- a/test/server/petstore_v3/petstore/src/apis/api_PetApi.jl +++ b/test/server/petstore_v3/petstore/src/apis/api_PetApi.jl @@ -15,6 +15,19 @@ end function add_pet_validate(handler) function add_pet_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "add_pet" + + n = "Pet" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end return handler(req) end @@ -45,6 +58,30 @@ end function delete_pet_validate(handler) function delete_pet_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "delete_pet" + + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "api_key" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end return handler(req) end @@ -63,7 +100,7 @@ function find_pets_by_status_read(handler) function find_pets_by_status_read_handler(req::HTTP.Request) openapi_params = Dict{String,Any}() query_params = HTTP.queryparams(URIs.URI(req.target)) - openapi_params["status"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "status", required=true, ) + openapi_params["status"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "status", required=true, style="form", is_explode=false) req.context[:openapi_params] = openapi_params return handler(req) @@ -73,6 +110,19 @@ end function find_pets_by_status_validate(handler) function find_pets_by_status_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "find_pets_by_status" + + n = "status" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end return handler(req) end @@ -91,7 +141,7 @@ function find_pets_by_tags_read(handler) function find_pets_by_tags_read_handler(req::HTTP.Request) openapi_params = Dict{String,Any}() query_params = HTTP.queryparams(URIs.URI(req.target)) - openapi_params["tags"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "tags", required=true, ) + openapi_params["tags"] = OpenAPI.Servers.to_param(Vector{String}, query_params, "tags", required=true, style="form", is_explode=false) req.context[:openapi_params] = openapi_params return handler(req) @@ -101,6 +151,19 @@ end function find_pets_by_tags_validate(handler) function find_pets_by_tags_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "find_pets_by_tags" + + n = "tags" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end return handler(req) end @@ -129,6 +192,19 @@ end function get_pet_by_id_validate(handler) function get_pet_by_id_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "get_pet_by_id" + + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end return handler(req) end @@ -156,6 +232,19 @@ end function update_pet_validate(handler) function update_pet_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "update_pet" + + n = "Pet" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end return handler(req) end @@ -188,6 +277,41 @@ end function update_pet_with_form_validate(handler) function update_pet_with_form_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "update_pet_with_form" + + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "name" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "status" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end return handler(req) end @@ -220,6 +344,41 @@ end function upload_file_validate(handler) function upload_file_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "upload_file" + + n = "petId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "additionalMetadata" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "file" + v = get(openapi_params, n, nothing) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end return handler(req) end diff --git a/test/server/petstore_v3/petstore/src/apis/api_StoreApi.jl b/test/server/petstore_v3/petstore/src/apis/api_StoreApi.jl index b982905..4a8b69f 100644 --- a/test/server/petstore_v3/petstore/src/apis/api_StoreApi.jl +++ b/test/server/petstore_v3/petstore/src/apis/api_StoreApi.jl @@ -16,7 +16,20 @@ end function delete_order_validate(handler) function delete_order_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "delete_order" + n = "orderId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -42,7 +55,8 @@ end function get_inventory_validate(handler) function get_inventory_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] - + op = "get_inventory" + return handler(req) end end @@ -70,10 +84,16 @@ end function get_order_by_id_validate(handler) function get_order_by_id_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "get_order_by_id" - OpenAPI.validate_param("orderId", "get_order_by_id", :maximum, openapi_params["orderId"], 5, false) - OpenAPI.validate_param("orderId", "get_order_by_id", :minimum, openapi_params["orderId"], 1, false) - + n = "orderId" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + OpenAPI.validate_param(n, op, :maximum, v, 5, false) + OpenAPI.validate_param(n, op, :minimum, v, 1, false) + end + return handler(req) end end @@ -100,7 +120,20 @@ end function place_order_validate(handler) function place_order_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "place_order" + n = "Order" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end diff --git a/test/server/petstore_v3/petstore/src/apis/api_UserApi.jl b/test/server/petstore_v3/petstore/src/apis/api_UserApi.jl index be5fda6..fc226f0 100644 --- a/test/server/petstore_v3/petstore/src/apis/api_UserApi.jl +++ b/test/server/petstore_v3/petstore/src/apis/api_UserApi.jl @@ -15,7 +15,20 @@ end function create_user_validate(handler) function create_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "create_user" + n = "User" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -42,7 +55,20 @@ end function create_users_with_array_input_validate(handler) function create_users_with_array_input_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "create_users_with_array_input" + n = "User" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -69,7 +95,20 @@ end function create_users_with_list_input_validate(handler) function create_users_with_list_input_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "create_users_with_list_input" + n = "User" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -97,7 +136,20 @@ end function delete_user_validate(handler) function delete_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "delete_user" + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -125,7 +177,20 @@ end function get_user_by_name_validate(handler) function get_user_by_name_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "get_user_by_name" + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -143,8 +208,8 @@ function login_user_read(handler) function login_user_read_handler(req::HTTP.Request) openapi_params = Dict{String,Any}() query_params = HTTP.queryparams(URIs.URI(req.target)) - openapi_params["username"] = OpenAPI.Servers.to_param(String, query_params, "username", required=true, ) - openapi_params["password"] = OpenAPI.Servers.to_param(String, query_params, "password", required=true, ) + openapi_params["username"] = OpenAPI.Servers.to_param(String, query_params, "username", required=true, style="form", is_explode=true) + openapi_params["password"] = OpenAPI.Servers.to_param(String, query_params, "password", required=true, style="form", is_explode=true) req.context[:openapi_params] = openapi_params return handler(req) @@ -154,7 +219,32 @@ end function login_user_validate(handler) function login_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "login_user" + + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + n = "password" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end @@ -180,7 +270,8 @@ end function logout_user_validate(handler) function logout_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] - + op = "logout_user" + return handler(req) end end @@ -209,7 +300,32 @@ end function update_user_validate(handler) function update_user_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "update_user" + n = "username" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + + n = "User" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + if isa(v, OpenAPI.APIModel) + OpenAPI.validate_properties(v) + if !OpenAPI.check_required(v) + throw(OpenAPI.ValidationException(;reason="$n is missing required properties", operation_or_model=op)) + end + end + end + return handler(req) end end diff --git a/test/server/petstore_v3/petstore/src/models/model_ApiResponse.jl b/test/server/petstore_v3/petstore/src/models/model_ApiResponse.jl index 107fab6..1d6b413 100644 --- a/test/server/petstore_v3/petstore/src/models/model_ApiResponse.jl +++ b/test/server/petstore_v3/petstore/src/models/model_ApiResponse.jl @@ -21,22 +21,30 @@ Base.@kwdef mutable struct ApiResponse <: OpenAPI.APIModel message::Union{Nothing, String} = nothing function ApiResponse(code, type, message, ) - OpenAPI.validate_property(ApiResponse, Symbol("code"), code) - OpenAPI.validate_property(ApiResponse, Symbol("type"), type) - OpenAPI.validate_property(ApiResponse, Symbol("message"), message) - return new(code, type, message, ) + o = new(code, type, message, ) + OpenAPI.validate_properties(o) + return o end end # type ApiResponse const _property_types_ApiResponse = Dict{Symbol,String}(Symbol("code")=>"Int64", Symbol("type")=>"String", Symbol("message")=>"String", ) OpenAPI.property_type(::Type{ ApiResponse }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ApiResponse[name]))} -function check_required(o::ApiResponse) +function OpenAPI.check_required(o::ApiResponse) true end +function OpenAPI.validate_properties(o::ApiResponse) + OpenAPI.validate_property(ApiResponse, Symbol("code"), o.code) + OpenAPI.validate_property(ApiResponse, Symbol("type"), o.type) + OpenAPI.validate_property(ApiResponse, Symbol("message"), o.message) +end + function OpenAPI.validate_property(::Type{ ApiResponse }, name::Symbol, val) + if name === Symbol("code") OpenAPI.validate_param(name, "ApiResponse", :format, val, "int32") end + + end diff --git a/test/server/petstore_v3/petstore/src/models/model_Category.jl b/test/server/petstore_v3/petstore/src/models/model_Category.jl index 90c8264..843d8a5 100644 --- a/test/server/petstore_v3/petstore/src/models/model_Category.jl +++ b/test/server/petstore_v3/petstore/src/models/model_Category.jl @@ -18,21 +18,28 @@ Base.@kwdef mutable struct Category <: OpenAPI.APIModel name::Union{Nothing, String} = nothing function Category(id, name, ) - OpenAPI.validate_property(Category, Symbol("id"), id) - OpenAPI.validate_property(Category, Symbol("name"), name) - return new(id, name, ) + o = new(id, name, ) + OpenAPI.validate_properties(o) + return o end end # type Category const _property_types_Category = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", ) OpenAPI.property_type(::Type{ Category }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Category[name]))} -function check_required(o::Category) +function OpenAPI.check_required(o::Category) true end +function OpenAPI.validate_properties(o::Category) + OpenAPI.validate_property(Category, Symbol("id"), o.id) + OpenAPI.validate_property(Category, Symbol("name"), o.name) +end + function OpenAPI.validate_property(::Type{ Category }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Category", :format, val, "int64") end + end diff --git a/test/server/petstore_v3/petstore/src/models/model_Order.jl b/test/server/petstore_v3/petstore/src/models/model_Order.jl index 9443890..c1e95bc 100644 --- a/test/server/petstore_v3/petstore/src/models/model_Order.jl +++ b/test/server/petstore_v3/petstore/src/models/model_Order.jl @@ -30,37 +30,49 @@ Base.@kwdef mutable struct Order <: OpenAPI.APIModel complete::Union{Nothing, Bool} = false function Order(id, petId, quantity, shipDate, status, complete, ) - OpenAPI.validate_property(Order, Symbol("id"), id) - OpenAPI.validate_property(Order, Symbol("petId"), petId) - OpenAPI.validate_property(Order, Symbol("quantity"), quantity) - OpenAPI.validate_property(Order, Symbol("shipDate"), shipDate) - OpenAPI.validate_property(Order, Symbol("status"), status) - OpenAPI.validate_property(Order, Symbol("complete"), complete) - return new(id, petId, quantity, shipDate, status, complete, ) + o = new(id, petId, quantity, shipDate, status, complete, ) + OpenAPI.validate_properties(o) + return o end end # type Order const _property_types_Order = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("petId")=>"Int64", Symbol("quantity")=>"Int64", Symbol("shipDate")=>"ZonedDateTime", Symbol("status")=>"String", Symbol("complete")=>"Bool", ) OpenAPI.property_type(::Type{ Order }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Order[name]))} -function check_required(o::Order) +function OpenAPI.check_required(o::Order) true end +function OpenAPI.validate_properties(o::Order) + OpenAPI.validate_property(Order, Symbol("id"), o.id) + OpenAPI.validate_property(Order, Symbol("petId"), o.petId) + OpenAPI.validate_property(Order, Symbol("quantity"), o.quantity) + OpenAPI.validate_property(Order, Symbol("shipDate"), o.shipDate) + OpenAPI.validate_property(Order, Symbol("status"), o.status) + OpenAPI.validate_property(Order, Symbol("complete"), o.complete) +end + function OpenAPI.validate_property(::Type{ Order }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + if name === Symbol("petId") OpenAPI.validate_param(name, "Order", :format, val, "int64") end + if name === Symbol("quantity") OpenAPI.validate_param(name, "Order", :format, val, "int32") end + if name === Symbol("shipDate") OpenAPI.validate_param(name, "Order", :format, val, "date-time") end + if name === Symbol("status") OpenAPI.validate_param(name, "Order", :enum, val, ["placed", "approved", "delivered"]) end + + end diff --git a/test/server/petstore_v3/petstore/src/models/model_Pet.jl b/test/server/petstore_v3/petstore/src/models/model_Pet.jl index 569a932..47f8f83 100644 --- a/test/server/petstore_v3/petstore/src/models/model_Pet.jl +++ b/test/server/petstore_v3/petstore/src/models/model_Pet.jl @@ -30,30 +30,42 @@ Base.@kwdef mutable struct Pet <: OpenAPI.APIModel status::Union{Nothing, String} = nothing function Pet(id, category, name, photoUrls, tags, status, ) - OpenAPI.validate_property(Pet, Symbol("id"), id) - OpenAPI.validate_property(Pet, Symbol("category"), category) - OpenAPI.validate_property(Pet, Symbol("name"), name) - OpenAPI.validate_property(Pet, Symbol("photoUrls"), photoUrls) - OpenAPI.validate_property(Pet, Symbol("tags"), tags) - OpenAPI.validate_property(Pet, Symbol("status"), status) - return new(id, category, name, photoUrls, tags, status, ) + o = new(id, category, name, photoUrls, tags, status, ) + OpenAPI.validate_properties(o) + return o end end # type Pet const _property_types_Pet = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("category")=>"Category", Symbol("name")=>"String", Symbol("photoUrls")=>"Vector{String}", Symbol("tags")=>"Vector{Tag}", Symbol("status")=>"String", ) OpenAPI.property_type(::Type{ Pet }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Pet[name]))} -function check_required(o::Pet) +function OpenAPI.check_required(o::Pet) o.name === nothing && (return false) o.photoUrls === nothing && (return false) true end +function OpenAPI.validate_properties(o::Pet) + OpenAPI.validate_property(Pet, Symbol("id"), o.id) + OpenAPI.validate_property(Pet, Symbol("category"), o.category) + OpenAPI.validate_property(Pet, Symbol("name"), o.name) + OpenAPI.validate_property(Pet, Symbol("photoUrls"), o.photoUrls) + OpenAPI.validate_property(Pet, Symbol("tags"), o.tags) + OpenAPI.validate_property(Pet, Symbol("status"), o.status) +end + function OpenAPI.validate_property(::Type{ Pet }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Pet", :format, val, "int64") end + + + + + if name === Symbol("status") OpenAPI.validate_param(name, "Pet", :enum, val, ["available", "pending", "sold"]) end + end diff --git a/test/server/petstore_v3/petstore/src/models/model_Tag.jl b/test/server/petstore_v3/petstore/src/models/model_Tag.jl index f717688..2743b59 100644 --- a/test/server/petstore_v3/petstore/src/models/model_Tag.jl +++ b/test/server/petstore_v3/petstore/src/models/model_Tag.jl @@ -18,21 +18,28 @@ Base.@kwdef mutable struct Tag <: OpenAPI.APIModel name::Union{Nothing, String} = nothing function Tag(id, name, ) - OpenAPI.validate_property(Tag, Symbol("id"), id) - OpenAPI.validate_property(Tag, Symbol("name"), name) - return new(id, name, ) + o = new(id, name, ) + OpenAPI.validate_properties(o) + return o end end # type Tag const _property_types_Tag = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("name")=>"String", ) OpenAPI.property_type(::Type{ Tag }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_Tag[name]))} -function check_required(o::Tag) +function OpenAPI.check_required(o::Tag) true end +function OpenAPI.validate_properties(o::Tag) + OpenAPI.validate_property(Tag, Symbol("id"), o.id) + OpenAPI.validate_property(Tag, Symbol("name"), o.name) +end + function OpenAPI.validate_property(::Type{ Tag }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "Tag", :format, val, "int64") end + end diff --git a/test/server/petstore_v3/petstore/src/models/model_User.jl b/test/server/petstore_v3/petstore/src/models/model_User.jl index 5af0ccd..8e95c9a 100644 --- a/test/server/petstore_v3/petstore/src/models/model_User.jl +++ b/test/server/petstore_v3/petstore/src/models/model_User.jl @@ -36,29 +36,42 @@ Base.@kwdef mutable struct User <: OpenAPI.APIModel userStatus::Union{Nothing, Int64} = nothing function User(id, username, firstName, lastName, email, password, phone, userStatus, ) - OpenAPI.validate_property(User, Symbol("id"), id) - OpenAPI.validate_property(User, Symbol("username"), username) - OpenAPI.validate_property(User, Symbol("firstName"), firstName) - OpenAPI.validate_property(User, Symbol("lastName"), lastName) - OpenAPI.validate_property(User, Symbol("email"), email) - OpenAPI.validate_property(User, Symbol("password"), password) - OpenAPI.validate_property(User, Symbol("phone"), phone) - OpenAPI.validate_property(User, Symbol("userStatus"), userStatus) - return new(id, username, firstName, lastName, email, password, phone, userStatus, ) + o = new(id, username, firstName, lastName, email, password, phone, userStatus, ) + OpenAPI.validate_properties(o) + return o end end # type User const _property_types_User = Dict{Symbol,String}(Symbol("id")=>"Int64", Symbol("username")=>"String", Symbol("firstName")=>"String", Symbol("lastName")=>"String", Symbol("email")=>"String", Symbol("password")=>"String", Symbol("phone")=>"String", Symbol("userStatus")=>"Int64", ) OpenAPI.property_type(::Type{ User }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_User[name]))} -function check_required(o::User) +function OpenAPI.check_required(o::User) true end +function OpenAPI.validate_properties(o::User) + OpenAPI.validate_property(User, Symbol("id"), o.id) + OpenAPI.validate_property(User, Symbol("username"), o.username) + OpenAPI.validate_property(User, Symbol("firstName"), o.firstName) + OpenAPI.validate_property(User, Symbol("lastName"), o.lastName) + OpenAPI.validate_property(User, Symbol("email"), o.email) + OpenAPI.validate_property(User, Symbol("password"), o.password) + OpenAPI.validate_property(User, Symbol("phone"), o.phone) + OpenAPI.validate_property(User, Symbol("userStatus"), o.userStatus) +end + function OpenAPI.validate_property(::Type{ User }, name::Symbol, val) + if name === Symbol("id") OpenAPI.validate_param(name, "User", :format, val, "int64") end + + + + + + + if name === Symbol("userStatus") OpenAPI.validate_param(name, "User", :format, val, "int32") end diff --git a/test/server/timeouttest/TimeoutTestServer/.openapi-generator/FILES b/test/server/timeouttest/TimeoutTestServer/.openapi-generator/FILES index ebea56a..5868e7c 100644 --- a/test/server/timeouttest/TimeoutTestServer/.openapi-generator/FILES +++ b/test/server/timeouttest/TimeoutTestServer/.openapi-generator/FILES @@ -1,4 +1,3 @@ -.openapi-generator-ignore README.md docs/DefaultApi.md docs/DelayresponseGet200Response.md diff --git a/test/server/timeouttest/TimeoutTestServer/.openapi-generator/VERSION b/test/server/timeouttest/TimeoutTestServer/.openapi-generator/VERSION index 4b49d9b..96cfbb1 100644 --- a/test/server/timeouttest/TimeoutTestServer/.openapi-generator/VERSION +++ b/test/server/timeouttest/TimeoutTestServer/.openapi-generator/VERSION @@ -1 +1 @@ -7.2.0 \ No newline at end of file +7.13.0-SNAPSHOT diff --git a/test/server/timeouttest/TimeoutTestServer/README.md b/test/server/timeouttest/TimeoutTestServer/README.md index ec09996..eee4b42 100644 --- a/test/server/timeouttest/TimeoutTestServer/README.md +++ b/test/server/timeouttest/TimeoutTestServer/README.md @@ -6,6 +6,7 @@ No description provided (generated by Openapi Generator https://github.com/opena This API server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. - API version: 1.0.0 +- Generator version: 7.13.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.JuliaServerCodegen diff --git a/test/server/timeouttest/TimeoutTestServer/docs/DefaultApi.md b/test/server/timeouttest/TimeoutTestServer/docs/DefaultApi.md index 69d6a79..745e4aa 100644 --- a/test/server/timeouttest/TimeoutTestServer/docs/DefaultApi.md +++ b/test/server/timeouttest/TimeoutTestServer/docs/DefaultApi.md @@ -17,7 +17,7 @@ Delay Response Endpoint Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **req** | **HTTP.Request** | The HTTP Request object | -**delay_seconds** | **Int64**| Number of seconds to delay the response | [default to nothing] +**delay_seconds** | **Int64**| Number of seconds to delay the response | ### Return type diff --git a/test/server/timeouttest/TimeoutTestServer/src/apis/api_DefaultApi.jl b/test/server/timeouttest/TimeoutTestServer/src/apis/api_DefaultApi.jl index 7e9f859..aafbaf7 100644 --- a/test/server/timeouttest/TimeoutTestServer/src/apis/api_DefaultApi.jl +++ b/test/server/timeouttest/TimeoutTestServer/src/apis/api_DefaultApi.jl @@ -6,7 +6,7 @@ function delayresponse_get_read(handler) function delayresponse_get_read_handler(req::HTTP.Request) openapi_params = Dict{String,Any}() query_params = HTTP.queryparams(URIs.URI(req.target)) - openapi_params["delay_seconds"] = OpenAPI.Servers.to_param(Int64, query_params, "delay_seconds", required=true, ) + openapi_params["delay_seconds"] = OpenAPI.Servers.to_param(Int64, query_params, "delay_seconds", required=true, style="form", is_explode=true) req.context[:openapi_params] = openapi_params return handler(req) @@ -16,9 +16,15 @@ end function delayresponse_get_validate(handler) function delayresponse_get_validate_handler(req::HTTP.Request) openapi_params = req.context[:openapi_params] + op = "delayresponse_get" - OpenAPI.validate_param("delay_seconds", "delayresponse_get", :minimum, openapi_params["delay_seconds"], 0, false) - + n = "delay_seconds" + v = get(openapi_params, n, nothing) + isnothing(v) && throw(OpenAPI.ValidationException(;reason="missing parameter $n", operation_or_model=op)) + if !isnothing(v) + OpenAPI.validate_param(n, op, :minimum, v, 0, false) + end + return handler(req) end end diff --git a/test/server/timeouttest/TimeoutTestServer/src/models/model_DelayresponseGet200Response.jl b/test/server/timeouttest/TimeoutTestServer/src/models/model_DelayresponseGet200Response.jl index c700d17..caa9121 100644 --- a/test/server/timeouttest/TimeoutTestServer/src/models/model_DelayresponseGet200Response.jl +++ b/test/server/timeouttest/TimeoutTestServer/src/models/model_DelayresponseGet200Response.jl @@ -14,17 +14,23 @@ Base.@kwdef mutable struct DelayresponseGet200Response <: OpenAPI.APIModel delay_seconds::Union{Nothing, String} = nothing function DelayresponseGet200Response(delay_seconds, ) - OpenAPI.validate_property(DelayresponseGet200Response, Symbol("delay_seconds"), delay_seconds) - return new(delay_seconds, ) + o = new(delay_seconds, ) + OpenAPI.validate_properties(o) + return o end end # type DelayresponseGet200Response const _property_types_DelayresponseGet200Response = Dict{Symbol,String}(Symbol("delay_seconds")=>"String", ) OpenAPI.property_type(::Type{ DelayresponseGet200Response }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_DelayresponseGet200Response[name]))} -function check_required(o::DelayresponseGet200Response) +function OpenAPI.check_required(o::DelayresponseGet200Response) true end +function OpenAPI.validate_properties(o::DelayresponseGet200Response) + OpenAPI.validate_property(DelayresponseGet200Response, Symbol("delay_seconds"), o.delay_seconds) +end + function OpenAPI.validate_property(::Type{ DelayresponseGet200Response }, name::Symbol, val) + end