module Servant.API.Routes.Response
( Responses
, unResponses
, noResponse
, oneResponse
, oneOfResponses
, Response
, responseType
, responseHeaders
, responses
, HasResponse (..)
, AllHasResponse (..)
)
where
import Lens.Micro
import "this" Servant.API.Routes.Internal.Response
import "this" Servant.API.Routes.Internal.Some
noResponse :: Responses
noResponse :: Responses
noResponse = Some Response -> Responses
Responses Some Response
forall a. Some a
None
oneResponse ::
forall a.
(HasResponse a) =>
Responses
oneResponse :: forall a. HasResponse a => Responses
oneResponse = Some Response -> Responses
Responses (Some Response -> Responses)
-> (Response -> Some Response) -> Response -> Responses
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Response -> Some Response
forall a. a -> Some a
One (Response -> Responses) -> Response -> Responses
forall a b. (a -> b) -> a -> b
$ forall a. HasResponse a => Response
getResponse @a
oneOfResponses ::
forall as.
(AllHasResponse as) =>
Responses
oneOfResponses :: forall (as :: [*]). AllHasResponse as => Responses
oneOfResponses = Some Response -> Responses
Responses (Some Response -> Responses)
-> ([Response] -> Some Response) -> [Response] -> Responses
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Response] -> Some Response
forall a. [a] -> Some a
Many ([Response] -> Responses) -> [Response] -> Responses
forall a b. (a -> b) -> a -> b
$ forall (as :: [*]). AllHasResponse as => [Response]
getResponses @as
responses :: Traversal' Responses Response
responses :: Traversal' Responses Response
responses = (Some Response -> f (Some Response)) -> Responses -> f Responses
Lens' Responses (Some Response)
unResponses ((Some Response -> f (Some Response)) -> Responses -> f Responses)
-> ((Response -> f Response) -> Some Response -> f (Some Response))
-> (Response -> f Response)
-> Responses
-> f Responses
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Response -> f Response) -> Some Response -> f (Some Response)
Traversal (Some Response) (Some Response) Response Response
forall (f :: * -> *) a b.
Traversable f =>
Traversal (f a) (f b) a b
traversed