1Name:                   http2
2Version:                3.0.2
3Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
4Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
5License:                BSD3
6License-File:           LICENSE
7Synopsis:               HTTP/2 library
8Description:            HTTP/2 library including frames, priority queues, HPACK, client and server.
9Homepage:               https://github.com/kazu-yamamoto/http2
10Category:               Network
11Cabal-Version:          >= 1.10
12Build-Type:             Simple
13Extra-Source-Files:     ChangeLog.md
14                        test/inputFile
15                        test-hpack/hpack-test-case/go-hpack/*.json
16                        test-hpack/hpack-test-case/haskell-http2-linear/*.json
17                        test-hpack/hpack-test-case/haskell-http2-linear-huffman/*.json
18                        test-hpack/hpack-test-case/haskell-http2-naive/*.json
19                        test-hpack/hpack-test-case/haskell-http2-naive-huffman/*.json
20                        test-hpack/hpack-test-case/haskell-http2-static/*.json
21                        test-hpack/hpack-test-case/haskell-http2-static-huffman/*.json
22                        test-hpack/hpack-test-case/nghttp2/*.json
23                        test-hpack/hpack-test-case/nghttp2-16384-4096/*.json
24                        test-hpack/hpack-test-case/nghttp2-change-table-size/*.json
25                        test-hpack/hpack-test-case/node-http2-hpack/*.json
26                        test-frame/http2-frame-test-case/continuation/*.json
27                        test-frame/http2-frame-test-case/data/*.json
28                        test-frame/http2-frame-test-case/error/*.json
29                        test-frame/http2-frame-test-case/goaway/*.json
30                        test-frame/http2-frame-test-case/headers/*.json
31                        test-frame/http2-frame-test-case/ping/*.json
32                        test-frame/http2-frame-test-case/priority/*.json
33                        test-frame/http2-frame-test-case/push_promise/*.json
34                        test-frame/http2-frame-test-case/rst_stream/*.json
35                        test-frame/http2-frame-test-case/settings/*.json
36                        test-frame/http2-frame-test-case/window_update/*.json
37                        bench-hpack/headers.hs
38
39----------------------------------------------------------------
40
41Source-Repository head
42  Type:                 git
43  Location:             git://github.com/kazu-yamamoto/http2
44
45Flag devel
46  Description:          Development commands
47  Default:              False
48
49Flag h2spec
50  Description:          Development commands
51  Default:              False
52
53Flag doc
54  Description:          Doctest
55  Default:              False
56
57----------------------------------------------------------------
58
59Library
60  Default-Language:     Haskell2010
61  GHC-Options:          -Wall
62  Exposed-Modules:      Network.HPACK
63                        Network.HPACK.Internal
64                        Network.HPACK.Table
65                        Network.HPACK.Token
66                        Network.HTTP2
67                        Network.HTTP2.Client
68                        Network.HTTP2.Client.Internal
69                        Network.HTTP2.Frame
70                        Network.HTTP2.Internal
71                        Network.HTTP2.Priority
72                        Network.HTTP2.Priority.Internal
73                        Network.HTTP2.Server
74                        Network.HTTP2.Server.Internal
75  Other-Modules:        Imports
76                        Network.HPACK.Builder
77                        Network.HTTP2.Client.Types
78                        Network.HTTP2.Client.Run
79                        Network.HPACK.HeaderBlock
80                        Network.HPACK.HeaderBlock.Decode
81                        Network.HPACK.HeaderBlock.Encode
82                        Network.HPACK.HeaderBlock.Integer
83                        Network.HPACK.Huffman
84                        Network.HPACK.Huffman.Bit
85                        Network.HPACK.Huffman.ByteString
86                        Network.HPACK.Huffman.Decode
87                        Network.HPACK.Huffman.Encode
88                        Network.HPACK.Huffman.Params
89                        Network.HPACK.Huffman.Table
90                        Network.HPACK.Huffman.Tree
91                        Network.HPACK.Table.Dynamic
92                        Network.HPACK.Table.Entry
93                        Network.HPACK.Table.RevIndex
94                        Network.HPACK.Table.Static
95                        Network.HPACK.Types
96                        Network.HTTP2.Arch
97                        Network.HTTP2.Arch.Cache
98                        Network.HTTP2.Arch.Config
99                        Network.HTTP2.Arch.Context
100                        Network.HTTP2.Arch.EncodeFrame
101                        Network.HTTP2.Arch.File
102                        Network.HTTP2.Arch.HPACK
103                        Network.HTTP2.Arch.Manager
104                        Network.HTTP2.Arch.Queue
105                        Network.HTTP2.Arch.Rate
106                        Network.HTTP2.Arch.ReadN
107                        Network.HTTP2.Arch.Receiver
108                        Network.HTTP2.Arch.Sender
109                        Network.HTTP2.Arch.Status
110                        Network.HTTP2.Arch.Stream
111                        Network.HTTP2.Arch.Types
112                        Network.HTTP2.Frame.Decode
113                        Network.HTTP2.Frame.Encode
114                        Network.HTTP2.Frame.Types
115                        Network.HTTP2.Priority.PSQ
116                        Network.HTTP2.Priority.Queue
117                        Network.HTTP2.Server.Run
118                        Network.HTTP2.Server.Types
119                        Network.HTTP2.Server.Worker
120  Build-Depends:        base >= 4.9 && < 5
121                      , array
122                      , bytestring >= 0.10
123                      , case-insensitive
124                      , containers >= 0.5
125                      , http-types
126                      , network
127                      , network-byte-order >= 0.1.5
128                      , psqueues
129                      , stm
130                      , time-manager
131                      , unix-time
132  Default-Extensions:   Strict StrictData
133
134----------------------------------------------------------------
135
136Test-Suite doctest
137  if flag(doc)
138    Buildable:          True
139  else
140    Buildable:          False
141  Type:                 exitcode-stdio-1.0
142  Default-Language:     Haskell2010
143  HS-Source-Dirs:       test
144  Ghc-Options:          -Wall
145  Main-Is:              doctests.hs
146  Build-Depends:        base >= 4.9 && < 5
147                      , doctest >= 0.9.3
148  Default-Extensions:   Strict StrictData
149
150Test-Suite spec
151  Type:                 exitcode-stdio-1.0
152  Default-Language:     Haskell2010
153  HS-Source-Dirs:       test
154  Ghc-Options:          -Wall
155  Main-Is:              Spec.hs
156  Other-Modules:        HPACK.DecodeSpec
157                        HPACK.EncodeSpec
158                        HPACK.HeaderBlock
159                        HPACK.HuffmanSpec
160                        HPACK.IntegerSpec
161                        HTTP2.FrameSpec
162                        HTTP2.PrioritySpec
163                        HTTP2.ServerSpec
164  Build-Depends:        base >= 4.9 && < 5
165                      , async
166                      , base16-bytestring >= 1.0
167                      , bytestring
168                      , cryptonite
169                      , hspec >= 1.3
170                      , http-types
171                      , http2
172                      , network-run >= 0.1.0
173                      , typed-process
174  Default-Extensions:   Strict StrictData
175  Build-Tool-Depends:   hspec-discover:hspec-discover
176
177
178Test-Suite spec2
179  if flag(h2spec)
180    Buildable:          True
181  else
182    Buildable:          False
183  Type:                 exitcode-stdio-1.0
184  Default-Language:     Haskell2010
185  HS-Source-Dirs:       test2
186  Ghc-Options:          -Wall
187  Main-Is:              Spec.hs
188  Other-Modules:        ServerSpec
189  Build-Depends:        base >= 4.9 && < 5
190                      , bytestring
191                      , hspec >= 1.3
192                      , http-types
193                      , http2
194                      , network-run >= 0.1.0
195                      , typed-process
196  Default-Extensions:   Strict StrictData
197  Build-Tool-Depends:   hspec-discover:hspec-discover
198
199Test-Suite hpack
200  Type:                 exitcode-stdio-1.0
201  Default-Language:     Haskell2010
202  HS-Source-Dirs:       test-hpack
203  Ghc-Options:          -Wall
204  Main-Is:              Spec.hs
205  Other-Modules:        HPACKDecode
206                        HPACKSpec
207                        JSON
208  Build-Depends:        base >= 4.9 && < 5
209                      , aeson
210                      , base16-bytestring >= 1.0
211                      , bytestring
212                      , directory
213                      , filepath
214                      , hspec >= 1.3
215                      , http2
216                      , text
217                      , unordered-containers
218                      , vector
219  Default-Extensions:   Strict StrictData
220  Build-Tool-Depends:   hspec-discover:hspec-discover
221
222Test-Suite frame
223  Type:                 exitcode-stdio-1.0
224  Default-Language:     Haskell2010
225  HS-Source-Dirs:       test-frame
226  GHC-Options:          -Wall
227  Main-Is:              Spec.hs
228  Other-Modules:        Case
229                        FrameSpec
230                        JSON
231  Build-Depends:        base >= 4.9 && < 5
232                      , Glob >= 0.9
233                      , aeson
234                      , aeson-pretty
235                      , base16-bytestring >= 1.0
236                      , bytestring
237                      , directory
238                      , filepath
239                      , hspec >= 1.3
240                      , http2
241                      , network-byte-order
242                      , text
243                      , unordered-containers
244  Default-Extensions:   Strict StrictData
245  Build-Tool-Depends:   hspec-discover:hspec-discover
246
247----------------------------------------------------------------
248
249Executable client
250  Default-Language:     Haskell2010
251  HS-Source-Dirs:       util
252  GHC-Options:          -Wall -threaded
253  if flag(devel)
254    Buildable:          True
255  else
256    Buildable:          False
257  Main-Is:              client.hs
258  Build-Depends:        base >= 4.9 && < 5
259                      , bytestring
260                      , http-types
261                      , http2
262                      , network-run
263  Default-Extensions:   Strict StrictData
264
265Executable server
266  Default-Language:     Haskell2010
267  HS-Source-Dirs:       util
268  GHC-Options:          -Wall -threaded
269  if flag(devel)
270    Buildable:          True
271  else
272    Buildable:          False
273  Main-Is:              server.hs
274  Build-Depends:        base >= 4.9 && < 5
275                      , bytestring
276                      , cryptonite
277                      , http2
278                      , http-types
279                      , network-run
280  Default-Extensions:   Strict StrictData
281
282----------------------------------------------------------------
283
284Executable hpack-encode
285  Default-Language:     Haskell2010
286  HS-Source-Dirs:       test-hpack
287  GHC-Options:          -Wall
288  if flag(devel)
289    Buildable:          True
290  else
291    Buildable:          False
292  Main-Is:              hpack-encode.hs
293  Other-Modules:        HPACKEncode
294                        JSON
295  Build-Depends:        base >= 4.9 && < 5
296                      , aeson
297                      , aeson-pretty
298                      , array
299                      , base16-bytestring >= 1.0
300                      , bytestring
301                      , case-insensitive
302                      , containers
303                      , http2
304                      , network-byte-order
305                      , text
306                      , unordered-containers
307                      , vector
308                      , word8
309  Default-Extensions:   Strict StrictData
310
311Executable hpack-debug
312  Default-Language:     Haskell2010
313  HS-Source-Dirs:       test-hpack
314  GHC-Options:          -Wall
315  if flag(devel)
316    Buildable:          True
317  else
318    Buildable:          False
319  Main-Is:              hpack-debug.hs
320  Other-Modules:        HPACKDecode
321                        JSON
322  Build-Depends:        base >= 4.9 && < 5
323                      , aeson
324                      , array
325                      , base16-bytestring >= 1.0
326                      , bytestring
327                      , case-insensitive
328                      , containers
329                      , http2
330                      , network-byte-order
331                      , text
332                      , unordered-containers
333                      , vector
334                      , word8
335  Default-Extensions:   Strict StrictData
336
337Executable hpack-stat
338  Default-Language:     Haskell2010
339  HS-Source-Dirs:       test-hpack
340  GHC-Options:          -Wall
341  if flag(devel)
342    Buildable:          True
343  else
344    Buildable:          False
345  Main-Is:              hpack-stat.hs
346  Other-Modules:        JSON
347  Build-Depends:        base >= 4.9 && < 5
348                      , aeson
349                      , aeson-pretty
350                      , array
351                      , bytestring
352                      , case-insensitive
353                      , containers
354                      , directory
355                      , filepath
356                      , http2
357                      , network-byte-order
358                      , text
359                      , unordered-containers
360                      , vector
361                      , word8
362  Default-Extensions:   Strict StrictData
363
364Executable frame-encode
365  Default-Language:     Haskell2010
366  HS-Source-Dirs:       test-frame
367  GHC-Options:          -Wall
368  if flag(devel)
369    Buildable:          True
370  else
371    Buildable:          False
372  Main-Is:              frame-encode.hs
373  Other-Modules:        Case
374                        JSON
375  Build-Depends:        base >= 4.9 && < 5
376                      , aeson
377                      , aeson-pretty
378                      , base16-bytestring >= 1.0
379                      , bytestring
380                      , http2
381                      , text
382                      , unordered-containers
383  Default-Extensions:   Strict StrictData
384
385----------------------------------------------------------------
386
387Benchmark priority
388  Type:                 exitcode-stdio-1.0
389  Default-Language:     Haskell2010
390  Hs-Source-Dirs:       bench-priority, .
391  Ghc-Options:          -Wall
392  Main-Is:              Main.hs
393  Other-Modules:        BinaryHeap
394                        BinaryHeapSTM
395                        DoublyLinkedQueueIO
396                        Heap
397                        RandomSkewHeap
398                        RingOfQueues
399                        RingOfQueuesSTM
400                        Network.HTTP2.Priority.PSQ
401  Build-Depends:        base >= 4.9 && < 5
402                      , array
403                      , case-insensitive
404                      , containers
405                      , gauge
406                      , heaps
407                      , mwc-random
408                      , network-byte-order
409                      , psqueues
410                      , stm
411  Default-Extensions:   Strict StrictData
412
413Benchmark header-compression
414  Type:                 exitcode-stdio-1.0
415  Default-Language:     Haskell2010
416  Hs-Source-Dirs:       bench-hpack
417  Ghc-Options:          -Wall
418  Main-Is:              Main.hs
419  Build-Depends:        base
420                      , array
421                      , bytestring
422                      , case-insensitive
423                      , containers
424                      , gauge
425                      , network-byte-order
426                      , stm
427                      , http2
428  Default-Extensions:   Strict StrictData
429