http-2-next 0.5.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a7c15b998344b09aee75566b64f5ef94abb9b388fdc3d2f06704e8263a586789
4
- data.tar.gz: 935a6225e964eb46b6f26e57ccf3080fd231570f3710bf6e78e3f05f589a294f
3
+ metadata.gz: 910d4e858a63a1b882621dbf2951f2f8a20c29be458de15c9633b451594b797a
4
+ data.tar.gz: a2ab88e4f38a97320f0d338c149485ee5976645fccd110bd839ba96d6f59432f
5
5
  SHA512:
6
- metadata.gz: 5d768219d315950da7cc798981c6d081e23f2ffab97f354149ebae1398a25cf3db304bdd81429f8e3f257cb0100cc1a28374a1459cef4dc551d317d9bb1cade0
7
- data.tar.gz: 758a733387749553121d3117d9a86ae6109fc28fcbae12cce2852c9d291a30ad133c16060a5374c6c13aadc16af02996fba41a239998d32a194d0516fa75c71f
6
+ metadata.gz: 72ca980c5aa292e4e92cdf625f8769c77a2a12a9452736a254c668f55cfcdcdcde493db0d8e760eb7d4c1981aadbcdb08f0f48970b8453b3a59dbb5c9ef2a614
7
+ data.tar.gz: 6875ba9d1136b4c146e89c1b5dad811e4225adb03f99340b09dab0a54f7eeee4aab04596e9bed9f1d68de6b2770aa1548a662d4c9969356612ede4c5d48c2864
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ if RUBY_VERSION < "3.3.0"
4
+ require "base64"
5
+ elsif !defined?(Base64)
6
+ module HTTP2Next
7
+ # require "base64" will not be a default gem after ruby 3.4.0
8
+ module Base64
9
+ module_function
10
+
11
+ def encode64(bin)
12
+ [bin].pack("m")
13
+ end
14
+
15
+ def decode64(str)
16
+ str.unpack1("m")
17
+ end
18
+
19
+ def urlsafe_encode64(bin, padding: true)
20
+ str = strict_encode64(bin)
21
+ str.chomp!("==") or str.chomp!("=") unless padding
22
+ str.tr!("+/", "-_")
23
+ str
24
+ end
25
+ end
26
+
27
+ def urlsafe_decode64(str)
28
+ if !str.end_with?("=") && str.length % 4 != 0
29
+ str = str.ljust((str.length + 3) & ~3, "=")
30
+ str.tr!("-_", "+/")
31
+ else
32
+ str = str.tr("-_", "+/")
33
+ end
34
+ strict_decode64(str)
35
+ end
36
+ end
37
+ end
@@ -3,7 +3,7 @@
3
3
  module HTTP2Next
4
4
  # Stream, connection, and compressor exceptions.
5
5
  module Error
6
- @types = {} # rubocop:disable ThreadSafety/MutableClassInstanceVariable
6
+ @types = {}
7
7
 
8
8
  class << self
9
9
  attr_reader :types
@@ -1,16 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HTTP2Next
4
- module RegexpExtensions
5
- unless Regexp.method_defined?(:match?)
6
- refine Regexp do
7
- def match?(*args)
8
- !match(*args).nil?
9
- end
10
- end
11
- end
12
- end
13
-
14
4
  module StringExtensions
15
5
  refine String do
16
6
  def read(n)
@@ -29,12 +19,6 @@ module HTTP2Next
29
19
  def shift_byte
30
20
  read(1).ord
31
21
  end
32
-
33
- unless String.method_defined?(:unpack1)
34
- def unpack1(format)
35
- unpack(format).first
36
- end
37
- end
38
22
  end
39
23
  end
40
24
  end
@@ -8,8 +8,6 @@ module HTTP2Next
8
8
  class EncodingContext
9
9
  include Error
10
10
 
11
- using RegexpExtensions
12
-
13
11
  UPPER = /[[:upper:]]/.freeze
14
12
 
15
13
  # @private
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "base64"
4
3
  module HTTP2Next
5
4
  # HTTP 2.0 server connection class that implements appropriate header
6
5
  # compression / decompression algorithms and stream management logic.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HTTP2Next
4
- VERSION = "0.5.1"
4
+ VERSION = "1.0.0"
5
5
  end
data/lib/http/2/next.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "http/2/next/version"
4
4
  require "http/2/next/extensions"
5
+ require "http/2/next/base64"
5
6
  require "http/2/next/error"
6
7
  require "http/2/next/emitter"
7
8
  require "http/2/next/flow_buffer"
data/sig/connection.rbs CHANGED
@@ -21,6 +21,29 @@ module HTTP2Next
21
21
 
22
22
  attr_writer max_streams: Integer?
23
23
 
24
+ @stream_id: Integer
25
+ @active_stream_count: Integer
26
+ @last_activated_stream: Integer
27
+ @last_stream_id: Integer
28
+
29
+ @streams: Hash[Integer, Stream]
30
+ @streams_recently_closed: Hash[Integer, Stream]
31
+
32
+ @framer: Framer
33
+
34
+ @local_window_limit: Integer
35
+ @remote_window_limit: Integer
36
+
37
+ @compressor: Header::Compressor
38
+ @decompressor: Header::Decompressor
39
+ @error: Symbol?
40
+
41
+ @recv_buffer: String
42
+ @continuation: Array[frame]
43
+
44
+ @closed_since: Float?
45
+ @received_frame: bool
46
+
24
47
  def closed?: () -> bool
25
48
 
26
49
  def new_stream: (**untyped) -> Stream
@@ -37,9 +60,9 @@ module HTTP2Next
37
60
  def receive: (string data) -> void
38
61
  alias << receive
39
62
 
40
- private
63
+ def initialize: (?settings_hash) -> void
41
64
 
42
- def initialize: (?settings_hash) -> untyped
65
+ private
43
66
 
44
67
  def send: (frame) -> void
45
68
 
@@ -67,6 +90,6 @@ module HTTP2Next
67
90
 
68
91
  def _verify_pseudo_headers: (frame, Array[String]) -> void
69
92
 
70
- def connection_error: (?Symbol error, ?msg: String, ?e: StandardError) -> void
93
+ def connection_error: (?Symbol error, ?msg: String?, ?e: StandardError?) -> void
71
94
  end
72
95
  end
data/sig/error.rbs CHANGED
@@ -1,2 +1,35 @@
1
1
  module HTTP2Next
2
+ module Error
3
+ def self?.types: () -> Hash[Symbol, singleton(Error)]
4
+
5
+ class Error < StandardError
6
+ end
7
+
8
+ class HandshakeError < Error
9
+ end
10
+
11
+ class ProtocolError < Error
12
+ end
13
+
14
+ class CompressionError < ProtocolError
15
+ end
16
+
17
+ class FlowControlError < ProtocolError
18
+ end
19
+
20
+ class InternalError < ProtocolError
21
+ end
22
+
23
+ class StreamClosed < Error
24
+ end
25
+
26
+ class ConnectionClosed < Error
27
+ end
28
+
29
+ class StreamLimitExceeded < Error
30
+ end
31
+
32
+ class FrameSizeError < Error
33
+ end
34
+ end
2
35
  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.1
4
+ version: 1.0.0
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: 2022-11-10 00:00:00.000000000 Z
13
+ date: 2023-10-03 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: Pure-ruby HTTP 2.0 protocol implementation
16
16
  email:
@@ -21,6 +21,7 @@ extra_rdoc_files: []
21
21
  files:
22
22
  - README.md
23
23
  - lib/http/2/next.rb
24
+ - lib/http/2/next/base64.rb
24
25
  - lib/http/2/next/client.rb
25
26
  - lib/http/2/next/connection.rb
26
27
  - lib/http/2/next/emitter.rb
@@ -70,14 +71,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
70
71
  requirements:
71
72
  - - ">="
72
73
  - !ruby/object:Gem::Version
73
- version: 2.1.0
74
+ version: 2.7.0
74
75
  required_rubygems_version: !ruby/object:Gem::Requirement
75
76
  requirements:
76
77
  - - ">="
77
78
  - !ruby/object:Gem::Version
78
79
  version: '0'
79
80
  requirements: []
80
- rubygems_version: 3.3.7
81
+ rubygems_version: 3.4.10
81
82
  signing_key:
82
83
  specification_version: 4
83
84
  summary: Pure-ruby HTTP 2.0 protocol implementation