calamity-0.11.0.0: Calamity/HTTP/AuditLog.hs
-- | Audit Log endpoints
module Calamity.HTTP.AuditLog (
AuditLogRequest (..),
GetAuditLogOptions (..),
) where
import Calamity.HTTP.Internal.Request
import Calamity.HTTP.Internal.Route
import Calamity.Types.Model.Guild
import Calamity.Types.Model.User
import Calamity.Types.Snowflake
import Data.Default.Class
import Data.Function ((&))
data GetAuditLogOptions = GetAuditLogOptions
{ userID :: Maybe (Snowflake User)
, actionType :: Maybe AuditLogAction
, before :: Maybe (Snowflake AuditLogEntry)
, limit :: Maybe Integer
}
deriving (Show)
instance Default GetAuditLogOptions where
def = GetAuditLogOptions Nothing Nothing Nothing Nothing
data AuditLogRequest a where
GetAuditLog :: (HasID Guild g) => g -> GetAuditLogOptions -> AuditLogRequest AuditLog
instance Request (AuditLogRequest a) where
type Result (AuditLogRequest a) = a
route (GetAuditLog (getID @Guild -> gid) _) =
mkRouteBuilder // S "guilds" // ID @Guild // S "audit-logs"
& giveID gid
& buildRoute
action (GetAuditLog _ GetAuditLogOptions {userID, actionType, before, limit}) =
getWithP
( "user_id" =:? (fromSnowflake <$> userID)
<> "action_type" =:? (fromEnum <$> actionType)
<> "before" =:? (fromSnowflake <$> before)
<> "limit" =:? limit
)