{-# options_haddock prune #-}

-- |Description: Header Data Types, Internal
module Polysemy.Http.Data.Header where

-- |The name of a header.
newtype HeaderName =
  HeaderName { HeaderName -> Text
unHeaderName :: Text }
  deriving stock (HeaderName -> HeaderName -> Bool
(HeaderName -> HeaderName -> Bool)
-> (HeaderName -> HeaderName -> Bool) -> Eq HeaderName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: HeaderName -> HeaderName -> Bool
== :: HeaderName -> HeaderName -> Bool
$c/= :: HeaderName -> HeaderName -> Bool
/= :: HeaderName -> HeaderName -> Bool
Eq, Int -> HeaderName -> ShowS
[HeaderName] -> ShowS
HeaderName -> String
(Int -> HeaderName -> ShowS)
-> (HeaderName -> String)
-> ([HeaderName] -> ShowS)
-> Show HeaderName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> HeaderName -> ShowS
showsPrec :: Int -> HeaderName -> ShowS
$cshow :: HeaderName -> String
show :: HeaderName -> String
$cshowList :: [HeaderName] -> ShowS
showList :: [HeaderName] -> ShowS
Show, (forall x. HeaderName -> Rep HeaderName x)
-> (forall x. Rep HeaderName x -> HeaderName) -> Generic HeaderName
forall x. Rep HeaderName x -> HeaderName
forall x. HeaderName -> Rep HeaderName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. HeaderName -> Rep HeaderName x
from :: forall x. HeaderName -> Rep HeaderName x
$cto :: forall x. Rep HeaderName x -> HeaderName
to :: forall x. Rep HeaderName x -> HeaderName
Generic)
  deriving newtype (String -> HeaderName
(String -> HeaderName) -> IsString HeaderName
forall a. (String -> a) -> IsString a
$cfromString :: String -> HeaderName
fromString :: String -> HeaderName
IsString)

json ''HeaderName

-- |The value of a header.
newtype HeaderValue =
  HeaderValue { HeaderValue -> Text
unHeaderValue :: Text }
  deriving stock (HeaderValue -> HeaderValue -> Bool
(HeaderValue -> HeaderValue -> Bool)
-> (HeaderValue -> HeaderValue -> Bool) -> Eq HeaderValue
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: HeaderValue -> HeaderValue -> Bool
== :: HeaderValue -> HeaderValue -> Bool
$c/= :: HeaderValue -> HeaderValue -> Bool
/= :: HeaderValue -> HeaderValue -> Bool
Eq, Int -> HeaderValue -> ShowS
[HeaderValue] -> ShowS
HeaderValue -> String
(Int -> HeaderValue -> ShowS)
-> (HeaderValue -> String)
-> ([HeaderValue] -> ShowS)
-> Show HeaderValue
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> HeaderValue -> ShowS
showsPrec :: Int -> HeaderValue -> ShowS
$cshow :: HeaderValue -> String
show :: HeaderValue -> String
$cshowList :: [HeaderValue] -> ShowS
showList :: [HeaderValue] -> ShowS
Show, (forall x. HeaderValue -> Rep HeaderValue x)
-> (forall x. Rep HeaderValue x -> HeaderValue)
-> Generic HeaderValue
forall x. Rep HeaderValue x -> HeaderValue
forall x. HeaderValue -> Rep HeaderValue x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. HeaderValue -> Rep HeaderValue x
from :: forall x. HeaderValue -> Rep HeaderValue x
$cto :: forall x. Rep HeaderValue x -> HeaderValue
to :: forall x. Rep HeaderValue x -> HeaderValue
Generic)
  deriving newtype (String -> HeaderValue
(String -> HeaderValue) -> IsString HeaderValue
forall a. (String -> a) -> IsString a
$cfromString :: String -> HeaderValue
fromString :: String -> HeaderValue
IsString)

json ''HeaderValue

-- |An HTTP header.
data Header =
  Header {
    Header -> HeaderName
name :: HeaderName,
    Header -> HeaderValue
value :: HeaderValue
  }
  deriving stock (Header -> Header -> Bool
(Header -> Header -> Bool)
-> (Header -> Header -> Bool) -> Eq Header
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Header -> Header -> Bool
== :: Header -> Header -> Bool
$c/= :: Header -> Header -> Bool
/= :: Header -> Header -> Bool
Eq, Int -> Header -> ShowS
[Header] -> ShowS
Header -> String
(Int -> Header -> ShowS)
-> (Header -> String) -> ([Header] -> ShowS) -> Show Header
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Header -> ShowS
showsPrec :: Int -> Header -> ShowS
$cshow :: Header -> String
show :: Header -> String
$cshowList :: [Header] -> ShowS
showList :: [Header] -> ShowS
Show, (forall x. Header -> Rep Header x)
-> (forall x. Rep Header x -> Header) -> Generic Header
forall x. Rep Header x -> Header
forall x. Header -> Rep Header x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Header -> Rep Header x
from :: forall x. Header -> Rep Header x
$cto :: forall x. Rep Header x -> Header
to :: forall x. Rep Header x -> Header
Generic)

json ''Header