-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | HTTP cookie parsing and rendering
--   
--   Hackage documentation generation is not reliable. For up to date
--   documentation, please see:
--   https://www.stackage.org/package/cookie.
@package cookie
@version 0.5.1

module Web.Cookie

-- | Data type representing the key-value pair to use for a cookie, as well
--   as configuration options for it.
--   
--   
Creating a SetCookie
--   
--   SetCookie does not export a constructor; instead, use
--   defaultSetCookie and override values (see
--   http://www.yesodweb.com/book/settings-types for details):
--   
--   
--   import Web.Cookie
--   :set -XOverloadedStrings
--   let cookie = defaultSetCookie { setCookieName = "cookieName", setCookieValue = "cookieValue" }
--   
--   
--   
Cookie Configuration
--   
--   Cookies have several configuration options; a brief summary of each
--   option is given below. For more information, see RFC 6265 or
--   Wikipedia.
data SetCookie

-- | The name of the cookie. Default value: "name"
setCookieName :: SetCookie -> ByteString

-- | The value of the cookie. Default value: "value"
setCookieValue :: SetCookie -> ByteString

-- | The URL path for which the cookie should be sent. Default value:
--   Nothing (The browser defaults to the path of the request that
--   sets the cookie).
setCookiePath :: SetCookie -> Maybe ByteString

-- | The time at which to expire the cookie. Default value:
--   Nothing (The browser will default to expiring a cookie when
--   the browser is closed).
setCookieExpires :: SetCookie -> Maybe UTCTime

-- | The maximum time to keep the cookie, in seconds. Default value:
--   Nothing (The browser defaults to expiring a cookie when the
--   browser is closed).
setCookieMaxAge :: SetCookie -> Maybe DiffTime

-- | The domain for which the cookie should be sent. Default value:
--   Nothing (The browser defaults to the current domain).
setCookieDomain :: SetCookie -> Maybe ByteString

-- | Marks the cookie as "HTTP only", i.e. not accessible from Javascript.
--   Default value: False
setCookieHttpOnly :: SetCookie -> Bool

-- | Instructs the browser to only send the cookie over HTTPS. Default
--   value: False
setCookieSecure :: SetCookie -> Bool

-- | The "same site" policy of the cookie, i.e. whether it should be sent
--   with cross-site requests. Default value: Nothing
setCookieSameSite :: SetCookie -> Maybe SameSiteOption

-- | Cookies marked Partitioned are double-keyed: by the origin that sets
--   them and the origin of the top-level page. Default value:
--   False
setCookiePartitioned :: SetCookie -> Bool

-- | Data type representing the options for a SameSite cookie
data SameSiteOption

-- | Directs the browser to send the cookie for safe requests (e.g.
--   GET), but not for unsafe ones (e.g. POST)
sameSiteLax :: SameSiteOption

-- | Directs the browser to not send the cookie for any cross-site
--   request, including e.g. a user clicking a link in their email to open
--   a page on your site.
sameSiteStrict :: SameSiteOption

-- | Directs the browser to send the cookie for cross-site requests.
sameSiteNone :: SameSiteOption
parseSetCookie :: ByteString -> SetCookie
renderSetCookie :: SetCookie -> Builder

renderSetCookieBS :: SetCookie -> ByteString

-- | A minimal SetCookie. All fields are Nothing or
--   False except setCookieName = "name" and
--   setCookieValue = "value". You need this to construct a
--   SetCookie, because it does not export a constructor.
--   Equivalently, you may use def.
defaultSetCookie :: SetCookie
def :: Default a => a
type Cookies = [(ByteString, ByteString)]

-- | Decode the value of a "Cookie" request header into key/value pairs.
parseCookies :: ByteString -> Cookies
renderCookies :: Cookies -> Builder

renderCookiesBS :: Cookies -> ByteString

-- | Textual cookies. Functions assume UTF8 encoding.
type CookiesText = [(Text, Text)]
parseCookiesText :: ByteString -> CookiesText
renderCookiesText :: CookiesText -> Builder
expiresFormat :: String

-- | Format a UTCTime for a cookie.
formatCookieExpires :: UTCTime -> ByteString
parseCookieExpires :: ByteString -> Maybe UTCTime
instance Data.Default.Internal.Default Web.Cookie.SetCookie
instance GHC.Classes.Eq Web.Cookie.SameSiteOption
instance GHC.Classes.Eq Web.Cookie.SetCookie
instance Control.DeepSeq.NFData Web.Cookie.SameSiteOption
instance Control.DeepSeq.NFData Web.Cookie.SetCookie
instance GHC.Internal.Show.Show Web.Cookie.SameSiteOption
instance GHC.Internal.Show.Show Web.Cookie.SetCookie
