http2-1.0.0: Network/HTTP2.hs
{-# LANGUAGE OverloadedStrings #-}
-- | Framing in HTTP/2.
module Network.HTTP2 (
-- * Frame
Frame(..)
, FrameHeader(..)
, FramePayload(..)
, isPaddingDefined
-- * Encoding
, encodeFrame
, encodeFrameChunks
, encodeFrameHeader
, encodeFrameHeaderBuf
, encodeFramePayload
, EncodeInfo(..)
, encodeInfo
, module Network.HTTP2.Decode
-- * Frame type ID
, FrameTypeId(..)
, framePayloadToFrameTypeId
-- * Frame type
, FrameType
, fromFrameTypeId
, toFrameTypeId
-- * Types
, HeaderBlockFragment
, Padding
, Weight
, Priority(..)
, defaultPriority
, highestPriority
-- * Stream identifier
, StreamId
, isControl
, isRequest
, isResponse
-- * Stream identifier related
, testExclusive
, setExclusive
, clearExclusive
-- * Flags
, FrameFlags
, defaultFlags
, testEndStream
, testAck
, testEndHeader
, testPadded
, testPriority
, setEndStream
, setAck
, setEndHeader
, setPadded
, setPriority
-- * SettingsList
, SettingsList
, SettingsValue
, SettingsKeyId(..)
, fromSettingsKeyId
, toSettingsKeyId
, checkSettingsList
-- * Settings
, Settings(..)
, defaultSettings
, updateSettings
-- * Window
, WindowSize
, defaultInitialWindowSize
, maxWindowSize
, isWindowOverflow
-- * Misc
, recommendedConcurrency
-- * Error code
, ErrorCode
, ErrorCodeId(..)
, fromErrorCodeId
, toErrorCodeId
-- * Error
, HTTP2Error(..)
, errorCodeId
-- * Magic
, connectionPreface
, connectionPrefaceLength
, frameHeaderLength
, maxPayloadLength
) where
import Data.ByteString (ByteString)
import qualified Data.ByteString as BS
import Network.HTTP2.Decode
import Network.HTTP2.Encode
import Network.HTTP2.Types
-- | The preface of HTTP/2.
--
-- >>> connectionPreface
-- "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
connectionPreface :: ByteString
connectionPreface = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
-- | Length of the preface.
--
-- >>> connectionPrefaceLength
-- 24
connectionPrefaceLength :: Int
connectionPrefaceLength = BS.length connectionPreface