module Pinboard.Client.Types
( Pinboard
, PinboardRequest (..)
, PinboardConfig (..)
, ResultFormatType (..)
, Param (..)
, ParamsBS
) where
import Control.Monad.Reader (ReaderT)
import Control.Monad.Trans.Either (EitherT)
import Data.ByteString (ByteString)
import Data.Text (Text)
import Network.Http.Client (Connection)
import Pinboard.Client.Error (PinboardError (..))
import Data.Time.Calendar(Day)
import Data.Time.Clock(UTCTime)
type Pinboard = EitherT PinboardError (ReaderT (PinboardConfig, Connection) IO)
data PinboardRequest = PinboardRequest
{ requestPath :: Text
, requestParams :: [Param]
} deriving Show
data PinboardConfig = PinboardConfig
{ apiToken :: ByteString
, debug :: Bool
} deriving Show
type ParamsBS = [(ByteString, ByteString)]
data ResultFormatType = FormatJson | FormatXml
deriving (Show, Eq)
data Param = Format ResultFormatType
| Tag Text
| Tags Text
| Old Text
| New Text
| Count Int
| Start Int
| Results Int
| Url Text
| Date Day
| DateTime UTCTime
| FromDateTime UTCTime
| ToDateTime UTCTime
| Replace Bool
| Shared Bool
| ToRead Bool
| Description Text
| Extended Text
| Meta Int
deriving (Show, Eq)