httpsensible 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +4 -0
  3. data/.ruby-version +1 -0
  4. data/.vscode/settings.json +8 -0
  5. data/CHANGELOG.md +5 -0
  6. data/Gemfile +18 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +45 -0
  9. data/Rakefile +20 -0
  10. data/lib/httpsensible/client/response.rb +54 -0
  11. data/lib/httpsensible/client.rb +39 -0
  12. data/lib/httpsensible/jwt.rb +26 -0
  13. data/lib/httpsensible/version.rb +6 -0
  14. data/lib/httpsensible.rb +10 -0
  15. data/sorbet/config +4 -0
  16. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  17. data/sorbet/rbi/dsl/active_support/callbacks.rbi +22 -0
  18. data/sorbet/rbi/gems/activesupport@7.0.6.rbi +14 -0
  19. data/sorbet/rbi/gems/addressable@2.8.4.rbi +1954 -0
  20. data/sorbet/rbi/gems/amazing_print@1.5.0.rbi +923 -0
  21. data/sorbet/rbi/gems/ast@2.4.2.rbi +584 -0
  22. data/sorbet/rbi/gems/concurrent-ruby@1.2.2.rbi +8 -0
  23. data/sorbet/rbi/gems/crack@0.4.5.rbi +144 -0
  24. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +1083 -0
  25. data/sorbet/rbi/gems/erubi@1.12.0.rbi +145 -0
  26. data/sorbet/rbi/gems/hashdiff@1.0.1.rbi +350 -0
  27. data/sorbet/rbi/gems/http-2-next@0.5.1.rbi +1441 -0
  28. data/sorbet/rbi/gems/httpx@0.24.1.rbi +3255 -0
  29. data/sorbet/rbi/gems/i18n@1.14.1.rbi +8 -0
  30. data/sorbet/rbi/gems/io-console@0.6.0.rbi +8 -0
  31. data/sorbet/rbi/gems/irb@1.7.1.rbi +342 -0
  32. data/sorbet/rbi/gems/json@2.6.3.rbi +1533 -0
  33. data/sorbet/rbi/gems/jwt@2.7.1.rbi +1404 -0
  34. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14237 -0
  35. data/sorbet/rbi/gems/minitest-focus@1.3.1.rbi +91 -0
  36. data/sorbet/rbi/gems/minitest@5.18.1.rbi +1503 -0
  37. data/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
  38. data/sorbet/rbi/gems/parallel@1.23.0.rbi +273 -0
  39. data/sorbet/rbi/gems/parser@3.2.2.3.rbi +7253 -0
  40. data/sorbet/rbi/gems/prettier_print@1.2.1.rbi +951 -0
  41. data/sorbet/rbi/gems/public_suffix@5.0.1.rbi +935 -0
  42. data/sorbet/rbi/gems/racc@1.7.1.rbi +161 -0
  43. data/sorbet/rbi/gems/rack@3.0.8.rbi +5183 -0
  44. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +402 -0
  45. data/sorbet/rbi/gems/rake@13.0.6.rbi +3024 -0
  46. data/sorbet/rbi/gems/rbi@0.0.16.rbi +2999 -0
  47. data/sorbet/rbi/gems/regexp_parser@2.8.1.rbi +3749 -0
  48. data/sorbet/rbi/gems/reline@0.3.6.rbi +8 -0
  49. data/sorbet/rbi/gems/rexml@3.2.5.rbi +4717 -0
  50. data/sorbet/rbi/gems/rubocop-ast@1.29.0.rbi +6985 -0
  51. data/sorbet/rbi/gems/rubocop-minitest@0.31.0.rbi +8 -0
  52. data/sorbet/rbi/gems/rubocop-performance@1.18.0.rbi +8 -0
  53. data/sorbet/rbi/gems/rubocop-rails@2.20.2.rbi +8 -0
  54. data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +8 -0
  55. data/sorbet/rbi/gems/rubocop-shopify@2.14.0.rbi +8 -0
  56. data/sorbet/rbi/gems/rubocop-sorbet@0.7.0.rbi +8 -0
  57. data/sorbet/rbi/gems/rubocop-standard@7.1.0.rbi +8 -0
  58. data/sorbet/rbi/gems/rubocop@1.54.1.rbi +56172 -0
  59. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1317 -0
  60. data/sorbet/rbi/gems/spoom@1.2.2.rbi +2994 -0
  61. data/sorbet/rbi/gems/syntax_tree@6.1.1.rbi +22855 -0
  62. data/sorbet/rbi/gems/tapioca@0.11.7.rbi +3347 -0
  63. data/sorbet/rbi/gems/thor@1.2.2.rbi +3965 -0
  64. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +8 -0
  65. data/sorbet/rbi/gems/unicode-display_width@2.4.2.rbi +65 -0
  66. data/sorbet/rbi/gems/unparser@0.6.8.rbi +4525 -0
  67. data/sorbet/rbi/gems/webmock@3.18.1.rbi +1756 -0
  68. data/sorbet/rbi/gems/yard-sorbet@0.8.1.rbi +428 -0
  69. data/sorbet/rbi/gems/yard@0.9.34.rbi +18219 -0
  70. data/sorbet/tapioca/config.yml +13 -0
  71. data/sorbet/tapioca/require.rb +4 -0
  72. metadata +190 -0
@@ -0,0 +1,1441 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `http-2-next` gem.
5
+ # Please instead update this file by running `bin/tapioca gem http-2-next`.
6
+
7
+ # The following task generates this file.
8
+ # rake generate_huffman_table
9
+ #
10
+ # source://http-2-next//lib/http/2/next/version.rb#3
11
+ module HTTP2Next; end
12
+
13
+ # Default connection "fast-fail" preamble string as defined by the spec.
14
+ #
15
+ # source://http-2-next//lib/http/2/next/connection.rb#36
16
+ HTTP2Next::CONNECTION_PREFACE_MAGIC = T.let(T.unsafe(nil), String)
17
+
18
+ # HTTP 2.0 client connection class that implements appropriate header
19
+ # compression / decompression algorithms and stream management logic.
20
+ #
21
+ # Your code is responsible for driving the client object, which in turn
22
+ # performs all of the necessary HTTP 2.0 encoding / decoding, state
23
+ # management, and the rest. A simple example:
24
+ #
25
+ # @example
26
+ # socket = YourTransport.new
27
+ #
28
+ # conn = HTTP2Next::Client.new
29
+ # conn.on(:frame) {|bytes| socket << bytes }
30
+ #
31
+ # while bytes = socket.read
32
+ # conn << bytes
33
+ # end
34
+ #
35
+ # source://http-2-next//lib/http/2/next/client.rb#21
36
+ class HTTP2Next::Client < ::HTTP2Next::Connection
37
+ # Initialize new HTTP 2.0 client object.
38
+ #
39
+ # @return [Client] a new instance of Client
40
+ #
41
+ # source://http-2-next//lib/http/2/next/client.rb#23
42
+ def initialize(settings = T.unsafe(nil)); end
43
+
44
+ # source://http-2-next//lib/http/2/next/client.rb#43
45
+ def receive(frame); end
46
+
47
+ # Send an outgoing frame. Connection and stream flow control is managed
48
+ # by Connection class.
49
+ #
50
+ # @param frame [Hash]
51
+ # @see Connection
52
+ #
53
+ # source://http-2-next//lib/http/2/next/client.rb#38
54
+ def send(frame); end
55
+
56
+ # Emit the connection preface if not yet
57
+ #
58
+ # source://http-2-next//lib/http/2/next/client.rb#60
59
+ def send_connection_preface; end
60
+
61
+ # sends the preface and initializes the first stream in half-closed state
62
+ #
63
+ # @raise [ProtocolError]
64
+ #
65
+ # source://http-2-next//lib/http/2/next/client.rb#49
66
+ def upgrade; end
67
+
68
+ private
69
+
70
+ # source://http-2-next//lib/http/2/next/client.rb#77
71
+ def verify_pseudo_headers(frame); end
72
+
73
+ class << self
74
+ # source://http-2-next//lib/http/2/next/client.rb#70
75
+ def settings_header(settings); end
76
+ end
77
+ end
78
+
79
+ # Connection encapsulates all of the connection, stream, flow-control,
80
+ # error management, and other processing logic required for a well-behaved
81
+ # HTTP 2.0 endpoint.
82
+ #
83
+ # Note that this class should not be used directly. Instead, you want to
84
+ # use either Client or Server class to drive the HTTP 2.0 exchange.
85
+ #
86
+ #
87
+ # source://http-2-next//lib/http/2/next/connection.rb#49
88
+ class HTTP2Next::Connection
89
+ include ::HTTP2Next::Error
90
+ include ::HTTP2Next::FlowBuffer
91
+ include ::HTTP2Next::Emitter
92
+
93
+ # Initializes new connection object.
94
+ #
95
+ # @return [Connection] a new instance of Connection
96
+ #
97
+ # source://http-2-next//lib/http/2/next/connection.rb#81
98
+ def initialize(settings = T.unsafe(nil)); end
99
+
100
+ # source://http-2-next//lib/http/2/next/connection.rb#401
101
+ def <<(data); end
102
+
103
+ # Number of active streams between client and server (reserved streams
104
+ # are not counted towards the stream limit).
105
+ #
106
+ # source://http-2-next//lib/http/2/next/connection.rb#74
107
+ def active_stream_count; end
108
+
109
+ # @return [Boolean]
110
+ #
111
+ # source://http-2-next//lib/http/2/next/connection.rb#112
112
+ def closed?; end
113
+
114
+ # Sends a GOAWAY frame indicating that the peer should stop creating
115
+ # new streams for current connection.
116
+ #
117
+ # Endpoints MAY append opaque data to the payload of any GOAWAY frame.
118
+ # Additional debug data is intended for diagnostic purposes only and
119
+ # carries no semantic value. Debug data MUST NOT be persistently stored,
120
+ # since it could contain sensitive information.
121
+ #
122
+ # @param error [Symbol]
123
+ # @param payload [String]
124
+ #
125
+ # source://http-2-next//lib/http/2/next/connection.rb#155
126
+ def goaway(error = T.unsafe(nil), payload = T.unsafe(nil)); end
127
+
128
+ # Current settings value for local and peer
129
+ #
130
+ # source://http-2-next//lib/http/2/next/connection.rb#66
131
+ def local_settings; end
132
+
133
+ # Size of current connection flow control window (by default, set to
134
+ # infinity, but is automatically updated on receipt of peer settings).
135
+ #
136
+ # source://http-2-next//lib/http/2/next/connection.rb#61
137
+ def local_window; end
138
+
139
+ # Max number of streams that can be in-transit in this connection.
140
+ #
141
+ # source://http-2-next//lib/http/2/next/connection.rb#77
142
+ def max_streams=(_arg0); end
143
+
144
+ # Allocates new stream for current connection.
145
+ #
146
+ # @param priority [Integer]
147
+ # @param window [Integer]
148
+ # @param parent [Stream]
149
+ # @raise [ConnectionClosed]
150
+ #
151
+ # source://http-2-next//lib/http/2/next/connection.rb#121
152
+ def new_stream(**args); end
153
+
154
+ # Pending settings value
155
+ # Sent but not ack'ed settings
156
+ #
157
+ # source://http-2-next//lib/http/2/next/connection.rb#70
158
+ def pending_settings; end
159
+
160
+ # Sends PING frame to the peer.
161
+ #
162
+ # @param payload [String] optional payload must be 8 bytes long
163
+ # @param blk [Proc] callback to execute when PONG is received
164
+ #
165
+ # source://http-2-next//lib/http/2/next/connection.rb#140
166
+ def ping(payload, &blk); end
167
+
168
+ # Decodes incoming bytes into HTTP 2.0 frames and routes them to
169
+ # appropriate receivers: connection frames are handled directly, and
170
+ # stream frames are passed to appropriate stream objects.
171
+ #
172
+ # @param data [String] Binary encoded string
173
+ #
174
+ # source://http-2-next//lib/http/2/next/connection.rb#193
175
+ def receive(data); end
176
+
177
+ # Returns the value of attribute remote_settings.
178
+ #
179
+ # source://http-2-next//lib/http/2/next/connection.rb#62
180
+ def remote_settings; end
181
+
182
+ # Returns the value of attribute remote_window.
183
+ #
184
+ # source://http-2-next//lib/http/2/next/connection.rb#62
185
+ def remote_window; end
186
+
187
+ # Sends a connection SETTINGS frame to the peer.
188
+ # The values are reflected when the corresponding ACK is received.
189
+ #
190
+ # @param settings [Array or Hash]
191
+ #
192
+ # source://http-2-next//lib/http/2/next/connection.rb#180
193
+ def settings(payload); end
194
+
195
+ # Connection state (:new, :closed).
196
+ #
197
+ # source://http-2-next//lib/http/2/next/connection.rb#57
198
+ def state; end
199
+
200
+ # Size of current connection flow control window (by default, set to
201
+ # infinity, but is automatically updated on receipt of peer settings).
202
+ #
203
+ # source://http-2-next//lib/http/2/next/connection.rb#61
204
+ def window; end
205
+
206
+ # Sends a WINDOW_UPDATE frame to the peer.
207
+ #
208
+ # @param increment [Integer]
209
+ #
210
+ # source://http-2-next//lib/http/2/next/connection.rb#171
211
+ def window_update(increment); end
212
+
213
+ private
214
+
215
+ # source://http-2-next//lib/http/2/next/connection.rb#764
216
+ def _verify_pseudo_headers(frame, mandatory_headers); end
217
+
218
+ # Activates new incoming or outgoing stream and registers appropriate
219
+ # connection managemet callbacks.
220
+ #
221
+ # @param id [Integer]
222
+ # @param priority [Integer]
223
+ # @param window [Integer]
224
+ # @param parent [Stream]
225
+ # @raise [StreamLimitExceeded]
226
+ #
227
+ # source://http-2-next//lib/http/2/next/connection.rb#727
228
+ def activate_stream(id:, **args); end
229
+
230
+ # Emit GOAWAY error indicating to peer that the connection is being
231
+ # aborted, and once sent, raise a local exception.
232
+ #
233
+ # @option error
234
+ # @option error
235
+ # @option error
236
+ # @option error
237
+ # @option error
238
+ # @option error
239
+ # @param error [Symbol]
240
+ # @param msg [String]
241
+ # @raise []
242
+ #
243
+ # source://http-2-next//lib/http/2/next/connection.rb#790
244
+ def connection_error(error = T.unsafe(nil), msg: T.unsafe(nil), e: T.unsafe(nil)); end
245
+
246
+ # Check if frame is a connection frame: SETTINGS, PING, GOAWAY, and any
247
+ # frame addressed to stream ID = 0.
248
+ #
249
+ # @param frame [Hash]
250
+ # @return [Boolean]
251
+ #
252
+ # source://http-2-next//lib/http/2/next/connection.rb#450
253
+ def connection_frame?(frame); end
254
+
255
+ # Process received connection frame (stream ID = 0).
256
+ # - Handle SETTINGS updates
257
+ # - Connection flow control (WINDOW_UPDATE)
258
+ # - Emit PONG auto-reply to PING frames
259
+ # - Mark connection as closed on GOAWAY
260
+ #
261
+ # @param frame [Hash]
262
+ #
263
+ # source://http-2-next//lib/http/2/next/connection.rb#464
264
+ def connection_management(frame); end
265
+
266
+ # Update connection settings based on parameters set by the peer.
267
+ #
268
+ # @param frame [Hash]
269
+ #
270
+ # source://http-2-next//lib/http/2/next/connection.rb#579
271
+ def connection_settings(frame); end
272
+
273
+ # Decode headers payload and update connection decompressor state.
274
+ #
275
+ # The receiver endpoint reassembles the header block by concatenating
276
+ # the individual fragments, then decompresses the block to reconstruct
277
+ # the header set - aka, header payloads are buffered until END_HEADERS,
278
+ # or an END_PROMISE flag is seen.
279
+ #
280
+ # @param frame [Hash]
281
+ #
282
+ # source://http-2-next//lib/http/2/next/connection.rb#676
283
+ def decode_headers(frame); end
284
+
285
+ # Applies HTTP 2.0 binary encoding to the frame.
286
+ #
287
+ # @param frame [Hash]
288
+ # @return [Array of Buffer] encoded frame
289
+ #
290
+ # source://http-2-next//lib/http/2/next/connection.rb#435
291
+ def encode(frame); end
292
+
293
+ # Encode headers payload and update connection compressor state.
294
+ #
295
+ # @param frame [Hash]
296
+ # @return [Array of Frame]
297
+ #
298
+ # source://http-2-next//lib/http/2/next/connection.rb#690
299
+ def encode_headers(frame); end
300
+
301
+ # Emit GOAWAY error indicating to peer that the connection is being
302
+ # aborted, and once sent, raise a local exception.
303
+ #
304
+ # @option error
305
+ # @option error
306
+ # @option error
307
+ # @option error
308
+ # @option error
309
+ # @option error
310
+ # @param error [Symbol]
311
+ # @param msg [String]
312
+ # @raise []
313
+ #
314
+ # source://http-2-next//lib/http/2/next/connection.rb#790
315
+ def error(error = T.unsafe(nil), msg: T.unsafe(nil), e: T.unsafe(nil)); end
316
+
317
+ # source://http-2-next//lib/http/2/next/connection.rb#801
318
+ def manage_state(_); end
319
+
320
+ # source://http-2-next//lib/http/2/next/connection.rb#516
321
+ def ping_management(frame); end
322
+
323
+ # Send an outgoing frame. DATA frames are subject to connection flow
324
+ # control and may be split and / or buffered based on current window size.
325
+ # All other frames are sent immediately.
326
+ #
327
+ # @note all frames are currently delivered in FIFO order.
328
+ # @param frame [Hash]
329
+ #
330
+ # source://http-2-next//lib/http/2/next/connection.rb#413
331
+ def send(frame); end
332
+
333
+ # Validate settings parameters. See sepc Section 6.5.2.
334
+ #
335
+ # @param role [Symbol] The sender's role: :client or :server
336
+ # @return nil if no error. Exception object in case of any error.
337
+ #
338
+ # source://http-2-next//lib/http/2/next/connection.rb#529
339
+ def validate_settings(role, settings); end
340
+
341
+ # source://http-2-next//lib/http/2/next/connection.rb#757
342
+ def verify_stream_order(id); end
343
+ end
344
+
345
+ # source://http-2-next//lib/http/2/next/connection.rb#23
346
+ HTTP2Next::DEFAULT_CONNECTION_SETTINGS = T.let(T.unsafe(nil), Hash)
347
+
348
+ # Default connection and stream flow control window (64KB).
349
+ #
350
+ # source://http-2-next//lib/http/2/next/connection.rb#5
351
+ HTTP2Next::DEFAULT_FLOW_WINDOW = T.let(T.unsafe(nil), Integer)
352
+
353
+ # Default header table size
354
+ #
355
+ # source://http-2-next//lib/http/2/next/connection.rb#8
356
+ HTTP2Next::DEFAULT_HEADER_SIZE = T.let(T.unsafe(nil), Integer)
357
+
358
+ # Default stream_limit
359
+ #
360
+ # source://http-2-next//lib/http/2/next/connection.rb#11
361
+ HTTP2Next::DEFAULT_MAX_CONCURRENT_STREAMS = T.let(T.unsafe(nil), Integer)
362
+
363
+ # Default stream priority (lower values are higher priority).
364
+ #
365
+ # source://http-2-next//lib/http/2/next/connection.rb#33
366
+ HTTP2Next::DEFAULT_WEIGHT = T.let(T.unsafe(nil), Integer)
367
+
368
+ # Basic event emitter implementation with support for persistent and
369
+ # one-time event callbacks.
370
+ #
371
+ # source://http-2-next//lib/http/2/next/emitter.rb#7
372
+ module HTTP2Next::Emitter
373
+ # Emit event with provided arguments.
374
+ #
375
+ # @param event [Symbol]
376
+ # @param args [Array] arguments to be passed to the callbacks
377
+ # @param block [Proc] callback function
378
+ #
379
+ # source://http-2-next//lib/http/2/next/emitter.rb#34
380
+ def emit(event, *args, &block); end
381
+
382
+ # Subscribe to all future events for specified type.
383
+ #
384
+ # @param event [Symbol]
385
+ # @param block [Proc] callback function
386
+ # @raise [ArgumentError]
387
+ #
388
+ # source://http-2-next//lib/http/2/next/emitter.rb#12
389
+ def on(event, &block); end
390
+
391
+ # Subscribe to next event (at most once) for specified type.
392
+ #
393
+ # @param event [Symbol]
394
+ # @param block [Proc] callback function
395
+ #
396
+ # source://http-2-next//lib/http/2/next/emitter.rb#22
397
+ def once(event, &block); end
398
+
399
+ private
400
+
401
+ # source://http-2-next//lib/http/2/next/emitter.rb#42
402
+ def listeners(event); end
403
+ end
404
+
405
+ # Stream, connection, and compressor exceptions.
406
+ #
407
+ # source://http-2-next//lib/http/2/next/error.rb#5
408
+ module HTTP2Next::Error
409
+ class << self
410
+ # Returns the value of attribute types.
411
+ #
412
+ # source://http-2-next//lib/http/2/next/error.rb#9
413
+ def types; end
414
+ end
415
+ end
416
+
417
+ # Raised on any header encoding / decoding exception.
418
+ #
419
+ # @see ProtocolError
420
+ #
421
+ # source://http-2-next//lib/http/2/next/error.rb#38
422
+ class HTTP2Next::Error::CompressionError < ::HTTP2Next::Error::ProtocolError; end
423
+
424
+ # Raised if connection has been closed (or draining) and new stream
425
+ # cannot be opened.
426
+ #
427
+ # source://http-2-next//lib/http/2/next/error.rb#58
428
+ class HTTP2Next::Error::ConnectionClosed < ::HTTP2Next::Error::Error; end
429
+
430
+ # source://http-2-next//lib/http/2/next/error.rb#12
431
+ class HTTP2Next::Error::Error < ::StandardError
432
+ class << self
433
+ # @private
434
+ #
435
+ # source://http-2-next//lib/http/2/next/error.rb#13
436
+ def inherited(klass); end
437
+ end
438
+ end
439
+
440
+ # Raised on invalid flow control frame or command.
441
+ #
442
+ # @see ProtocolError
443
+ #
444
+ # source://http-2-next//lib/http/2/next/error.rb#43
445
+ class HTTP2Next::Error::FlowControlError < ::HTTP2Next::Error::ProtocolError; end
446
+
447
+ # source://http-2-next//lib/http/2/next/error.rb#63
448
+ class HTTP2Next::Error::FrameSizeError < ::HTTP2Next::Error::Error; end
449
+
450
+ # Raised if connection header is missing or invalid indicating that
451
+ # this is an invalid HTTP 2.0 request - no frames are emitted and the
452
+ # connection must be aborted.
453
+ #
454
+ # source://http-2-next//lib/http/2/next/error.rb#28
455
+ class HTTP2Next::Error::HandshakeError < ::HTTP2Next::Error::Error; end
456
+
457
+ # Raised on invalid stream processing: invalid frame type received or
458
+ # sent, or invalid command issued.
459
+ #
460
+ # source://http-2-next//lib/http/2/next/error.rb#47
461
+ class HTTP2Next::Error::InternalError < ::HTTP2Next::Error::ProtocolError; end
462
+
463
+ # Raised by stream or connection handlers, results in GOAWAY frame
464
+ # which signals termination of the current connection. You *cannot*
465
+ # recover from this exception, or any exceptions subclassed from it.
466
+ #
467
+ # source://http-2-next//lib/http/2/next/error.rb#33
468
+ class HTTP2Next::Error::ProtocolError < ::HTTP2Next::Error::Error; end
469
+
470
+ # Raised if stream has been closed and new frames cannot be sent.
471
+ #
472
+ # source://http-2-next//lib/http/2/next/error.rb#54
473
+ class HTTP2Next::Error::StreamClosed < ::HTTP2Next::Error::Error; end
474
+
475
+ # Raised if stream limit has been reached and new stream cannot be opened.
476
+ #
477
+ # source://http-2-next//lib/http/2/next/error.rb#61
478
+ class HTTP2Next::Error::StreamLimitExceeded < ::HTTP2Next::Error::Error; end
479
+
480
+ # Implementation of stream and connection DATA flow control: frames may
481
+ # be split and / or may be buffered based on current flow control window.
482
+ #
483
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#7
484
+ module HTTP2Next::FlowBuffer
485
+ include ::HTTP2Next::Error
486
+
487
+ # Amount of buffered data. Only DATA payloads are subject to flow stream
488
+ # and connection flow control.
489
+ #
490
+ # @return [Integer]
491
+ #
492
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#16
493
+ def buffered_amount; end
494
+
495
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#20
496
+ def flush; end
497
+
498
+ private
499
+
500
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#36
501
+ def calculate_window_update(window_max_size); end
502
+
503
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#90
504
+ def process_window_update(frame:, encode: T.unsafe(nil)); end
505
+
506
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#26
507
+ def send_buffer; end
508
+
509
+ # Buffers outgoing DATA frames and applies flow control logic to split
510
+ # and emit DATA frames based on current flow control window. If the
511
+ # window is large enough, the data is sent immediately. Otherwise, the
512
+ # data is buffered until the flow control window is updated.
513
+ #
514
+ # Buffered DATA frames are emitted in FIFO order.
515
+ #
516
+ # @param frame [Hash]
517
+ # @param encode [Boolean] set to true by connection
518
+ #
519
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#71
520
+ def send_data(frame = T.unsafe(nil), encode = T.unsafe(nil)); end
521
+
522
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#30
523
+ def update_local_window(frame); end
524
+ end
525
+
526
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#10
527
+ HTTP2Next::FlowBuffer::MAX_WINDOW_SIZE = T.let(T.unsafe(nil), Integer)
528
+
529
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#103
530
+ class HTTP2Next::FrameBuffer
531
+ # @return [FrameBuffer] a new instance of FrameBuffer
532
+ #
533
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#106
534
+ def initialize; end
535
+
536
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#111
537
+ def <<(frame); end
538
+
539
+ # Returns the value of attribute bytesize.
540
+ #
541
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#104
542
+ def bytesize; end
543
+
544
+ # @return [Boolean]
545
+ #
546
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#116
547
+ def empty?; end
548
+
549
+ # source://http-2-next//lib/http/2/next/flow_buffer.rb#120
550
+ def retrieve(window_size); end
551
+ end
552
+
553
+ # Performs encoding, decoding, and validation of binary HTTP/2 frames.
554
+ #
555
+ # source://http-2-next//lib/http/2/next/framer.rb#6
556
+ class HTTP2Next::Framer
557
+ include ::HTTP2Next::Error
558
+
559
+ # Initializes new framer object.
560
+ #
561
+ # @return [Framer] a new instance of Framer
562
+ #
563
+ # source://http-2-next//lib/http/2/next/framer.rb#116
564
+ def initialize(local_max_frame_size = T.unsafe(nil), remote_max_frame_size = T.unsafe(nil)); end
565
+
566
+ # Generates common 9-byte frame header.
567
+ # - http://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-4.1
568
+ #
569
+ # @param frame [Hash]
570
+ # @raise [CompressionError]
571
+ # @return [String]
572
+ #
573
+ # source://http-2-next//lib/http/2/next/framer.rb#127
574
+ def common_header(frame); end
575
+
576
+ # Generates encoded HTTP/2 frame.
577
+ # - http://tools.ietf.org/html/draft-ietf-httpbis-http2
578
+ #
579
+ # @param frame [Hash]
580
+ #
581
+ # source://http-2-next//lib/http/2/next/framer.rb#180
582
+ def generate(frame); end
583
+
584
+ # maximum frame size
585
+ #
586
+ # source://http-2-next//lib/http/2/next/framer.rb#15
587
+ def local_max_frame_size; end
588
+
589
+ # maximum frame size
590
+ #
591
+ # source://http-2-next//lib/http/2/next/framer.rb#15
592
+ def local_max_frame_size=(_arg0); end
593
+
594
+ # Decodes complete HTTP/2 frame from provided buffer. If the buffer
595
+ # does not contain enough data, no further work is performed.
596
+ #
597
+ # @param buf [Buffer]
598
+ # @raise [ProtocolError]
599
+ #
600
+ # source://http-2-next//lib/http/2/next/framer.rb#339
601
+ def parse(buf); end
602
+
603
+ # Decodes common 9-byte header.
604
+ #
605
+ # @param buf [Buffer]
606
+ # @return [Hash] the corresponding frame
607
+ #
608
+ # source://http-2-next//lib/http/2/next/framer.rb#160
609
+ def read_common_header(buf); end
610
+
611
+ # maximum frame size
612
+ #
613
+ # source://http-2-next//lib/http/2/next/framer.rb#15
614
+ def remote_max_frame_size; end
615
+
616
+ # maximum frame size
617
+ #
618
+ # source://http-2-next//lib/http/2/next/framer.rb#15
619
+ def remote_max_frame_size=(_arg0); end
620
+
621
+ private
622
+
623
+ # source://http-2-next//lib/http/2/next/framer.rb#459
624
+ def pack_error(error); end
625
+
626
+ # source://http-2-next//lib/http/2/next/framer.rb#469
627
+ def unpack_error(error); end
628
+ end
629
+
630
+ # Default value of max frame size (16384 bytes)
631
+ #
632
+ # source://http-2-next//lib/http/2/next/framer.rb#12
633
+ HTTP2Next::Framer::DEFAULT_MAX_FRAME_SIZE = T.let(T.unsafe(nil), Integer)
634
+
635
+ # Default error types as defined by the spec
636
+ #
637
+ # source://http-2-next//lib/http/2/next/framer.rb#85
638
+ HTTP2Next::Framer::DEFINED_ERRORS = T.let(T.unsafe(nil), Hash)
639
+
640
+ # Default settings as defined by the spec
641
+ #
642
+ # source://http-2-next//lib/http/2/next/framer.rb#75
643
+ HTTP2Next::Framer::DEFINED_SETTINGS = T.let(T.unsafe(nil), Hash)
644
+
645
+ # source://http-2-next//lib/http/2/next/framer.rb#104
646
+ HTTP2Next::Framer::EBIT = T.let(T.unsafe(nil), Integer)
647
+
648
+ # Per frame flags as defined by the spec
649
+ #
650
+ # source://http-2-next//lib/http/2/next/framer.rb#42
651
+ HTTP2Next::Framer::FRAME_FLAGS = T.let(T.unsafe(nil), Hash)
652
+
653
+ # source://http-2-next//lib/http/2/next/framer.rb#109
654
+ HTTP2Next::Framer::FRAME_LENGTH_HISHIFT = T.let(T.unsafe(nil), Integer)
655
+
656
+ # source://http-2-next//lib/http/2/next/framer.rb#110
657
+ HTTP2Next::Framer::FRAME_LENGTH_LOMASK = T.let(T.unsafe(nil), Integer)
658
+
659
+ # HTTP/2 frame type mapping as defined by the spec
660
+ #
661
+ # source://http-2-next//lib/http/2/next/framer.rb#24
662
+ HTTP2Next::Framer::FRAME_TYPES = T.let(T.unsafe(nil), Hash)
663
+
664
+ # source://http-2-next//lib/http/2/next/framer.rb#39
665
+ HTTP2Next::Framer::FRAME_TYPES_WITH_PADDING = T.let(T.unsafe(nil), Array)
666
+
667
+ # source://http-2-next//lib/http/2/next/framer.rb#108
668
+ HTTP2Next::Framer::HEADERPACK = T.let(T.unsafe(nil), String)
669
+
670
+ # Maximum stream ID (2^31)
671
+ #
672
+ # source://http-2-next//lib/http/2/next/framer.rb#18
673
+ HTTP2Next::Framer::MAX_STREAM_ID = T.let(T.unsafe(nil), Integer)
674
+
675
+ # Maximum window increment value (2^31)
676
+ #
677
+ # source://http-2-next//lib/http/2/next/framer.rb#21
678
+ HTTP2Next::Framer::MAX_WINDOWINC = T.let(T.unsafe(nil), Integer)
679
+
680
+ # source://http-2-next//lib/http/2/next/framer.rb#102
681
+ HTTP2Next::Framer::RBIT = T.let(T.unsafe(nil), Integer)
682
+
683
+ # source://http-2-next//lib/http/2/next/framer.rb#103
684
+ HTTP2Next::Framer::RBYTE = T.let(T.unsafe(nil), Integer)
685
+
686
+ # source://http-2-next//lib/http/2/next/framer.rb#106
687
+ HTTP2Next::Framer::UINT16 = T.let(T.unsafe(nil), String)
688
+
689
+ # source://http-2-next//lib/http/2/next/framer.rb#105
690
+ HTTP2Next::Framer::UINT32 = T.let(T.unsafe(nil), String)
691
+
692
+ # source://http-2-next//lib/http/2/next/framer.rb#107
693
+ HTTP2Next::Framer::UINT8 = T.let(T.unsafe(nil), String)
694
+
695
+ # Implementation of header compression for HTTP 2.0 (HPACK) format adapted
696
+ # to efficiently represent HTTP headers in the context of HTTP 2.0.
697
+ #
698
+ # - http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-10
699
+ #
700
+ # source://http-2-next//lib/http/2/next/header.rb#8
701
+ module HTTP2Next::Header; end
702
+
703
+ # Responsible for encoding header key-value pairs using HPACK algorithm.
704
+ #
705
+ # source://http-2-next//lib/http/2/next/header/compressor.rb#6
706
+ class HTTP2Next::Header::Compressor
707
+ # @param options [Hash] encoding options
708
+ # @return [Compressor] a new instance of Compressor
709
+ #
710
+ # source://http-2-next//lib/http/2/next/header/compressor.rb#8
711
+ def initialize(options = T.unsafe(nil)); end
712
+
713
+ # Encodes provided list of HTTP headers.
714
+ #
715
+ # @param headers [Array] +[[name, value], ...]+
716
+ # @return [Buffer]
717
+ #
718
+ # source://http-2-next//lib/http/2/next/header/compressor.rb#124
719
+ def encode(headers); end
720
+
721
+ # Encodes header command with appropriate header representation.
722
+ #
723
+ # @param h [Hash] header command
724
+ # @param buffer [String]
725
+ # @return [Buffer]
726
+ #
727
+ # source://http-2-next//lib/http/2/next/header/compressor.rb#94
728
+ def header(h, buffer = T.unsafe(nil)); end
729
+
730
+ # Encodes provided value via integer representation.
731
+ # - http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-10#section-5.1
732
+ #
733
+ # If I < 2^N - 1, encode I on N bits
734
+ # Else
735
+ # encode 2^N - 1 on N bits
736
+ # I = I - (2^N - 1)
737
+ # While I >= 128
738
+ # Encode (I % 128 + 128) on 8 bits
739
+ # I = I / 128
740
+ # encode (I) on 8 bits
741
+ #
742
+ # @param i [Integer] value to encode
743
+ # @param n [Integer] number of available bits
744
+ # @return [String] binary string
745
+ #
746
+ # source://http-2-next//lib/http/2/next/header/compressor.rb#33
747
+ def integer(i, n); end
748
+
749
+ # Encodes provided value via string literal representation.
750
+ # - http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-10#section-5.2
751
+ #
752
+ # * The string length, defined as the number of bytes needed to store
753
+ # its UTF-8 representation, is represented as an integer with a seven
754
+ # bits prefix. If the string length is strictly less than 127, it is
755
+ # represented as one byte.
756
+ # * If the bit 7 of the first byte is 1, the string value is represented
757
+ # as a list of Huffman encoded octets
758
+ # (padded with bit 1's until next octet boundary).
759
+ # * If the bit 7 of the first byte is 0, the string value is
760
+ # represented as a list of UTF-8 encoded octets.
761
+ #
762
+ # :never Do not use Huffman encoding
763
+ # :always Always use Huffman encoding
764
+ # :shorter Use Huffman when the result is strictly shorter
765
+ #
766
+ # @param str [String]
767
+ # @return [String] binary string
768
+ #
769
+ # source://http-2-next//lib/http/2/next/header/compressor.rb#70
770
+ def string(str); end
771
+
772
+ # Set dynamic table size in EncodingContext
773
+ #
774
+ # @param size [Integer] new dynamic table size
775
+ #
776
+ # source://http-2-next//lib/http/2/next/header/compressor.rb#14
777
+ def table_size=(size); end
778
+ end
779
+
780
+ # Responsible for decoding received headers and maintaining compression
781
+ # context of the opposing peer. Decompressor must be initialized with
782
+ # appropriate starting context based on local role: client or server.
783
+ #
784
+ # @example
785
+ # server_role = Decompressor.new(:request)
786
+ # client_role = Decompressor.new(:response)
787
+ #
788
+ # source://http-2-next//lib/http/2/next/header/decompressor.rb#13
789
+ class HTTP2Next::Header::Decompressor
790
+ include ::HTTP2Next::Error
791
+
792
+ # @param options [Hash] decoding options. Only :table_size is effective.
793
+ # @return [Decompressor] a new instance of Decompressor
794
+ #
795
+ # source://http-2-next//lib/http/2/next/header/decompressor.rb#17
796
+ def initialize(options = T.unsafe(nil)); end
797
+
798
+ # Decodes and processes header commands within provided buffer.
799
+ #
800
+ # @param buf [Buffer]
801
+ # @param frame [HTTP2Next::Frame, nil]
802
+ # @return [Array] +[[name, value], ...]
803
+ #
804
+ # source://http-2-next//lib/http/2/next/header/decompressor.rb#109
805
+ def decode(buf, frame = T.unsafe(nil)); end
806
+
807
+ # Decodes header command from provided buffer.
808
+ #
809
+ # @param buf [Buffer]
810
+ # @raise [CompressionError]
811
+ # @return [Hash] command
812
+ #
813
+ # source://http-2-next//lib/http/2/next/header/decompressor.rb#70
814
+ def header(buf); end
815
+
816
+ # Decodes integer value from provided buffer.
817
+ #
818
+ # @param buf [String]
819
+ # @param n [Integer] number of available bits
820
+ # @return [Integer]
821
+ #
822
+ # source://http-2-next//lib/http/2/next/header/decompressor.rb#32
823
+ def integer(buf, n); end
824
+
825
+ # Decodes string value from provided buffer.
826
+ #
827
+ # @param buf [String]
828
+ # @raise [CompressionError] when input is malformed
829
+ # @return [String] UTF-8 encoded string
830
+ #
831
+ # source://http-2-next//lib/http/2/next/header/decompressor.rb#54
832
+ def string(buf); end
833
+
834
+ # Set dynamic table size in EncodingContext
835
+ #
836
+ # @param size [Integer] new dynamic table size
837
+ #
838
+ # source://http-2-next//lib/http/2/next/header/decompressor.rb#23
839
+ def table_size=(size); end
840
+ end
841
+
842
+ # source://http-2-next//lib/http/2/next/header/decompressor.rb#102
843
+ HTTP2Next::Header::Decompressor::FORBIDDEN_HEADERS = T.let(T.unsafe(nil), Array)
844
+
845
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#8
846
+ class HTTP2Next::Header::EncodingContext
847
+ include ::HTTP2Next::Error
848
+
849
+ # Initializes compression context with appropriate client/server
850
+ # defaults and maximum size of the dynamic table.
851
+ #
852
+ # @param options [Hash] encoding options
853
+ # :table_size Integer maximum dynamic table size in bytes
854
+ # :huffman Symbol :always, :never, :shorter
855
+ # :index Symbol :all, :static, :never
856
+ # @return [EncodingContext] a new instance of EncodingContext
857
+ #
858
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#106
859
+ def initialize(options = T.unsafe(nil)); end
860
+
861
+ # Emits command for a header.
862
+ # Prefer static table over dynamic table.
863
+ # Prefer exact match over name-only match.
864
+ #
865
+ # +@options [:index]+ controls whether to use the dynamic table,
866
+ # static table, or both.
867
+ # :never Do not use dynamic table or static table reference at all.
868
+ # :static Use static table only.
869
+ # :all Use all of them.
870
+ #
871
+ # @param header [Array] +[name, value]+
872
+ # @return [Hash] command
873
+ #
874
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#250
875
+ def addcmd(*header); end
876
+
877
+ # Returns current table size in octets
878
+ #
879
+ # @return [Integer]
880
+ #
881
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#295
882
+ def current_table_size; end
883
+
884
+ # Finds an entry in current dynamic table by index.
885
+ # Note that index is zero-based in this module.
886
+ #
887
+ # If the index is greater than the last index in the static table,
888
+ # an entry in the dynamic table is dereferenced.
889
+ #
890
+ # If the index is greater than the last header index, an error is raised.
891
+ #
892
+ # @param index [Integer] zero-based index in the dynamic table.
893
+ # @raise [CompressionError]
894
+ # @return [Array] +[key, value]+
895
+ #
896
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#141
897
+ def dereference(index); end
898
+
899
+ # Duplicates current compression context
900
+ #
901
+ # @return [EncodingContext]
902
+ #
903
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#120
904
+ def dup; end
905
+
906
+ # Plan header compression according to +@options [:index]+
907
+ # :never Do not use dynamic table or static table reference at all.
908
+ # :static Use static table only.
909
+ # :all Use all of them.
910
+ #
911
+ # @param headers [Array] +[[name, value], ...]+
912
+ # @return [Array] array of commands
913
+ #
914
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#221
915
+ def encode(headers); end
916
+
917
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#299
918
+ def listen_on_table; end
919
+
920
+ # Current encoding options
921
+ #
922
+ # :table_size Integer maximum dynamic table size in bytes
923
+ # :huffman Symbol :always, :never, :shorter
924
+ # :index Symbol :all, :static, :never
925
+ #
926
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#97
927
+ def options; end
928
+
929
+ # Header Block Processing
930
+ # - http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-10#section-4.1
931
+ #
932
+ # @param cmd [Hash] { type:, name:, value:, index: }
933
+ # @return [Array, nil] +[name, value]+ header field that is added to the decoded header list,
934
+ # or nil if +cmd[:type]+ is +:changetablesize+
935
+ #
936
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#155
937
+ def process(cmd); end
938
+
939
+ # Current table of header key-value pairs.
940
+ #
941
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#90
942
+ def table; end
943
+
944
+ # Alter dynamic table size.
945
+ # When the size is reduced, some headers might be evicted.
946
+ #
947
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#288
948
+ def table_size=(size); end
949
+
950
+ private
951
+
952
+ # Add a name-value pair to the dynamic table.
953
+ # Older entries might have been evicted so that
954
+ # the new entry fits in the dynamic table.
955
+ #
956
+ # @param cmd [Array] +[name, value]+
957
+ #
958
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#312
959
+ def add_to_table(cmd); end
960
+
961
+ # To keep the dynamic table size lower than or equal to @limit,
962
+ # remove one or more entries at the end of the dynamic table.
963
+ #
964
+ # @param cmd [Hash]
965
+ # @return [Boolean] whether +cmd+ fits in the dynamic table.
966
+ #
967
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#324
968
+ def size_check(cmd); end
969
+ end
970
+
971
+ # Static table
972
+ # - http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-10#appendix-A
973
+ #
974
+ # @private
975
+ #
976
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#18
977
+ HTTP2Next::Header::EncodingContext::STATIC_TABLE = T.let(T.unsafe(nil), Array)
978
+
979
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#82
980
+ HTTP2Next::Header::EncodingContext::STATIC_TABLE_BY_FIELD = T.let(T.unsafe(nil), Hash)
981
+
982
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#87
983
+ HTTP2Next::Header::EncodingContext::STATIC_TABLE_SIZE = T.let(T.unsafe(nil), Integer)
984
+
985
+ # source://http-2-next//lib/http/2/next/header/encoding_context.rb#13
986
+ HTTP2Next::Header::EncodingContext::UPPER = T.let(T.unsafe(nil), Regexp)
987
+
988
+ # Header representation as defined by the spec.
989
+ #
990
+ # source://http-2-next//lib/http/2/next/header.rb#10
991
+ HTTP2Next::Header::HEADREP = T.let(T.unsafe(nil), Hash)
992
+
993
+ # Huffman encoder/decoder
994
+ #
995
+ # source://http-2-next//lib/http/2/next/header/huffman.rb#12
996
+ class HTTP2Next::Header::Huffman
997
+ include ::HTTP2Next::Error
998
+
999
+ # Decodes provided Huffman coded string.
1000
+ #
1001
+ # @param buf [Buffer]
1002
+ # @raise [CompressionError] when Huffman coded string is malformed
1003
+ # @return [String] binary string
1004
+ #
1005
+ # source://http-2-next//lib/http/2/next/header/huffman.rb#37
1006
+ def decode(buf); end
1007
+
1008
+ # Encodes provided value via huffman encoding.
1009
+ # Length is not encoded in this method.
1010
+ #
1011
+ # @param str [String]
1012
+ # @return [String] binary string
1013
+ #
1014
+ # source://http-2-next//lib/http/2/next/header/huffman.rb#26
1015
+ def encode(str); end
1016
+ end
1017
+
1018
+ # source://http-2-next//lib/http/2/next/header/huffman.rb#17
1019
+ HTTP2Next::Header::Huffman::BITS_AT_ONCE = T.let(T.unsafe(nil), Integer)
1020
+
1021
+ # Huffman table as specified in
1022
+ # - http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-10#appendix-B
1023
+ #
1024
+ # source://http-2-next//lib/http/2/next/header/huffman.rb#65
1025
+ HTTP2Next::Header::Huffman::CODES = T.let(T.unsafe(nil), Array)
1026
+
1027
+ # source://http-2-next//lib/http/2/next/header/huffman.rb#325
1028
+ HTTP2Next::Header::Huffman::ENCODE_TABLE = T.let(T.unsafe(nil), Array)
1029
+
1030
+ # source://http-2-next//lib/http/2/next/header/huffman.rb#18
1031
+ HTTP2Next::Header::Huffman::EOS = T.let(T.unsafe(nil), Integer)
1032
+
1033
+ # source://http-2-next//lib/http/2/next/header/huffman_statemachine.rb#14
1034
+ HTTP2Next::Header::Huffman::MACHINE = T.let(T.unsafe(nil), Array)
1035
+
1036
+ # source://http-2-next//lib/http/2/next/header/huffman_statemachine.rb#13
1037
+ HTTP2Next::Header::Huffman::MAX_FINAL_STATE = T.let(T.unsafe(nil), Integer)
1038
+
1039
+ # source://http-2-next//lib/http/2/next/header.rb#21
1040
+ HTTP2Next::Header::LINEAR = T.let(T.unsafe(nil), Hash)
1041
+
1042
+ # source://http-2-next//lib/http/2/next/header.rb#25
1043
+ HTTP2Next::Header::LINEARH = T.let(T.unsafe(nil), Hash)
1044
+
1045
+ # Predefined options set for Compressor
1046
+ # http://mew.org/~kazu/material/2014-hpack.pdf
1047
+ #
1048
+ # source://http-2-next//lib/http/2/next/header.rb#20
1049
+ HTTP2Next::Header::NAIVE = T.let(T.unsafe(nil), Hash)
1050
+
1051
+ # source://http-2-next//lib/http/2/next/header.rb#24
1052
+ HTTP2Next::Header::NAIVEH = T.let(T.unsafe(nil), Hash)
1053
+
1054
+ # source://http-2-next//lib/http/2/next/header.rb#23
1055
+ HTTP2Next::Header::SHORTER = T.let(T.unsafe(nil), Hash)
1056
+
1057
+ # source://http-2-next//lib/http/2/next/header.rb#27
1058
+ HTTP2Next::Header::SHORTERH = T.let(T.unsafe(nil), Hash)
1059
+
1060
+ # source://http-2-next//lib/http/2/next/header.rb#22
1061
+ HTTP2Next::Header::STATIC = T.let(T.unsafe(nil), Hash)
1062
+
1063
+ # source://http-2-next//lib/http/2/next/header.rb#26
1064
+ HTTP2Next::Header::STATICH = T.let(T.unsafe(nil), Hash)
1065
+
1066
+ # source://http-2-next//lib/http/2/next/connection.rb#38
1067
+ HTTP2Next::REQUEST_MANDATORY_HEADERS = T.let(T.unsafe(nil), Array)
1068
+
1069
+ # source://http-2-next//lib/http/2/next/connection.rb#39
1070
+ HTTP2Next::RESPONSE_MANDATORY_HEADERS = T.let(T.unsafe(nil), Array)
1071
+
1072
+ # source://http-2-next//lib/http/2/next/extensions.rb#4
1073
+ module HTTP2Next::RegexpExtensions; end
1074
+
1075
+ # Default values for SETTINGS frame, as defined by the spec.
1076
+ #
1077
+ # source://http-2-next//lib/http/2/next/connection.rb#14
1078
+ HTTP2Next::SPEC_DEFAULT_CONNECTION_SETTINGS = T.let(T.unsafe(nil), Hash)
1079
+
1080
+ # HTTP 2.0 server connection class that implements appropriate header
1081
+ # compression / decompression algorithms and stream management logic.
1082
+ #
1083
+ # Your code is responsible for feeding request data to the server object,
1084
+ # which in turn performs all of the necessary HTTP 2.0 decoding / encoding,
1085
+ # state management, and the rest. A simple example:
1086
+ #
1087
+ # @example
1088
+ # socket = YourTransport.new
1089
+ #
1090
+ # conn = HTTP2Next::Server.new
1091
+ # conn.on(:stream) do |stream|
1092
+ # ...
1093
+ # end
1094
+ #
1095
+ # while bytes = socket.read
1096
+ # conn << bytes
1097
+ # end
1098
+ #
1099
+ # source://http-2-next//lib/http/2/next/server.rb#24
1100
+ class HTTP2Next::Server < ::HTTP2Next::Connection
1101
+ # Initialize new HTTP 2.0 server object.
1102
+ #
1103
+ # @return [Server] a new instance of Server
1104
+ #
1105
+ # source://http-2-next//lib/http/2/next/server.rb#28
1106
+ def initialize(settings = T.unsafe(nil)); end
1107
+
1108
+ # Returns the value of attribute origin_set.
1109
+ #
1110
+ # source://http-2-next//lib/http/2/next/server.rb#25
1111
+ def origin_set; end
1112
+
1113
+ # source://http-2-next//lib/http/2/next/server.rb#122
1114
+ def origin_set=(origins); end
1115
+
1116
+ # GET / HTTP/1.1
1117
+ # Host: server.example.com
1118
+ # Connection: Upgrade, HTTP2-Settings
1119
+ # Upgrade: h2c
1120
+ # HTTP2-Settings: <base64url encoding of HTTP/2 SETTINGS payload>
1121
+ #
1122
+ # Requests that contain a payload body MUST be sent in their entirety
1123
+ # before the client can send HTTP/2 frames. This means that a large
1124
+ # request can block the use of the connection until it is completely sent.
1125
+ #
1126
+ # If concurrency of an initial request with subsequent requests is
1127
+ # important, an OPTIONS request can be used to perform the upgrade to
1128
+ # HTTP/2, at the cost of an additional round trip.
1129
+ #
1130
+ # HTTP/1.1 101 Switching Protocols
1131
+ # Connection: Upgrade
1132
+ # Upgrade: h2c
1133
+ #
1134
+ # [ HTTP/2 connection ...
1135
+ #
1136
+ # - The first HTTP/2 frame sent by the server MUST be a server
1137
+ # connection preface (Section 3.5) consisting of a SETTINGS frame.
1138
+ # - Upon receiving the 101 response, the client MUST send a connection
1139
+ # preface (Section 3.5), which includes a SETTINGS frame.
1140
+ #
1141
+ # The HTTP/1.1 request that is sent prior to upgrade is assigned a stream
1142
+ # identifier of 1 (see Section 5.1.1) with default priority values
1143
+ # (Section 5.3.5). Stream 1 is implicitly "half-closed" from the client
1144
+ # toward the server (see Section 5.1), since the request is completed as
1145
+ # an HTTP/1.1 request. After commencing the HTTP/2 connection, stream 1
1146
+ # is used for the response.
1147
+ #
1148
+ # source://http-2-next//lib/http/2/next/server.rb#73
1149
+ def upgrade(settings, headers, body); end
1150
+
1151
+ private
1152
+
1153
+ # source://http-2-next//lib/http/2/next/server.rb#129
1154
+ def connection_settings(frame); end
1155
+
1156
+ # Handle locally initiated server-push event emitted by the stream.
1157
+ #
1158
+ # @param parent [Stream]
1159
+ # @param headers [Enumerable[String, String]]
1160
+ # @param flags [Array[Symbol]]
1161
+ # @param callback [Proc]
1162
+ # @yield [promise]
1163
+ #
1164
+ # source://http-2-next//lib/http/2/next/server.rb#146
1165
+ def promise(parent, headers, flags); end
1166
+
1167
+ # source://http-2-next//lib/http/2/next/server.rb#136
1168
+ def verify_pseudo_headers(frame); end
1169
+ end
1170
+
1171
+ # A single HTTP 2.0 connection can multiplex multiple streams in parallel:
1172
+ # multiple requests and responses can be in flight simultaneously and stream
1173
+ # data can be interleaved and prioritized.
1174
+ #
1175
+ # This class encapsulates all of the state, transition, flow-control, and
1176
+ # error management as defined by the HTTP 2.0 specification. All you have
1177
+ # to do is subscribe to appropriate events (marked with ":" prefix in
1178
+ # diagram below) and provide your application logic to handle request
1179
+ # and response processing.
1180
+ #
1181
+ # +--------+
1182
+ # PP | | PP
1183
+ # ,--------| idle |--------.
1184
+ # / | | \
1185
+ # v +--------+ v
1186
+ # +----------+ | +----------+
1187
+ # | | | H | |
1188
+ # ,---|:reserved | | |:reserved |---.
1189
+ # | | (local) | v | (remote) | |
1190
+ # | +----------+ +--------+ +----------+ |
1191
+ # | | :active | | :active | |
1192
+ # | | ,-------|:active |-------. | |
1193
+ # | | H / ES | | ES \ H | |
1194
+ # | v v +--------+ v v |
1195
+ # | +-----------+ | +-----------+ |
1196
+ # | |:half_close| | |:half_close| |
1197
+ # | | (remote) | | | (local) | |
1198
+ # | +-----------+ | +-----------+ |
1199
+ # | | v | |
1200
+ # | | ES/R +--------+ ES/R | |
1201
+ # | `----------->| |<-----------' |
1202
+ # | R | :close | R |
1203
+ # `-------------------->| |<--------------------'
1204
+ # +--------+
1205
+ #
1206
+ # source://http-2-next//lib/http/2/next/stream.rb#38
1207
+ class HTTP2Next::Stream
1208
+ include ::HTTP2Next::Error
1209
+ include ::HTTP2Next::FlowBuffer
1210
+ include ::HTTP2Next::Emitter
1211
+
1212
+ # Initializes new stream.
1213
+ #
1214
+ # Note that you should never have to call this directly. To create a new
1215
+ # client initiated stream, use Connection#new_stream. Similarly, Connection
1216
+ # will emit new stream objects, when new stream frames are received.
1217
+ #
1218
+ # @param id [Integer]
1219
+ # @param weight [Integer]
1220
+ # @param dependency [Integer]
1221
+ # @param exclusive [Boolean]
1222
+ # @param window [Integer]
1223
+ # @param parent [Stream]
1224
+ # @param state [Symbol]
1225
+ # @return [Stream] a new instance of Stream
1226
+ #
1227
+ # source://http-2-next//lib/http/2/next/stream.rb#76
1228
+ def initialize(connection:, id:, weight: T.unsafe(nil), dependency: T.unsafe(nil), exclusive: T.unsafe(nil), parent: T.unsafe(nil), state: T.unsafe(nil)); end
1229
+
1230
+ # Processes incoming HTTP 2.0 frames. The frames must be decoded upstream.
1231
+ #
1232
+ # @param frame [Hash]
1233
+ #
1234
+ # source://http-2-next//lib/http/2/next/stream.rb#106
1235
+ def <<(frame); end
1236
+
1237
+ # source://http-2-next//lib/http/2/next/stream.rb#179
1238
+ def calculate_content_length(data_length); end
1239
+
1240
+ # Sends a RST_STREAM indicating that the stream is no longer needed.
1241
+ #
1242
+ # source://http-2-next//lib/http/2/next/stream.rb#284
1243
+ def cancel; end
1244
+
1245
+ # Chunk data into max_size, yield each chunk, then return final chunk
1246
+ #
1247
+ # source://http-2-next//lib/http/2/next/stream.rb#265
1248
+ def chunk_data(payload, max_size); end
1249
+
1250
+ # Sends a RST_STREAM frame which closes current stream - this does not
1251
+ # close the underlying connection.
1252
+ #
1253
+ # @param error [:Symbol] optional reason why stream was closed
1254
+ #
1255
+ # source://http-2-next//lib/http/2/next/stream.rb#279
1256
+ def close(error = T.unsafe(nil)); end
1257
+
1258
+ # Reason why connection was closed.
1259
+ #
1260
+ # source://http-2-next//lib/http/2/next/stream.rb#61
1261
+ def closed; end
1262
+
1263
+ # @return [Boolean]
1264
+ #
1265
+ # source://http-2-next//lib/http/2/next/stream.rb#99
1266
+ def closed?; end
1267
+
1268
+ # Sends DATA frame containing response payload.
1269
+ #
1270
+ # @param payload [String]
1271
+ # @param end_stream [Boolean] indicates last response DATA frame
1272
+ #
1273
+ # source://http-2-next//lib/http/2/next/stream.rb#247
1274
+ def data(payload, end_stream: T.unsafe(nil)); end
1275
+
1276
+ # Returns the value of attribute dependency.
1277
+ #
1278
+ # source://http-2-next//lib/http/2/next/stream.rb#54
1279
+ def dependency; end
1280
+
1281
+ # Sends a HEADERS frame containing HTTP response headers.
1282
+ # All pseudo-header fields MUST appear in the header block before regular header fields.
1283
+ #
1284
+ # @param headers [Array or Hash] Array of key-value pairs or Hash
1285
+ # @param end_headers [Boolean] indicates that no more headers will be sent
1286
+ # @param end_stream [Boolean] indicates that no payload will be sent
1287
+ #
1288
+ # source://http-2-next//lib/http/2/next/stream.rb#218
1289
+ def headers(headers, end_headers: T.unsafe(nil), end_stream: T.unsafe(nil)); end
1290
+
1291
+ # Stream ID (odd for client initiated streams, even otherwise).
1292
+ #
1293
+ # source://http-2-next//lib/http/2/next/stream.rb#44
1294
+ def id; end
1295
+
1296
+ # Size of current stream flow control window.
1297
+ #
1298
+ # source://http-2-next//lib/http/2/next/stream.rb#57
1299
+ def local_window; end
1300
+
1301
+ # Request parent stream of push stream.
1302
+ #
1303
+ # source://http-2-next//lib/http/2/next/stream.rb#50
1304
+ def parent; end
1305
+
1306
+ # @raise [ArgumentError]
1307
+ #
1308
+ # source://http-2-next//lib/http/2/next/stream.rb#226
1309
+ def promise(headers, end_headers: T.unsafe(nil), &block); end
1310
+
1311
+ # Processes incoming HTTP 2.0 frames. The frames must be decoded upstream.
1312
+ #
1313
+ # @param frame [Hash]
1314
+ #
1315
+ # source://http-2-next//lib/http/2/next/stream.rb#106
1316
+ def receive(frame); end
1317
+
1318
+ # Sends a RST_STREAM indicating that the stream has been refused prior
1319
+ # to performing any application processing.
1320
+ #
1321
+ # source://http-2-next//lib/http/2/next/stream.rb#290
1322
+ def refuse; end
1323
+
1324
+ # Returns the value of attribute remote_window.
1325
+ #
1326
+ # source://http-2-next//lib/http/2/next/stream.rb#54
1327
+ def remote_window; end
1328
+
1329
+ # Sends a PRIORITY frame with new stream priority value (can only be
1330
+ # performed by the client).
1331
+ #
1332
+ # @param weight [Integer] new stream weight value
1333
+ # @param dependency [Integer] new stream dependency stream
1334
+ #
1335
+ # source://http-2-next//lib/http/2/next/stream.rb#238
1336
+ def reprioritize(weight: T.unsafe(nil), dependency: T.unsafe(nil), exclusive: T.unsafe(nil)); end
1337
+
1338
+ # Processes outgoing HTTP 2.0 frames. Data frames may be automatically
1339
+ # split and buffered based on maximum frame size and current stream flow
1340
+ # control window size.
1341
+ #
1342
+ # @param frame [Hash]
1343
+ #
1344
+ # source://http-2-next//lib/http/2/next/stream.rb#193
1345
+ def send(frame); end
1346
+
1347
+ # Stream state as defined by HTTP 2.0.
1348
+ #
1349
+ # source://http-2-next//lib/http/2/next/stream.rb#47
1350
+ def state; end
1351
+
1352
+ # source://http-2-next//lib/http/2/next/stream.rb#165
1353
+ def verify_trailers(frame); end
1354
+
1355
+ # Stream priority as set by initiator.
1356
+ #
1357
+ # source://http-2-next//lib/http/2/next/stream.rb#53
1358
+ def weight; end
1359
+
1360
+ # Size of current stream flow control window.
1361
+ #
1362
+ # source://http-2-next//lib/http/2/next/stream.rb#57
1363
+ def window; end
1364
+
1365
+ # Sends a WINDOW_UPDATE frame to the peer.
1366
+ #
1367
+ # @param increment [Integer]
1368
+ #
1369
+ # source://http-2-next//lib/http/2/next/stream.rb#297
1370
+ def window_update(increment); end
1371
+
1372
+ private
1373
+
1374
+ # source://http-2-next//lib/http/2/next/stream.rb#627
1375
+ def complete_transition(frame); end
1376
+
1377
+ # @return [Boolean]
1378
+ #
1379
+ # source://http-2-next//lib/http/2/next/stream.rb#654
1380
+ def end_stream?(frame); end
1381
+
1382
+ # @raise []
1383
+ #
1384
+ # source://http-2-next//lib/http/2/next/stream.rb#662
1385
+ def error(error = T.unsafe(nil), msg: T.unsafe(nil)); end
1386
+
1387
+ # source://http-2-next//lib/http/2/next/stream.rb#604
1388
+ def event(newstate); end
1389
+
1390
+ # source://http-2-next//lib/http/2/next/stream.rb#672
1391
+ def manage_state(frame); end
1392
+
1393
+ # source://http-2-next//lib/http/2/next/stream.rb#638
1394
+ def process_priority(frame); end
1395
+
1396
+ # @raise []
1397
+ #
1398
+ # source://http-2-next//lib/http/2/next/stream.rb#662
1399
+ def stream_error(error = T.unsafe(nil), msg: T.unsafe(nil)); end
1400
+
1401
+ # HTTP 2.0 Stream States
1402
+ # - http://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-5.1
1403
+ #
1404
+ # +--------+
1405
+ # send PP | | recv PP
1406
+ # ,--------| idle |--------.
1407
+ # / | | \
1408
+ # v +--------+ v
1409
+ # +----------+ | +----------+
1410
+ # | | | send H/ | |
1411
+ # ,-----| reserved | | recv H | reserved |-----.
1412
+ # | | (local) | | | (remote) | |
1413
+ # | +----------+ v +----------+ |
1414
+ # | | +--------+ | |
1415
+ # | | recv ES | | send ES | |
1416
+ # | send H | ,-------| open |-------. | recv H |
1417
+ # | | / | | \ | |
1418
+ # | v v +--------+ v v |
1419
+ # | +----------+ | +----------+ |
1420
+ # | | half | | | half | |
1421
+ # | | closed | | send R/ | closed | |
1422
+ # | | (remote) | | recv R | (local) | |
1423
+ # | +----------+ | +----------+ |
1424
+ # | | | | |
1425
+ # | | send ES/ | recv ES/ | |
1426
+ # | | send R/ v send R/ | |
1427
+ # | | recv R +--------+ recv R | |
1428
+ # | send R/ `----------->| |<-----------' send R/ |
1429
+ # | recv R | closed | recv R |
1430
+ # `---------------------->| |<----------------------'
1431
+ # +--------+
1432
+ #
1433
+ # source://http-2-next//lib/http/2/next/stream.rb#338
1434
+ def transition(frame, sending); end
1435
+ end
1436
+
1437
+ # source://http-2-next//lib/http/2/next/extensions.rb#14
1438
+ module HTTP2Next::StringExtensions; end
1439
+
1440
+ # source://http-2-next//lib/http/2/next/version.rb#4
1441
+ HTTP2Next::VERSION = T.let(T.unsafe(nil), String)