packages feed

eved-0.0.1.0: src/Web/Eved/UrlElement.hs

module Web.Eved.UrlElement
    where

import           Data.Text       (Text)
import qualified Web.HttpApiData as HttpApiData

data UrlElement a = UrlElement
    { fromUrlPiece :: Text -> Either Text a
    , toUrlPiece   :: a -> Text
    }

auto :: (HttpApiData.FromHttpApiData a, HttpApiData.ToHttpApiData a, Applicative f) => f (UrlElement a)
auto = pure $ UrlElement
    { fromUrlPiece = HttpApiData.parseUrlPiece
    , toUrlPiece = HttpApiData.toUrlPiece
    }

integer :: Applicative f => f (UrlElement Integer)
integer = auto

text :: Applicative f => f (UrlElement Text)
text = auto