codedge-llc/kadabra

Supported features

Opened this issue · 3 comments

Hi, I am looking for an HTTP2 client to build a test suite for a HTTP2 I am working on. kadabra has the nicest API and codebase for what exists. I'm wondering if you have any plans include the following features.

  • Streaming request data
  • streaming response data
  • splitting headers sent over a continuation frame
  • receiving headers split over a continuation frame
  • exposing to the client when a push promise was received

Apologies if some of these features are already present. I must have missed the,

hpopp commented

Receiving split headers works great, but currently none of the other features are supported. Up to now Kadabra has been used almost exclusively for Pigeon, but it is worth finally fleshing it out into a full client. Many of these features should be a lot easier to implement with PR #8. I'll take a look.

Edit:
Misread your post. You're referring to 0x9 continuation frames specifically. Those aren't supported but totally could be.

Alright well I will keep listening. I notice that your test framework calls out to http2.golang.org which I assume limits test cases. It the scope of kadabra increases you might try looking at Ace to run locally to expand the test cases

hpopp commented

Latest PR merge adds a couple requested features. Streams and frames have been massively overhauled using the new :gen_statem. Now requires Elixir 1.4 and OTP 19 or later.

Push promises come in as {:push_promise, %Stream.Response{}} with the appropriate headers.

The remaining features shouldn't be terribly hard to implement. The only outstanding issue is handling large data/infinite streams. At the moment it doesn't place very nice when you exceed the process's max_heap_size.