-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | HTTP/2.0 library including HPACK -- @package http2 @version 0.6.0 module Network.HTTP2 -- | Parsing byte stream to make an HTTP/2 frame. decodeFrame :: Settings -> ByteString -> Either ErrorCodeId (Frame, ByteString) -- | Auxiliary information for frame encoding. data EncodeInfo EncodeInfo :: FrameFlags -> StreamIdentifier -> Maybe Padding -> EncodeInfo -- | Flags to be set in a frame header encodeFlags :: EncodeInfo -> FrameFlags -- | Stream id to be set in a frame header encodeStreamId :: EncodeInfo -> StreamIdentifier -- | Padding if any encodePadding :: EncodeInfo -> Maybe Padding -- | Encoding an HTTP/2 frame to byte stream. encodeFrame :: EncodeInfo -> FramePayload -> ByteString type SettingsKey = Word16 data SettingsKeyId SettingsHeaderTableSize :: SettingsKeyId SettingsEnablePush :: SettingsKeyId SettingsMaxConcurrentStreams :: SettingsKeyId SettingsInitialWindowSize :: SettingsKeyId SettingsMaxFrameSize :: SettingsKeyId SettingsMaxHeaderBlockSize :: SettingsKeyId type SettingsValue = Word32 -- |
--   >>> fromSettingsKeyId SettingsHeaderTableSize
--   1
--   
--   >>> fromSettingsKeyId SettingsMaxHeaderBlockSize
--   6
--   
fromSettingsKeyId :: SettingsKeyId -> Word16 -- |
--   >>> toSettingsKeyId 0
--   Nothing
--   
--   >>> toSettingsKeyId 1
--   Just SettingsHeaderTableSize
--   
--   >>> toSettingsKeyId 6
--   Just SettingsMaxHeaderBlockSize
--   
--   >>> toSettingsKeyId 7
--   Nothing
--   
toSettingsKeyId :: Word16 -> Maybe SettingsKeyId type Settings = Array SettingsKeyId (Maybe SettingsValue) -- | Default settings. All values are Nothing. defaultSettings :: Settings -- |
--   >>> toSettings [(SettingsHeaderTableSize,10),(SettingsInitialWindowSize,20),(SettingsHeaderTableSize,30)]
--   array (SettingsHeaderTableSize,SettingsMaxHeaderBlockSize) [(SettingsHeaderTableSize,Just 30),(SettingsEnablePush,Nothing),(SettingsMaxConcurrentStreams,Nothing),(SettingsInitialWindowSize,Just 20),(SettingsMaxFrameSize,Nothing),(SettingsMaxHeaderBlockSize,Nothing)]
--   
toSettings :: [(SettingsKeyId, SettingsValue)] -> Settings -- |
--   >>> fromSettings $ toSettings [(SettingsHeaderTableSize,10),(SettingsInitialWindowSize,20),(SettingsHeaderTableSize,30)]
--   [(SettingsHeaderTableSize,30),(SettingsInitialWindowSize,20)]
--   
fromSettings :: Settings -> [(SettingsKeyId, SettingsValue)] type ErrorCode = Word32 data ErrorCodeId NoError :: ErrorCodeId ProtocolError :: ErrorCodeId InternalError :: ErrorCodeId FlowControlError :: ErrorCodeId SettingsTimeout :: ErrorCodeId StreamClosed :: ErrorCodeId FrameSizeError :: ErrorCodeId RefusedStream :: ErrorCodeId Cancel :: ErrorCodeId CompressionError :: ErrorCodeId ConnectError :: ErrorCodeId EnhanceYourCalm :: ErrorCodeId InadequateSecurity :: ErrorCodeId UnknownErrorCode :: ErrorCode -> ErrorCodeId UnknownError :: String -> ErrorCodeId -- |
--   >>> fromErrorCodeId NoError
--   0
--   
--   >>> fromErrorCodeId InadequateSecurity
--   12
--   
fromErrorCodeId :: ErrorCodeId -> ErrorCode -- |
--   >>> toErrorCodeId 0
--   NoError
--   
--   >>> toErrorCodeId 0xc
--   InadequateSecurity
--   
--   >>> toErrorCodeId 0xd
--   UnknownErrorCode 13
--   
toErrorCodeId :: ErrorCode -> ErrorCodeId type FrameType = Word8 data FrameTypeId FrameData :: FrameTypeId FrameHeaders :: FrameTypeId FramePriority :: FrameTypeId FrameRSTStream :: FrameTypeId FrameSettings :: FrameTypeId FramePushPromise :: FrameTypeId FramePing :: FrameTypeId FrameGoAway :: FrameTypeId FrameWindowUpdate :: FrameTypeId FrameContinuation :: FrameTypeId -- |
--   >>> fromFrameTypeId FrameData
--   0
--   
--   >>> fromFrameTypeId FrameContinuation
--   9
--   
fromFrameTypeId :: FrameTypeId -> FrameType -- |
--   >>> toFrameTypeId 0
--   Just FrameData
--   
--   >>> toFrameTypeId 9
--   Just FrameContinuation
--   
--   >>> toFrameTypeId 10
--   Nothing
--   
toFrameTypeId :: FrameType -> Maybe FrameTypeId data Frame Frame :: FrameHeader -> FramePayload -> Frame frameHeader :: Frame -> FrameHeader framePayload :: Frame -> FramePayload data FrameHeader FrameHeader :: PayloadLength -> FrameFlags -> StreamIdentifier -> FrameHeader payloadLength :: FrameHeader -> PayloadLength flags :: FrameHeader -> FrameFlags streamId :: FrameHeader -> StreamIdentifier data FramePayload DataFrame :: ByteString -> FramePayload HeadersFrame :: (Maybe Priority) -> HeaderBlockFragment -> FramePayload PriorityFrame :: Priority -> FramePayload RSTStreamFrame :: ErrorCodeId -> FramePayload SettingsFrame :: Settings -> FramePayload PushPromiseFrame :: PromisedStreamId -> HeaderBlockFragment -> FramePayload PingFrame :: ByteString -> FramePayload GoAwayFrame :: LastStreamId -> ErrorCodeId -> ByteString -> FramePayload WindowUpdateFrame :: WindowSizeIncrement -> FramePayload ContinuationFrame :: HeaderBlockFragment -> FramePayload UnknownFrame :: FrameType -> ByteString -> FramePayload framePayloadToFrameType :: FramePayload -> FrameType newtype StreamIdentifier StreamIdentifier :: Word32 -> StreamIdentifier type StreamDependency = StreamIdentifier type PromisedStreamId = StreamIdentifier type LastStreamId = StreamIdentifier fromStreamIdentifier :: StreamIdentifier -> Word32 toStreamIdentifier :: Word32 -> StreamIdentifier streamIdentifierForSeetings :: StreamIdentifier testExclusive :: Word32 -> Bool setExclusive :: Word32 -> Word32 type FrameFlags = Word8 defaultFlags :: FrameFlags -- |
--   >>> testEndStream 0x1
--   True
--   
testEndStream :: FrameFlags -> Bool -- |
--   >>> testAck 0x1
--   True
--   
testAck :: FrameFlags -> Bool -- |
--   >>> testEndHeader 0x4
--   True
--   
testEndHeader :: FrameFlags -> Bool -- |
--   >>> testPadded 0x8
--   True
--   
testPadded :: FrameFlags -> Bool -- |
--   >>> testPriority 0x20
--   True
--   
testPriority :: FrameFlags -> Bool -- |
--   >>> setEndStream 0
--   1
--   
setEndStream :: FrameFlags -> FrameFlags -- |
--   >>> setAck 0
--   1
--   
setAck :: FrameFlags -> FrameFlags -- |
--   >>> setEndHeader 0
--   4
--   
setEndHeader :: FrameFlags -> FrameFlags -- |
--   >>> setPadded 0
--   8
--   
setPadded :: FrameFlags -> FrameFlags -- |
--   >>> setPriority 0
--   32
--   
setPriority :: FrameFlags -> FrameFlags type PayloadLength = Int maxPayloadLength :: PayloadLength type WindowSizeIncrement = Word32 type HeaderBlockFragment = ByteString data Priority Priority :: Bool -> StreamIdentifier -> Int -> Priority exclusive :: Priority -> Bool streamDependency :: Priority -> StreamIdentifier weight :: Priority -> Int type Padding = ByteString -- | HPACK: encoding and decoding a header list. module Network.HPACK -- | HPACK encoding, from HeaderList to ByteStream. type HPACKEncoding = Context -> HeaderList -> IO (Context, ByteStream) -- | HPACK decoding, from ByteStream to HeaderList. type HPACKDecoding = Context -> ByteStream -> IO (Context, HeaderList) -- | Converting HeaderList for HTTP request to the low level format. encodeHeader :: EncodeStrategy -> HPACKEncoding -- | Converting the low level format for HTTP request to HeaderList. -- DecodeError would be thrown. decodeHeader :: HPACKDecoding -- | Context for HPACK encoding/decoding. This is destructive! data Context -- | Creating a new Context. The first argument is the size of a -- header table. newContextForEncoding :: Size -> IO Context -- | Creating a new Context. The first argument is the size of a -- header table. newContextForDecoding :: Size -> IO Context -- | Compression algorithms for HPACK encoding. data CompressionAlgo -- | No compression Naive :: CompressionAlgo -- | Using the static table only Static :: CompressionAlgo -- | Using indices only Linear :: CompressionAlgo -- | Strategy for HPACK encoding. data EncodeStrategy EncodeStrategy :: CompressionAlgo -> Bool -> EncodeStrategy -- | Which compression algorithm is used. compressionAlgo :: EncodeStrategy -> CompressionAlgo -- | Whether or not to use Huffman encoding for strings. useHuffman :: EncodeStrategy -> Bool -- | Default EncodeStrategy. compressionAlgo is Linear -- and useHuffman is True. defaultEncodeStrategy :: EncodeStrategy -- | Errors for decoder. data DecodeError -- | Index is out of range IndexOverrun :: Index -> DecodeError -- | Eos appears in the middle of huffman string EosInTheMiddle :: DecodeError -- | Non-eos appears in the end of huffman string IllegalEos :: DecodeError -- | Eos of huffman string is more than 7 bits TooLongEos :: DecodeError -- | Encoded string has no length EmptyEncodedString :: DecodeError -- | Header block is empty EmptyBlock :: DecodeError -- | Header list. type HeaderList = [Header] -- | Header. type Header = (HeaderName, HeaderValue) -- | Header name. type HeaderName = ByteString -- | Header value. type HeaderValue = ByteString -- | Byte stream in HTTP request/response. type ByteStream = ByteString -- | Size in bytes. type Size = Int -- | Index for table. type Index = Int