telega-0.1.4: Network/Telegram/API/Bot/Endpoint.hs
module Network.Telegram.API.Bot.Endpoint
(Endpoint (..), Payload, Drop, Edit, Post, Purge) where
import "aeson" Data.Aeson (FromJSON, Value)
import "base" Data.String (String)
import Network.Telegram.API.Bot.Core (Telegram)
import Network.Telegram.API.Bot.Internal (telegram_request)
type family Payload a = r | r -> a
data Drop a
data Edit a
data Post a
data Purge a
class Endpoint a where
{-# MINIMAL payload, endpoint #-}
payload :: Payload a -> Value
endpoint :: Payload a -> String
request :: FromJSON r => Payload a -> Telegram e r
request x = telegram_request (endpoint x) (payload x)