{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
module Discord.Internal.Rest.ApplicationCommands where
import Data.Aeson (Value)
import Discord.Internal.Rest.Prelude
import Discord.Internal.Types
import Discord.Internal.Types.ApplicationCommands
( ApplicationCommandPermissions,
GuildApplicationCommandPermissions(GuildApplicationCommandPermissions),
EditApplicationCommand,
CreateApplicationCommand,
ApplicationCommand )
import Network.HTTP.Req as R
instance Request (ApplicationCommandRequest a) where
jsonRequest :: ApplicationCommandRequest a -> JsonRequest
jsonRequest = forall a. ApplicationCommandRequest a -> JsonRequest
applicationCommandJsonRequest
majorRoute :: ApplicationCommandRequest a -> String
majorRoute = forall a. ApplicationCommandRequest a -> String
applicationCommandMajorRoute
data ApplicationCommandRequest a where
GetGlobalApplicationCommands :: ApplicationId
-> ApplicationCommandRequest [ApplicationCommand]
CreateGlobalApplicationCommand :: ApplicationId
-> CreateApplicationCommand
-> ApplicationCommandRequest ApplicationCommand
GetGlobalApplicationCommand :: ApplicationId
-> ApplicationCommandId
-> ApplicationCommandRequest ApplicationCommand
EditGlobalApplicationCommand :: ApplicationId
-> ApplicationCommandId
-> EditApplicationCommand
-> ApplicationCommandRequest ApplicationCommand
DeleteGlobalApplicationCommand :: ApplicationId
-> ApplicationCommandId
-> ApplicationCommandRequest ()
BulkOverWriteGlobalApplicationCommand :: ApplicationId
-> [CreateApplicationCommand]
-> ApplicationCommandRequest ()
GetGuildApplicationCommands :: ApplicationId
-> GuildId
-> ApplicationCommandRequest [ApplicationCommand]
CreateGuildApplicationCommand :: ApplicationId
-> GuildId
-> CreateApplicationCommand
-> ApplicationCommandRequest ApplicationCommand
GetGuildApplicationCommand :: ApplicationId
-> GuildId
-> ApplicationCommandId
-> ApplicationCommandRequest ApplicationCommand
EditGuildApplicationCommand :: ApplicationId
-> GuildId
-> ApplicationCommandId
-> CreateApplicationCommand
-> ApplicationCommandRequest ApplicationCommand
DeleteGuildApplicationCommand :: ApplicationId
-> GuildId
-> ApplicationCommandId
-> ApplicationCommandRequest ()
BulkOverWriteGuildApplicationCommand :: ApplicationId
-> GuildId
-> [CreateApplicationCommand]
-> ApplicationCommandRequest ()
GetGuildApplicationCommandPermissions :: ApplicationId
-> GuildId
-> ApplicationCommandRequest GuildApplicationCommandPermissions
GetApplicationCommandPermissions :: ApplicationId
-> GuildId
-> ApplicationCommandId
-> ApplicationCommandRequest GuildApplicationCommandPermissions
EditApplicationCommandPermissions :: ApplicationId
-> GuildId
-> ApplicationCommandId
-> [ApplicationCommandPermissions]
-> ApplicationCommandRequest GuildApplicationCommandPermissions
applications :: ApplicationId -> R.Url 'R.Https
applications :: ApplicationId -> Url 'Https
applications ApplicationId
s = Url 'Https
baseUrl forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"applications" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ ApplicationId
s
applicationCommandMajorRoute :: ApplicationCommandRequest a -> String
applicationCommandMajorRoute :: forall a. ApplicationCommandRequest a -> String
applicationCommandMajorRoute ApplicationCommandRequest a
a = case ApplicationCommandRequest a
a of
(GetGlobalApplicationCommands ApplicationId
aid) -> String
"get_glob_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(CreateGlobalApplicationCommand ApplicationId
aid CreateApplicationCommand
_) -> String
"write_glob_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(GetGlobalApplicationCommand ApplicationId
aid ApplicationCommandId
_) -> String
"get_glob_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(EditGlobalApplicationCommand ApplicationId
aid ApplicationCommandId
_ EditApplicationCommand
_) -> String
"write_glob_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(DeleteGlobalApplicationCommand ApplicationId
aid ApplicationCommandId
_) -> String
"write_glob_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(BulkOverWriteGlobalApplicationCommand ApplicationId
aid [CreateApplicationCommand]
_) -> String
"write_glob_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(GetGuildApplicationCommands ApplicationId
aid GuildId
_) -> String
"get_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(CreateGuildApplicationCommand ApplicationId
aid GuildId
_ CreateApplicationCommand
_) -> String
"write_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(GetGuildApplicationCommand ApplicationId
aid GuildId
_ ApplicationCommandId
_) -> String
"get_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(EditGuildApplicationCommand ApplicationId
aid GuildId
_ ApplicationCommandId
_ CreateApplicationCommand
_) -> String
"write_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(DeleteGuildApplicationCommand ApplicationId
aid GuildId
_ ApplicationCommandId
_) -> String
"write_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(BulkOverWriteGuildApplicationCommand ApplicationId
aid GuildId
_ [CreateApplicationCommand]
_) -> String
"write_appcomm" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(GetGuildApplicationCommandPermissions ApplicationId
aid GuildId
_) -> String
"appcom_perm " forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(GetApplicationCommandPermissions ApplicationId
aid GuildId
_ ApplicationCommandId
_) -> String
"appcom_perm " forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
(EditApplicationCommandPermissions ApplicationId
aid GuildId
_ ApplicationCommandId
_ [ApplicationCommandPermissions]
_) -> String
"appcom_perm " forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show ApplicationId
aid
applicationCommandJsonRequest :: ApplicationCommandRequest a -> JsonRequest
applicationCommandJsonRequest :: forall a. ApplicationCommandRequest a -> JsonRequest
applicationCommandJsonRequest ApplicationCommandRequest a
a = case ApplicationCommandRequest a
a of
(GetGlobalApplicationCommands ApplicationId
aid) ->
Url 'Https -> Option 'Https -> JsonRequest
Get (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands") forall a. Monoid a => a
mempty
(CreateGlobalApplicationCommand ApplicationId
aid CreateApplicationCommand
cac) ->
forall a.
HttpBody a =>
Url 'Https -> RestIO a -> Option 'Https -> JsonRequest
Post (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands") (forall a. ToJSON a => a -> RestIO (ReqBodyJson Value)
convert CreateApplicationCommand
cac) forall a. Monoid a => a
mempty
(GetGlobalApplicationCommand ApplicationId
aid ApplicationCommandId
aci) ->
Url 'Https -> Option 'Https -> JsonRequest
Get (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ ApplicationCommandId
aci) forall a. Monoid a => a
mempty
(EditGlobalApplicationCommand ApplicationId
aid ApplicationCommandId
aci EditApplicationCommand
eac) ->
forall a.
HttpBody a =>
Url 'Https -> RestIO a -> Option 'Https -> JsonRequest
Patch (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ ApplicationCommandId
aci) (forall a. ToJSON a => a -> RestIO (ReqBodyJson Value)
convert EditApplicationCommand
eac) forall a. Monoid a => a
mempty
(DeleteGlobalApplicationCommand ApplicationId
aid ApplicationCommandId
aci) ->
Url 'Https -> Option 'Https -> JsonRequest
Delete (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ ApplicationCommandId
aci) forall a. Monoid a => a
mempty
(BulkOverWriteGlobalApplicationCommand ApplicationId
aid [CreateApplicationCommand]
cacs) ->
forall a.
HttpBody a =>
Url 'Https -> a -> Option 'Https -> JsonRequest
Put (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands") (forall a. a -> ReqBodyJson a
R.ReqBodyJson forall a b. (a -> b) -> a -> b
$ forall a. ToJSON a => a -> Value
toJSON [CreateApplicationCommand]
cacs) forall a. Monoid a => a
mempty
(GetGuildApplicationCommands ApplicationId
aid GuildId
gid) ->
Url 'Https -> Option 'Https -> JsonRequest
Get (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"guilds" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ GuildId
gid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands") forall a. Monoid a => a
mempty
(CreateGuildApplicationCommand ApplicationId
aid GuildId
gid CreateApplicationCommand
cac) ->
forall a.
HttpBody a =>
Url 'Https -> RestIO a -> Option 'Https -> JsonRequest
Post (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"guilds" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ GuildId
gid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands") (forall a. ToJSON a => a -> RestIO (ReqBodyJson Value)
convert CreateApplicationCommand
cac) forall a. Monoid a => a
mempty
(GetGuildApplicationCommand ApplicationId
aid GuildId
gid ApplicationCommandId
aci) ->
Url 'Https -> Option 'Https -> JsonRequest
Get (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"guilds" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ GuildId
gid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ ApplicationCommandId
aci) forall a. Monoid a => a
mempty
(EditGuildApplicationCommand ApplicationId
aid GuildId
gid ApplicationCommandId
aci CreateApplicationCommand
eac) ->
forall a.
HttpBody a =>
Url 'Https -> RestIO a -> Option 'Https -> JsonRequest
Patch (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"guilds" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ GuildId
gid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ ApplicationCommandId
aci) (forall a. ToJSON a => a -> RestIO (ReqBodyJson Value)
convert CreateApplicationCommand
eac) forall a. Monoid a => a
mempty
(DeleteGuildApplicationCommand ApplicationId
aid GuildId
gid ApplicationCommandId
aci) ->
Url 'Https -> Option 'Https -> JsonRequest
Delete (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"guilds" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ GuildId
gid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ ApplicationCommandId
aci) forall a. Monoid a => a
mempty
(BulkOverWriteGuildApplicationCommand ApplicationId
aid GuildId
gid [CreateApplicationCommand]
cacs) ->
forall a.
HttpBody a =>
Url 'Https -> a -> Option 'Https -> JsonRequest
Put (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"guilds" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ GuildId
gid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands") (forall a. a -> ReqBodyJson a
R.ReqBodyJson forall a b. (a -> b) -> a -> b
$ forall a. ToJSON a => a -> Value
toJSON [CreateApplicationCommand]
cacs) forall a. Monoid a => a
mempty
(GetGuildApplicationCommandPermissions ApplicationId
aid GuildId
gid) ->
Url 'Https -> Option 'Https -> JsonRequest
Get (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"guilds" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ GuildId
gid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands" forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"permissions") forall a. Monoid a => a
mempty
(GetApplicationCommandPermissions ApplicationId
aid GuildId
gid ApplicationCommandId
cid) ->
Url 'Https -> Option 'Https -> JsonRequest
Get (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"guilds" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ GuildId
gid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ ApplicationCommandId
cid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"permissions") forall a. Monoid a => a
mempty
(EditApplicationCommandPermissions ApplicationId
aid GuildId
gid ApplicationCommandId
cid [ApplicationCommandPermissions]
ps) ->
forall a.
HttpBody a =>
Url 'Https -> a -> Option 'Https -> JsonRequest
Put (ApplicationId -> Url 'Https
applications ApplicationId
aid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"guilds" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ GuildId
gid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"commands" forall a (scheme :: Scheme).
ToHttpApiData a =>
Url scheme -> a -> Url scheme
/~ ApplicationCommandId
cid forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"permissions") (forall a. a -> ReqBodyJson a
R.ReqBodyJson forall a b. (a -> b) -> a -> b
$ forall a. ToJSON a => a -> Value
toJSON (ApplicationCommandId
-> ApplicationId
-> GuildId
-> [ApplicationCommandPermissions]
-> GuildApplicationCommandPermissions
GuildApplicationCommandPermissions ApplicationCommandId
cid ApplicationId
aid GuildId
gid [ApplicationCommandPermissions]
ps)) forall a. Monoid a => a
mempty
where
convert :: (ToJSON a) => a -> RestIO (ReqBodyJson Value)
convert :: forall a. ToJSON a => a -> RestIO (ReqBodyJson Value)
convert = (forall (f :: * -> *) a. Applicative f => a -> f a
pure @RestIO) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> ReqBodyJson a
R.ReqBodyJson forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ToJSON a => a -> Value
toJSON