blob: bb35d12f040b49503ed05ac098ccb58bf1cb145d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
{-# LANGUAGE GADTs #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedStrings #-}
-- | Provides actions for Scheduled Event API
module Discord.Internal.Rest.ScheduledEvents
( ScheduledEventRequest(..)
) where
import Data.Aeson ( ToJSON(toJSON) )
import Discord.Internal.Rest.Prelude ( JsonRequest(..)
, Request
( jsonRequest
, majorRoute
)
, baseUrl
)
import Discord.Internal.Types.Prelude ( GuildId
, ScheduledEventId
)
import Discord.Internal.Types.ScheduledEvents
( CreateScheduledEventData
, ModifyScheduledEventData
, ScheduledEvent
, ScheduledEventUser
)
import qualified Network.HTTP.Req as R
import Network.HTTP.Req ( (/:), (/~) )
-- | Data constructor for requests.
-- See <https://discord.com/developers/docs/resources/guild-scheduled-event>
data ScheduledEventRequest a where
-- | Gets all the Scheduled Events of a Guild
ListScheduledEvents ::GuildId
-> ScheduledEventRequest [ScheduledEvent]
-- | Creates a new ScheduledEvent
CreateScheduledEvent ::GuildId
-> CreateScheduledEventData
-> ScheduledEventRequest ScheduledEvent
-- | Gets the information about an Event
GetScheduledEvent ::GuildId
-> ScheduledEventId
-> ScheduledEventRequest ScheduledEvent
-- | Modifies a Scheduled Event's information
ModifyScheduledEvent ::GuildId
-> ScheduledEventId
-> ModifyScheduledEventData
-> ScheduledEventRequest ScheduledEvent
-- | Delete a ScheduledEvent
DeleteScheduledEvent ::GuildId
-> ScheduledEventId
-> ScheduledEventRequest ()
-- | Gets the Users that subscribed to the event
GetScheduledEventUsers ::GuildId
-> ScheduledEventId
-> ScheduledEventRequest [ScheduledEventUser]
sevEndpoint :: GuildId -> R.Url 'R.Https
sevEndpoint gid = baseUrl /: "guilds" /~ gid /: "scheduled-events"
instance Request (ScheduledEventRequest a) where
majorRoute = const "scheduledEvent"
jsonRequest rq = case rq of
ListScheduledEvents gid -> Get (sevEndpoint gid) mempty
GetScheduledEvent gid ev -> Get (sevEndpoint gid /~ ev) mempty
CreateScheduledEvent gid ev ->
Post (sevEndpoint gid) (pure $ R.ReqBodyJson $ toJSON ev) mempty
ModifyScheduledEvent gid evi ev -> Patch
(sevEndpoint gid /~ evi)
(pure $ R.ReqBodyJson $ toJSON ev)
mempty
DeleteScheduledEvent gid evi -> Delete (sevEndpoint gid /~ evi) mempty
GetScheduledEventUsers gid evi ->
Get (sevEndpoint gid /~ evi /: "users") mempty
|