{-# LANGUAGE UnicodeSyntax, Safe #-}
module Network.HTTP.Link.Types where
import Data.Text
import Network.URI
data LinkParam = Rel | Anchor | Rev | Hreflang | Media | Title | Title' | ContentType | Other Text
deriving (Eq, Show)
data Link uri = Link uri [(LinkParam, Text)]
deriving (Eq, Show)
class IsURI uri where
uriFromText ∷ Text → Either String uri
uriToText ∷ uri → Text
instance IsURI URI where
uriFromText = maybe (Left "") Right . parseURIReference . unpack
uriToText = pack . show
instance IsURI Text where
uriFromText = Right
uriToText = id
href ∷ (IsURI uri) ⇒ Link uri → uri
href (Link h _) = h
linkParams ∷ Link uri → [(LinkParam, Text)]
linkParams (Link _ ps) = ps