module Calamity.HTTP.Invite (InviteRequest (..)) where
import Calamity.HTTP.Internal.Request
import Calamity.HTTP.Internal.Route
import Calamity.Types.Model.Guild
import Control.Lens hiding ((.=))
import Data.Text (Text)
import Network.HTTP.Req
data InviteRequest a where
GetInvite :: Text -> InviteRequest Invite
DeleteInvite :: Text -> InviteRequest ()
baseRoute :: RouteBuilder _
baseRoute :: RouteBuilder '[]
baseRoute = RouteBuilder '[]
mkRouteBuilder RouteBuilder '[] -> S -> ConsRes S '[]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S Text
"invites"
instance Request (InviteRequest a) where
type Result (InviteRequest a) = a
route :: InviteRequest a -> Route
route (GetInvite Text
c) =
RouteBuilder '[]
baseRoute RouteBuilder '[] -> S -> ConsRes S '[]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S Text
c
RouteBuilder '[] -> (RouteBuilder '[] -> Route) -> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[] -> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (DeleteInvite Text
c) =
RouteBuilder '[]
baseRoute RouteBuilder '[] -> S -> ConsRes S '[]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S Text
c
RouteBuilder '[] -> (RouteBuilder '[] -> Route) -> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[] -> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
action :: InviteRequest a -> Url 'Https -> Option 'Https -> Req LbsResponse
action (GetInvite Text
_) = Option 'Https -> Url 'Https -> Option 'Https -> Req LbsResponse
getWithP (Text
"with_counts" Text -> Bool -> Option 'Https
forall param a.
(QueryParam param, ToHttpApiData a) =>
Text -> a -> param
=: Bool
True)
action (DeleteInvite Text
_) = Url 'Https -> Option 'Https -> Req LbsResponse
deleteWith