{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}

module Web.Telegram.API.Common where

import Data.Text (Text)
import GHC.Generics
import Servant.API
import Data.Aeson
import Data.String
import Web.Telegram.Types

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