mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-12-11 05:32:46 +00:00
[haskell-http-client] have applyOptionalParemeter (-&-) append values in headers or querystrings instead of replacing values (#7805)
This commit is contained in:
@@ -234,7 +234,7 @@ testBodyWithQueryParams
|
||||
testBodyWithQueryParams body (Query query) =
|
||||
_mkRequest "PUT" ["/fake/body-with-query-params"]
|
||||
`setBodyParam` body
|
||||
`setQuery` toQuery ("query", Just query)
|
||||
`addQuery` toQuery ("query", Just query)
|
||||
|
||||
data TestBodyWithQueryParams
|
||||
instance HasBodyParam TestBodyWithQueryParams User
|
||||
@@ -385,32 +385,32 @@ instance HasOptionalParam TestEnumParameters EnumFormString where
|
||||
-- | /Optional Param/ "enum_header_string_array" - Header parameter enum test (string array)
|
||||
instance HasOptionalParam TestEnumParameters EnumHeaderStringArray where
|
||||
applyOptionalParam req (EnumHeaderStringArray xs) =
|
||||
req `setHeader` toHeaderColl CommaSeparated ("enum_header_string_array", xs)
|
||||
req `addHeader` toHeaderColl CommaSeparated ("enum_header_string_array", xs)
|
||||
|
||||
-- | /Optional Param/ "enum_header_string" - Header parameter enum test (string)
|
||||
instance HasOptionalParam TestEnumParameters EnumHeaderString where
|
||||
applyOptionalParam req (EnumHeaderString xs) =
|
||||
req `setHeader` toHeader ("enum_header_string", xs)
|
||||
req `addHeader` toHeader ("enum_header_string", xs)
|
||||
|
||||
-- | /Optional Param/ "enum_query_string_array" - Query parameter enum test (string array)
|
||||
instance HasOptionalParam TestEnumParameters EnumQueryStringArray where
|
||||
applyOptionalParam req (EnumQueryStringArray xs) =
|
||||
req `setQuery` toQueryColl CommaSeparated ("enum_query_string_array", Just xs)
|
||||
req `addQuery` toQueryColl CommaSeparated ("enum_query_string_array", Just xs)
|
||||
|
||||
-- | /Optional Param/ "enum_query_string" - Query parameter enum test (string)
|
||||
instance HasOptionalParam TestEnumParameters EnumQueryString where
|
||||
applyOptionalParam req (EnumQueryString xs) =
|
||||
req `setQuery` toQuery ("enum_query_string", Just xs)
|
||||
req `addQuery` toQuery ("enum_query_string", Just xs)
|
||||
|
||||
-- | /Optional Param/ "enum_query_integer" - Query parameter enum test (double)
|
||||
instance HasOptionalParam TestEnumParameters EnumQueryInteger where
|
||||
applyOptionalParam req (EnumQueryInteger xs) =
|
||||
req `setQuery` toQuery ("enum_query_integer", Just xs)
|
||||
req `addQuery` toQuery ("enum_query_integer", Just xs)
|
||||
|
||||
-- | /Optional Param/ "enum_query_double" - Query parameter enum test (double)
|
||||
instance HasOptionalParam TestEnumParameters EnumQueryDouble where
|
||||
applyOptionalParam req (EnumQueryDouble xs) =
|
||||
req `setQuery` toQuery ("enum_query_double", Just xs)
|
||||
req `addQuery` toQuery ("enum_query_double", Just xs)
|
||||
|
||||
-- | @application/x-www-form-urlencoded@
|
||||
instance Consumes TestEnumParameters MimeFormUrlEncoded
|
||||
@@ -433,26 +433,26 @@ testGroupParameters
|
||||
-> OpenAPIPetstoreRequest TestGroupParameters MimeNoContent NoContent MimeNoContent
|
||||
testGroupParameters (RequiredStringGroup requiredStringGroup) (RequiredBooleanGroup requiredBooleanGroup) (RequiredInt64Group requiredInt64Group) =
|
||||
_mkRequest "DELETE" ["/fake"]
|
||||
`setQuery` toQuery ("required_string_group", Just requiredStringGroup)
|
||||
`setHeader` toHeader ("required_boolean_group", requiredBooleanGroup)
|
||||
`setQuery` toQuery ("required_int64_group", Just requiredInt64Group)
|
||||
`addQuery` toQuery ("required_string_group", Just requiredStringGroup)
|
||||
`addHeader` toHeader ("required_boolean_group", requiredBooleanGroup)
|
||||
`addQuery` toQuery ("required_int64_group", Just requiredInt64Group)
|
||||
|
||||
data TestGroupParameters
|
||||
|
||||
-- | /Optional Param/ "string_group" - String in group parameters
|
||||
instance HasOptionalParam TestGroupParameters StringGroup where
|
||||
applyOptionalParam req (StringGroup xs) =
|
||||
req `setQuery` toQuery ("string_group", Just xs)
|
||||
req `addQuery` toQuery ("string_group", Just xs)
|
||||
|
||||
-- | /Optional Param/ "boolean_group" - Boolean in group parameters
|
||||
instance HasOptionalParam TestGroupParameters BooleanGroup where
|
||||
applyOptionalParam req (BooleanGroup xs) =
|
||||
req `setHeader` toHeader ("boolean_group", xs)
|
||||
req `addHeader` toHeader ("boolean_group", xs)
|
||||
|
||||
-- | /Optional Param/ "int64_group" - Integer in group parameters
|
||||
instance HasOptionalParam TestGroupParameters Int64Group where
|
||||
applyOptionalParam req (Int64Group xs) =
|
||||
req `setQuery` toQuery ("int64_group", Just xs)
|
||||
req `addQuery` toQuery ("int64_group", Just xs)
|
||||
instance Produces TestGroupParameters MimeNoContent
|
||||
|
||||
|
||||
@@ -520,11 +520,11 @@ testQueryParameterCollectionFormat
|
||||
-> OpenAPIPetstoreRequest TestQueryParameterCollectionFormat MimeNoContent NoContent MimeNoContent
|
||||
testQueryParameterCollectionFormat (Pipe pipe) (Ioutil ioutil) (Http http) (Url url) (Context context) =
|
||||
_mkRequest "PUT" ["/fake/test-query-paramters"]
|
||||
`setQuery` toQueryColl CommaSeparated ("pipe", Just pipe)
|
||||
`setQuery` toQueryColl CommaSeparated ("ioutil", Just ioutil)
|
||||
`setQuery` toQueryColl SpaceSeparated ("http", Just http)
|
||||
`setQuery` toQueryColl CommaSeparated ("url", Just url)
|
||||
`setQuery` toQueryColl MultiParamArray ("context", Just context)
|
||||
`addQuery` toQueryColl CommaSeparated ("pipe", Just pipe)
|
||||
`addQuery` toQueryColl CommaSeparated ("ioutil", Just ioutil)
|
||||
`addQuery` toQueryColl SpaceSeparated ("http", Just http)
|
||||
`addQuery` toQueryColl CommaSeparated ("url", Just url)
|
||||
`addQuery` toQueryColl MultiParamArray ("context", Just context)
|
||||
|
||||
data TestQueryParameterCollectionFormat
|
||||
instance Produces TestQueryParameterCollectionFormat MimeNoContent
|
||||
|
||||
@@ -106,7 +106,7 @@ deletePet (PetId petId) =
|
||||
data DeletePet
|
||||
instance HasOptionalParam DeletePet ApiKey where
|
||||
applyOptionalParam req (ApiKey xs) =
|
||||
req `setHeader` toHeader ("api_key", xs)
|
||||
req `addHeader` toHeader ("api_key", xs)
|
||||
instance Produces DeletePet MimeNoContent
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ findPetsByStatus
|
||||
findPetsByStatus _ (Status status) =
|
||||
_mkRequest "GET" ["/pet/findByStatus"]
|
||||
`_hasAuthType` (P.Proxy :: P.Proxy AuthOAuthPetstoreAuth)
|
||||
`setQuery` toQueryColl CommaSeparated ("status", Just status)
|
||||
`addQuery` toQueryColl CommaSeparated ("status", Just status)
|
||||
|
||||
data FindPetsByStatus
|
||||
-- | @application/xml@
|
||||
@@ -153,7 +153,7 @@ findPetsByTags
|
||||
findPetsByTags _ (Tags tags) =
|
||||
_mkRequest "GET" ["/pet/findByTags"]
|
||||
`_hasAuthType` (P.Proxy :: P.Proxy AuthOAuthPetstoreAuth)
|
||||
`setQuery` toQueryColl CommaSeparated ("tags", Just tags)
|
||||
`addQuery` toQueryColl CommaSeparated ("tags", Just tags)
|
||||
|
||||
{-# DEPRECATED findPetsByTags "" #-}
|
||||
|
||||
|
||||
@@ -188,8 +188,8 @@ loginUser
|
||||
-> OpenAPIPetstoreRequest LoginUser MimeNoContent Text accept
|
||||
loginUser _ (Username username) (Password password) =
|
||||
_mkRequest "GET" ["/user/login"]
|
||||
`setQuery` toQuery ("username", Just username)
|
||||
`setQuery` toQuery ("password", Just password)
|
||||
`addQuery` toQuery ("username", Just username)
|
||||
`addQuery` toQuery ("password", Just password)
|
||||
|
||||
data LoginUser
|
||||
-- | @application/xml@
|
||||
|
||||
@@ -237,10 +237,19 @@ _mkRequest m u = OpenAPIPetstoreRequest m u _mkParams []
|
||||
_mkParams :: Params
|
||||
_mkParams = Params [] [] ParamBodyNone
|
||||
|
||||
setHeader :: OpenAPIPetstoreRequest req contentType res accept -> [NH.Header] -> OpenAPIPetstoreRequest req contentType res accept
|
||||
setHeader ::
|
||||
OpenAPIPetstoreRequest req contentType res accept
|
||||
-> [NH.Header]
|
||||
-> OpenAPIPetstoreRequest req contentType res accept
|
||||
setHeader req header =
|
||||
req `removeHeader` P.fmap P.fst header &
|
||||
L.over (rParamsL . paramsHeadersL) (header P.++)
|
||||
req `removeHeader` P.fmap P.fst header
|
||||
& (`addHeader` header)
|
||||
|
||||
addHeader ::
|
||||
OpenAPIPetstoreRequest req contentType res accept
|
||||
-> [NH.Header]
|
||||
-> OpenAPIPetstoreRequest req contentType res accept
|
||||
addHeader req header = L.over (rParamsL . paramsHeadersL) (header P.++) req
|
||||
|
||||
removeHeader :: OpenAPIPetstoreRequest req contentType res accept -> [NH.HeaderName] -> OpenAPIPetstoreRequest req contentType res accept
|
||||
removeHeader req header =
|
||||
@@ -264,15 +273,25 @@ _setAcceptHeader req =
|
||||
Just m -> req `setHeader` [("accept", BC.pack $ P.show m)]
|
||||
Nothing -> req `removeHeader` ["accept"]
|
||||
|
||||
setQuery :: OpenAPIPetstoreRequest req contentType res accept -> [NH.QueryItem] -> OpenAPIPetstoreRequest req contentType res accept
|
||||
setQuery req query =
|
||||
setQuery ::
|
||||
OpenAPIPetstoreRequest req contentType res accept
|
||||
-> [NH.QueryItem]
|
||||
-> OpenAPIPetstoreRequest req contentType res accept
|
||||
setQuery req query =
|
||||
req &
|
||||
L.over
|
||||
(rParamsL . paramsQueryL)
|
||||
((query P.++) . P.filter (\q -> cifst q `P.notElem` P.fmap cifst query))
|
||||
(P.filter (\q -> cifst q `P.notElem` P.fmap cifst query)) &
|
||||
(`addQuery` query)
|
||||
where
|
||||
cifst = CI.mk . P.fst
|
||||
|
||||
addQuery ::
|
||||
OpenAPIPetstoreRequest req contentType res accept
|
||||
-> [NH.QueryItem]
|
||||
-> OpenAPIPetstoreRequest req contentType res accept
|
||||
addQuery req query = req & L.over (rParamsL . paramsQueryL) (query P.++)
|
||||
|
||||
addForm :: OpenAPIPetstoreRequest req contentType res accept -> WH.Form -> OpenAPIPetstoreRequest req contentType res accept
|
||||
addForm req newform =
|
||||
let form = case paramsBody (rParams req) of
|
||||
|
||||
Reference in New Issue
Block a user