telegram-raw-api-0.2.0: src/Web/Telegram/API/Common.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedStrings #-}
module Web.Telegram.API.Common where
import Data.Aeson
import Data.Hashable
import Data.Int
import Data.String
import Data.Text (Text)
import Deriving.Aeson
import Servant.API
import Web.Telegram.Types
import Web.Telegram.Types.Stock
data ChatId
= ChatId Int64
| ChanId Text
deriving (Show, Eq, Generic, Default, Hashable)
deriving (FromJSON, ToJSON) via UntaggedSum ChatId
instance ToHttpApiData ChatId where
toQueryParam (ChatId i) = toQueryParam i
toQueryParam (ChanId t) = t
newtype Token = Token Text
deriving (Show, Eq, Generic)
deriving newtype (IsString, ToJSON, FromJSON)
instance Default Token where
def = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
instance ToHttpApiData Token where
toQueryParam (Token t) = "bot" <> t
type Base = Capture "token" Token