{-# LANGUAGE GADTs #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE OverloadedStrings #-}

-- | Provides actions for Voice API interactions
module Discord.Internal.Rest.Voice
  ( VoiceRequest(..)
  ) where


import Network.HTTP.Req ((/:))
import qualified Network.HTTP.Req as R

import Discord.Internal.Rest.Prelude
import Discord.Internal.Types

instance Request (VoiceRequest a) where
  majorRoute :: VoiceRequest a -> String
majorRoute = VoiceRequest a -> String
forall a. VoiceRequest a -> String
voiceMajorRoute
  jsonRequest :: VoiceRequest a -> JsonRequest
jsonRequest = VoiceRequest a -> JsonRequest
forall a. VoiceRequest a -> JsonRequest
voiceJsonRequest

-- | Data constructor for requests. See <https://discord.com/developers/docs/resources/ API>
data VoiceRequest a where
  ListVoiceRegions :: VoiceRequest [VoiceRegion]

voiceMajorRoute :: VoiceRequest a -> String
voiceMajorRoute :: VoiceRequest a -> String
voiceMajorRoute VoiceRequest a
c = case VoiceRequest a
c of
  (VoiceRequest a
ListVoiceRegions) -> String
"whatever "

voices :: R.Url 'R.Https
voices :: Url 'Https
voices = Url 'Https
baseUrl Url 'Https -> Text -> Url 'Https
forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"voice"

voiceJsonRequest :: VoiceRequest r -> JsonRequest
voiceJsonRequest :: VoiceRequest r -> JsonRequest
voiceJsonRequest VoiceRequest r
c = case VoiceRequest r
c of
  (VoiceRequest r
ListVoiceRegions) -> Url 'Https -> Option 'Https -> JsonRequest
Get (Url 'Https
voices Url 'Https -> Text -> Url 'Https
forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"regions") Option 'Https
forall a. Monoid a => a
mempty