http-2-next 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0c5f4b4de69d36a492e6cfff41b62c48184e85fa75505592e23b404892f69511
4
- data.tar.gz: 9cba9804729c9617564990720cb4594ec41e32b10c2c1fb3baff545de5fb0b02
3
+ metadata.gz: a7c15b998344b09aee75566b64f5ef94abb9b388fdc3d2f06704e8263a586789
4
+ data.tar.gz: 935a6225e964eb46b6f26e57ccf3080fd231570f3710bf6e78e3f05f589a294f
5
5
  SHA512:
6
- metadata.gz: 05dbde11166258b25aa492cebc9eb3f5c1ac5f9e52bcefd0150c7c9be7584de0152af624fb8e406439fca4fb3bc96c0460a6bd6168a319562532d74176ffbb95
7
- data.tar.gz: e5d916406df282f618cd64443db492b4a0e817e35484bb31c37d1146d9d67493b5fce715cf220710ad220d9d7fe4ae6aacd2f8c973126509f1d99f71e9ee6587
6
+ metadata.gz: 5d768219d315950da7cc798981c6d081e23f2ffab97f354149ebae1398a25cf3db304bdd81429f8e3f257cb0100cc1a28374a1459cef4dc551d317d9bb1cade0
7
+ data.tar.gz: 758a733387749553121d3117d9a86ae6109fc28fcbae12cce2852c9d291a30ad133c16060a5374c6c13aadc16af02996fba41a239998d32a194d0516fa75c71f
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # HTTP-2-Next
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/http-2-next.svg)](http://rubygems.org/gems/http-2-next)
4
- [![Build status](https://gitlab.com/honeyryderchuck/http-2-next/badges/master/pipeline.svg)](https://gitlab.com/honeyryderchuck/http-2-next/commits/master)
5
- [![coverage report](https://gitlab.com/honeyryderchuck/http-2-next/badges/master/coverage.svg?job=coverage)](https://honeyryderchuck.gitlab.io/http-2-next/coverage/#_AllFiles)
4
+ [![Build status](https://gitlab.com/os85/http-2-next/badges/master/pipeline.svg)](https://gitlab.com/os85/http-2-next/commits/master)
5
+ [![coverage report](https://gitlab.com/os85/http-2-next/badges/master/coverage.svg?job=coverage)](https://os85.gitlab.io/http-2-next/coverage/#_AllFiles)
6
6
 
7
7
  **Attention!** This is a fork of the [http-2](https://github.com/igrigorik/http-2) gem.
8
8
 
@@ -265,7 +265,7 @@ conn.on(:stream) do |stream|
265
265
  # split response between multiple DATA frames
266
266
  stream.data(response_chunk, end_stream: false)
267
267
  stream.data(last_chunk)
268
-
268
+
269
269
  # now send the previously promised data
270
270
  push_stream.data(push_data)
271
271
  end
@@ -10,7 +10,7 @@ module HTTP2Next
10
10
  # @param event [Symbol]
11
11
  # @param block [Proc] callback function
12
12
  def on(event, &block)
13
- raise ArgumentError, "must provide callback" unless block_given?
13
+ raise ArgumentError, "must provide callback" unless block
14
14
 
15
15
  listeners(event.to_sym).push block
16
16
  end
@@ -3,7 +3,8 @@
3
3
  module HTTP2Next
4
4
  # Stream, connection, and compressor exceptions.
5
5
  module Error
6
- @types = {}
6
+ @types = {} # rubocop:disable ThreadSafety/MutableClassInstanceVariable
7
+
7
8
  class << self
8
9
  attr_reader :types
9
10
  end
@@ -60,5 +61,7 @@ module HTTP2Next
60
61
  class StreamLimitExceeded < Error; end
61
62
 
62
63
  class FrameSizeError < Error; end
64
+
65
+ @types.freeze
63
66
  end
64
67
  end
@@ -325,7 +325,7 @@ module HTTP2Next
325
325
  # Padding: Padding octets that contain no application semantic value.
326
326
  # Padding octets MUST be set to zero when sending and ignored when
327
327
  # receiving.
328
- bytes << "\0" * padlen
328
+ bytes << ("\0" * padlen)
329
329
  end
330
330
 
331
331
  frame[:length] = length
@@ -368,7 +368,7 @@ module HTTP2Next
368
368
  end
369
369
 
370
370
  case frame[:type]
371
- when :data
371
+ when :data, :ping, :continuation
372
372
  frame[:payload] = payload.read(frame[:length])
373
373
  when :headers
374
374
  if frame[:flags].include? :priority
@@ -414,8 +414,6 @@ module HTTP2Next
414
414
  when :push_promise
415
415
  frame[:promise_stream] = payload.read_uint32 & RBIT
416
416
  frame[:payload] = payload.read(frame[:length])
417
- when :ping
418
- frame[:payload] = payload.read(frame[:length])
419
417
  when :goaway
420
418
  frame[:last_stream] = payload.read_uint32 & RBIT
421
419
  frame[:error] = unpack_error payload.read_uint32
@@ -428,8 +426,6 @@ module HTTP2Next
428
426
  end
429
427
 
430
428
  frame[:increment] = payload.read_uint32 & RBIT
431
- when :continuation
432
- frame[:payload] = payload.read(frame[:length])
433
429
  when :altsvc
434
430
  frame[:max_age], frame[:port] = payload.read(6).unpack(UINT32 + UINT16)
435
431
 
@@ -31,7 +31,7 @@ module HTTP2Next
31
31
  # @param n [Integer] number of available bits
32
32
  # @return [String] binary string
33
33
  def integer(i, n)
34
- limit = 2**n - 1
34
+ limit = (2**n) - 1
35
35
  return [i].pack("C") if i < limit
36
36
 
37
37
  bytes = []
@@ -30,8 +30,8 @@ module HTTP2Next
30
30
  # @param n [Integer] number of available bits
31
31
  # @return [Integer]
32
32
  def integer(buf, n)
33
- limit = 2**n - 1
34
- i = !n.zero? ? (buf.shift_byte & limit) : 0
33
+ limit = (2**n) - 1
34
+ i = n.zero? ? 0 : (buf.shift_byte & limit)
35
35
 
36
36
  m = 0
37
37
  if i == limit
@@ -81,7 +81,7 @@ module HTTP2Next
81
81
 
82
82
  STATIC_TABLE_BY_FIELD = STATIC_TABLE
83
83
  .each_with_object({})
84
- .each_with_index { |((field, value), hs), idx| (hs[field] ||= []) << [idx, value] }
84
+ .with_index { |((field, value), hs), idx| (hs[field] ||= []) << [idx, value] }
85
85
  .each { |pair| pair.each(&:freeze).freeze }.freeze
86
86
 
87
87
  STATIC_TABLE_SIZE = STATIC_TABLE.size
@@ -25,7 +25,7 @@ module HTTP2Next
25
25
  # @return [String] binary string
26
26
  def encode(str)
27
27
  bitstring = str.each_byte.map { |chr| ENCODE_TABLE[chr] }.join
28
- bitstring << "1" * ((8 - bitstring.size) % 8)
28
+ bitstring << ("1" * ((8 - bitstring.size) % 8))
29
29
  [bitstring].pack("B*")
30
30
  end
31
31
 
@@ -40,7 +40,7 @@ module HTTP2Next
40
40
 
41
41
  mask = (1 << BITS_AT_ONCE) - 1
42
42
  buf.each_byte do |chr|
43
- (8 / BITS_AT_ONCE - 1).downto(0) do |shift|
43
+ ((8 / BITS_AT_ONCE) - 1).downto(0) do |shift|
44
44
  branch = (chr >> (shift * BITS_AT_ONCE)) & mask
45
45
  # MACHINE[state] = [final, [transitions]]
46
46
  # [final] unfinished bits so far are prefix of the EOS code.
@@ -129,10 +129,9 @@ module HTTP2Next
129
129
  @_status_code ||= frame[:status]
130
130
  @_content_length ||= frame[:content_length]
131
131
  @_trailers ||= frame[:trailer]
132
- if @_waiting_on_trailers
133
- verify_trailers(frame)
134
- elsif @received_data &&
135
- (!@_status_code || @_status_code >= 200)
132
+ if @_waiting_on_trailers ||
133
+ (@received_data &&
134
+ (!@_status_code || @_status_code >= 200))
136
135
 
137
136
  # An endpoint that receives a HEADERS frame without the END_STREAM flag set after receiving a final
138
137
  # (non-informational) status code MUST treat the corresponding request or response as malformed.
@@ -225,7 +224,7 @@ module HTTP2Next
225
224
  end
226
225
 
227
226
  def promise(headers, end_headers: true, &block)
228
- raise ArgumentError, "must provide callback" unless block_given?
227
+ raise ArgumentError, "must provide callback" unless block
229
228
 
230
229
  flags = end_headers ? [:end_headers] : []
231
230
  emit(:promise, self, headers, flags, &block)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HTTP2Next
4
- VERSION = "0.5.0"
4
+ VERSION = "0.5.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http-2-next
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tiago Cardoso
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-08-05 00:00:00.000000000 Z
13
+ date: 2022-11-10 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: Pure-ruby HTTP 2.0 protocol implementation
16
16
  email:
@@ -53,10 +53,15 @@ files:
53
53
  - sig/next.rbs
54
54
  - sig/server.rbs
55
55
  - sig/stream.rbs
56
- homepage: https://gitlab.com/honeyryderchuck/http-2-next
56
+ homepage: https://gitlab.com/os85/http-2-next
57
57
  licenses:
58
58
  - MIT
59
- metadata: {}
59
+ metadata:
60
+ bug_tracker_uri: https://gitlab.com/os85/http-2-next/issues
61
+ changelog_uri: https://gitlab.com/os85/http-2-next/-/blob/master/CHANGELOG.md
62
+ source_code_uri: https://gitlab.com/os85/http-2-next
63
+ homepage_uri: https://gitlab.com/os85/http-2-next
64
+ rubygems_mfa_required: 'true'
60
65
  post_install_message:
61
66
  rdoc_options: []
62
67
  require_paths:
@@ -72,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
77
  - !ruby/object:Gem::Version
73
78
  version: '0'
74
79
  requirements: []
75
- rubygems_version: 3.2.15
80
+ rubygems_version: 3.3.7
76
81
  signing_key:
77
82
  specification_version: 4
78
83
  summary: Pure-ruby HTTP 2.0 protocol implementation