module Calamity.HTTP.AuditLog
( AuditLogRequest(..)
, GetAuditLogOptions(..) ) where
import Calamity.HTTP.Internal.Request
import Calamity.HTTP.Internal.Route
import Calamity.Internal.AesonThings
import Calamity.Internal.Utils ()
import Calamity.Types.Model.Guild
import Calamity.Types.Model.User
import Calamity.Types.Snowflake
import Data.Aeson
import Data.Default.Class
import Data.Function
import GHC.Generics
import Network.Wreq
data GetAuditLogOptions = GetAuditLogOptions
{ GetAuditLogOptions -> Maybe (Snowflake User)
userID :: Maybe (Snowflake User)
, GetAuditLogOptions -> Maybe AuditLogAction
actionType :: Maybe AuditLogAction
, GetAuditLogOptions -> Maybe (Snowflake AuditLogEntry)
before :: Maybe (Snowflake AuditLogEntry)
, GetAuditLogOptions -> Maybe Integer
limit :: Maybe Integer
}
deriving ( Int -> GetAuditLogOptions -> ShowS
[GetAuditLogOptions] -> ShowS
GetAuditLogOptions -> String
(Int -> GetAuditLogOptions -> ShowS)
-> (GetAuditLogOptions -> String)
-> ([GetAuditLogOptions] -> ShowS)
-> Show GetAuditLogOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetAuditLogOptions] -> ShowS
$cshowList :: [GetAuditLogOptions] -> ShowS
show :: GetAuditLogOptions -> String
$cshow :: GetAuditLogOptions -> String
showsPrec :: Int -> GetAuditLogOptions -> ShowS
$cshowsPrec :: Int -> GetAuditLogOptions -> ShowS
Show, (forall x. GetAuditLogOptions -> Rep GetAuditLogOptions x)
-> (forall x. Rep GetAuditLogOptions x -> GetAuditLogOptions)
-> Generic GetAuditLogOptions
forall x. Rep GetAuditLogOptions x -> GetAuditLogOptions
forall x. GetAuditLogOptions -> Rep GetAuditLogOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetAuditLogOptions x -> GetAuditLogOptions
$cfrom :: forall x. GetAuditLogOptions -> Rep GetAuditLogOptions x
Generic, GetAuditLogOptions
GetAuditLogOptions -> Default GetAuditLogOptions
forall a. a -> Default a
def :: GetAuditLogOptions
$cdef :: GetAuditLogOptions
Default )
deriving ( [GetAuditLogOptions] -> Encoding
[GetAuditLogOptions] -> Value
GetAuditLogOptions -> Encoding
GetAuditLogOptions -> Value
(GetAuditLogOptions -> Value)
-> (GetAuditLogOptions -> Encoding)
-> ([GetAuditLogOptions] -> Value)
-> ([GetAuditLogOptions] -> Encoding)
-> ToJSON GetAuditLogOptions
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [GetAuditLogOptions] -> Encoding
$ctoEncodingList :: [GetAuditLogOptions] -> Encoding
toJSONList :: [GetAuditLogOptions] -> Value
$ctoJSONList :: [GetAuditLogOptions] -> Value
toEncoding :: GetAuditLogOptions -> Encoding
$ctoEncoding :: GetAuditLogOptions -> Encoding
toJSON :: GetAuditLogOptions -> Value
$ctoJSON :: GetAuditLogOptions -> Value
ToJSON ) via CalamityJSON GetAuditLogOptions
data AuditLogRequest a where
GetAuditLog :: HasID Guild g => g -> AuditLogRequest AuditLog
instance Request (AuditLogRequest a) where
type Result (AuditLogRequest a) = a
route :: AuditLogRequest a -> Route
route (GetAuditLog (forall a. HasID Guild a => a -> Snowflake Guild
forall k (b :: k) a. HasID b a => a -> Snowflake b
getID @Guild -> Snowflake Guild
gid)) = RouteBuilder '[]
mkRouteBuilder RouteBuilder '[] -> S -> ConsRes S '[]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "guilds" RouteBuilder '[] -> ID Guild -> ConsRes (ID Guild) '[]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Guild
forall k (a :: k). ID a
ID @Guild RouteBuilder '[ '(Guild, 'Required)]
-> S -> ConsRes S '[ '(Guild, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "audit-logs"
RouteBuilder '[ '(Guild, 'Required)]
-> (RouteBuilder '[ '(Guild, 'Required)]
-> RouteBuilder '[ '(Guild, 'Satisfied), '(Guild, 'Required)])
-> RouteBuilder '[ '(Guild, 'Satisfied), '(Guild, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Guild
-> RouteBuilder '[ '(Guild, 'Required)]
-> RouteBuilder '[ '(Guild, 'Satisfied), '(Guild, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Guild
gid
RouteBuilder '[ '(Guild, 'Satisfied), '(Guild, 'Required)]
-> (RouteBuilder '[ '(Guild, 'Satisfied), '(Guild, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[ '(Guild, 'Satisfied), '(Guild, 'Required)] -> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
action :: AuditLogRequest a -> Options -> String -> IO (Response ByteString)
action (GetAuditLog _) = Options -> String -> IO (Response ByteString)
getWith