{-# 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 (LinkParam -> LinkParam -> Bool
(LinkParam -> LinkParam -> Bool)
-> (LinkParam -> LinkParam -> Bool) -> Eq LinkParam
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LinkParam -> LinkParam -> Bool
$c/= :: LinkParam -> LinkParam -> Bool
== :: LinkParam -> LinkParam -> Bool
$c== :: LinkParam -> LinkParam -> Bool
Eq, Int -> LinkParam -> ShowS
[LinkParam] -> ShowS
LinkParam -> String
(Int -> LinkParam -> ShowS)
-> (LinkParam -> String)
-> ([LinkParam] -> ShowS)
-> Show LinkParam
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LinkParam] -> ShowS
$cshowList :: [LinkParam] -> ShowS
show :: LinkParam -> String
$cshow :: LinkParam -> String
showsPrec :: Int -> LinkParam -> ShowS
$cshowsPrec :: Int -> LinkParam -> ShowS
Show)
data Link = Link URI [(LinkParam, Text)]
deriving (Link -> Link -> Bool
(Link -> Link -> Bool) -> (Link -> Link -> Bool) -> Eq Link
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Link -> Link -> Bool
$c/= :: Link -> Link -> Bool
== :: Link -> Link -> Bool
$c== :: Link -> Link -> Bool
Eq, Int -> Link -> ShowS
[Link] -> ShowS
Link -> String
(Int -> Link -> ShowS)
-> (Link -> String) -> ([Link] -> ShowS) -> Show Link
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Link] -> ShowS
$cshowList :: [Link] -> ShowS
show :: Link -> String
$cshow :: Link -> String
showsPrec :: Int -> Link -> ShowS
$cshowsPrec :: Int -> Link -> ShowS
Show)
href ∷ Link → URI
href :: Link -> URI
href (Link h :: URI
h _) = URI
h
linkParams ∷ Link → [(LinkParam, Text)]
linkParams :: Link -> [(LinkParam, Text)]
linkParams (Link _ ps :: [(LinkParam, Text)]
ps) = [(LinkParam, Text)]
ps
lnk ∷ String → [(LinkParam, Text)] → Maybe Link
lnk :: String -> [(LinkParam, Text)] -> Maybe Link
lnk u :: String
u r :: [(LinkParam, Text)]
r = String -> Maybe URI
parseURI String
u Maybe URI -> (URI -> Maybe Link) -> Maybe Link
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Link -> Maybe Link
forall (m :: * -> *) a. Monad m => a -> m a
return (Link -> Maybe Link) -> (URI -> Link) -> URI -> Maybe Link
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \x :: URI
x → URI -> [(LinkParam, Text)] -> Link
Link URI
x [(LinkParam, Text)]
r