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)