260 Commits

Author SHA1 Message Date
HoneyryderChuck
690fcaf3d2 default timeout is now the per operation one 2017-12-08 18:45:29 +00:00
HoneyryderChuck
b9bdd7bd0b rewrote the example scripts 2017-12-07 21:15:53 +00:00
HoneyryderChuck
2742f4f9af added chainable module, a la http gem 2017-12-07 21:15:39 +00:00
HoneyryderChuck
a74f225a3b client: allow to pass requests in many forms; pass an array of many-formed requests; allow to pass an array of uris; allow to pass one uri 2017-12-07 21:15:14 +00:00
HoneyryderChuck
38d0f98564 plugins: do not allow to pass the same plugin more than once 2017-12-07 21:13:54 +00:00
HoneyryderChuck
2bf6b21cad client: allow to pass block to constructor; it keeps using the same connection 2017-12-07 21:13:27 +00:00
HoneyryderChuck
2b266d305d selector: don't forget to deregister the writer monitor 2017-12-07 21:11:50 +00:00
HoneyryderChuck
2dede153c2 timeout: allow to pass timeout as class, allow to pass options and set per-operation timeout as the default 2017-12-07 21:11:18 +00:00
HoneyryderChuck
0458ee2016 plugin: allow to extend options as well 2017-12-07 16:45:37 +00:00
HoneyryderChuck
f5e6b38d47 loading https in the test script 2017-12-07 01:07:37 +00:00
HoneyryderChuck
15a972df32 added tests to the req/rep/head factory classes, and to the plugin module 2017-12-07 01:07:17 +00:00
HoneyryderChuck
b975f7e3c5 Merge branch 'reactor' into 'master'
Reactor

See merge request honeyryderchuck/httpx!1
2017-12-07 01:06:14 +00:00
HoneyryderChuck
9c40845d94 added the ability to load plugins in the client, allowing to extend request/response/headers transparently 2017-12-07 01:05:01 +00:00
HoneyryderChuck
3df3eba0fc pimping my examples 2017-12-06 20:32:46 +00:00
HoneyryderChuck
8d1f67d814 encoders: using forwardable, and adding force_encoding support (for http-2) 2017-12-06 20:32:20 +00:00
HoneyryderChuck
734a187ce1 added tests for request body, fixed #bytesize's 2017-12-06 20:16:05 +00:00
HoneyryderChuck
fbdd7e2dd8 added registry module, where one can register by a tag; introducing transcoder, modules which can encode and decode; using them for the body/form/json bodies 2017-12-06 19:49:26 +00:00
HoneyryderChuck
e7b943ba39 requests: added support for post body encoding, for json and form params for now 2017-12-06 19:25:33 +00:00
HoneyryderChuck
3ff56ceb09 changed the concept of an empty http1 channel 2017-12-06 18:24:43 +00:00
HoneyryderChuck
ee59c71274 allow to return early responses just with headers; added a bufferable body, which means, when body is requests, it fetches it (if not available yet); for this, the selector must be exposed to all sub-levels; the response body by default buffers first/returns later for #to_s, and buffers and yields chunks on #each 2017-12-06 17:20:03 +00:00
HoneyryderChuck
6f133bb726 http1: improved request logging, ensured that request has connection set-up 2017-12-06 14:48:13 +00:00
HoneyryderChuck
c180f5ba71 added close callback (http1: when server tells to close; http2: when there are no more streams) 2017-12-06 14:35:49 +00:00
HoneyryderChuck
7cc2f66eed added retryability, in that certain errors (for http2 now, rst_stream ones); added a max concurrent requests setting, which governs how many concurrent requests might be inflight (besides the obvious settings handled by the lower layer) 2017-12-06 14:27:58 +00:00
HoneyryderChuck
abff891a14 introducing the concept of error response; when no response was generated, and stream was closed, assume there was an error, and pass it; the #status message should return the error code; this should keep the multi-send requests from stalling 2017-12-06 11:00:55 +00:00
HoneyryderChuck
95d141b4d9 removed the tcp and ssl channels, added proper IO wrappers (which now enables the possibility of IO customization), and channel just got a bit cleaner 2017-11-29 23:05:30 +00:00
HoneyryderChuck
bd67d3d745 added nonblocking connection, which makes timeouts now much more acurate; force renovation of timeout, as per_operation's first is the connection one (after connection, pass to operation) 2017-11-29 21:26:47 +00:00
HoneyryderChuck
e5c183cb98 monitor value is the channel itself, which responds to #call; this will be the end-all/be-all API 2017-11-29 20:55:08 +00:00
HoneyryderChuck
6728cfac00 closed set/removed in the proper methods 2017-11-29 20:53:16 +00:00
HoneyryderChuck
5c429ebc3f passing the on_response callback in the channel init; this is passed to the processor after 2017-11-29 20:52:39 +00:00
HoneyryderChuck
79c886eac7 tcp: get the remote ip/port early, use them to bind to port 2017-11-29 20:50:29 +00:00
HoneyryderChuck
d411e66942 reworked timeout method: as the channels are now gonna connect on select, just make sure that the first timeout used is the connect timeout (this doesn't solve everything, though) 2017-11-29 19:35:05 +00:00
HoneyryderChuck
5bbc15528e added proper selector/monitor, replaced where necessary 2017-11-29 18:50:47 +00:00
HoneyryderChuck
bf757d194f better example 2017-11-29 18:29:11 +00:00
HoneyryderChuck
2ef5c05b63 add pending requests queue for http2, when one exceeds the number of concurrent streams 2017-11-29 18:28:58 +00:00
HoneyryderChuck
c6badc988e added rakefile with test task 2017-11-29 02:19:15 +00:00
HoneyryderChuck
8164ff0bcb added test to client 2017-11-29 02:18:17 +00:00
HoneyryderChuck
149cfb602d enabled pipelining; allowed for reconnections in HTTP/1 which require to close the connection (which should be the exception) 2017-11-29 02:17:45 +00:00
HoneyryderChuck
c0b1e12130 added support for sending and receiving multiple pipelined requests 2017-11-29 00:10:01 +00:00
HoneyryderChuck
b8ed75e4ff connect to same socket not only based on same ip and port, but also scheme (you don't want to mix http and https in same socket) 2017-11-29 00:09:33 +00:00
HoneyryderChuck
6febd49086 server push: policy now is to ignore pushed resources 2017-11-29 00:08:24 +00:00
HoneyryderChuck
a214891fa1 added timeouts backend like http, integrated it in connecting sockets, and performing selector operations; the global one still needs work though (currently connecting one by one, connection not integrated in selector) 2017-11-29 00:07:49 +00:00
HoneyryderChuck
8edca3e579 added more urls in example, close the client in the end 2017-11-28 18:14:37 +00:00
HoneyryderChuck
d4238691ac fixed the http2 join methods 2017-11-28 18:14:12 +00:00
HoneyryderChuck
c7319964c0 added the options module, similar to http 2017-11-28 18:12:02 +00:00
HoneyryderChuck
70a2d7ad82 added http/1 channel 2017-11-28 16:41:24 +00:00
HoneyryderChuck
f3255ff182 added ssl channel, with alpn negotiation support 2017-11-28 15:09:11 +00:00
HoneyryderChuck
85f08f0c7a changed the resource structure 2017-11-28 14:36:18 +00:00
HoneyryderChuck
46a1223187 addest tests for headers/request/response 2017-11-28 14:00:16 +00:00
HoneyryderChuck
0bcfc7fbe2 added first structure draft, resource names to change, but... it works\! to nghttp2 2017-11-28 01:24:24 +00:00
HoneyryderChuck
63ce9297c8 starting http/2 first, removing rspec 2017-11-28 01:23:41 +00:00