{-# LANGUAGE OverloadedStrings #-}
module Network.API.Mandrill.Settings where

import qualified Data.Text as T

mandrillUrl :: T.Text
mandrillUrl :: Text
mandrillUrl = Text
"https://mandrillapp.com/api/1.0/"

data MandrillCalls =
  -- Users API
    UsersInfo
  | UsersPing
  | UsersPing2
  | UsersSenders
  -- Messages API
  | MessagesSend
  | MessagesSendTemplate
  | MessagesSearch
  -- Inbound API
  | RoutesAdd
  | DomainsAdd
  -- Senders API
  | VerifyDomain

  deriving Int -> MandrillCalls -> ShowS
[MandrillCalls] -> ShowS
MandrillCalls -> String
(Int -> MandrillCalls -> ShowS)
-> (MandrillCalls -> String)
-> ([MandrillCalls] -> ShowS)
-> Show MandrillCalls
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MandrillCalls] -> ShowS
$cshowList :: [MandrillCalls] -> ShowS
show :: MandrillCalls -> String
$cshow :: MandrillCalls -> String
showsPrec :: Int -> MandrillCalls -> ShowS
$cshowsPrec :: Int -> MandrillCalls -> ShowS
Show

class MandrillEndpoint ep where
  toUrl :: ep -> T.Text

instance MandrillEndpoint MandrillCalls where
  toUrl :: MandrillCalls -> Text
toUrl MandrillCalls
UsersInfo            = Text
"users/info.json"
  toUrl MandrillCalls
UsersPing            = Text
"users/ping.json"
  toUrl MandrillCalls
UsersPing2           = Text
"users/ping2.json"
  toUrl MandrillCalls
UsersSenders         = Text
"users/senders.json"
  toUrl MandrillCalls
MessagesSend         = Text
"messages/send.json"
  toUrl MandrillCalls
MessagesSendTemplate = Text
"messages/send-template.json"
  toUrl MandrillCalls
MessagesSearch       = Text
"messages/search.json"
  toUrl MandrillCalls
DomainsAdd           = Text
"inbound/add-domain.json"
  toUrl MandrillCalls
RoutesAdd            = Text
"inbound/add-route.json"
  toUrl MandrillCalls
VerifyDomain         = Text
"senders/verify-domain.json"