http-2 0.11.0 → 1.0.0

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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -9
  3. data/lib/http/2/base64.rb +45 -0
  4. data/lib/http/2/client.rb +19 -6
  5. data/lib/http/2/connection.rb +235 -163
  6. data/lib/http/2/emitter.rb +7 -5
  7. data/lib/http/2/error.rb +24 -1
  8. data/lib/http/2/extensions.rb +53 -0
  9. data/lib/http/2/flow_buffer.rb +91 -33
  10. data/lib/http/2/framer.rb +184 -157
  11. data/lib/http/2/header/compressor.rb +157 -0
  12. data/lib/http/2/header/decompressor.rb +144 -0
  13. data/lib/http/2/header/encoding_context.rb +337 -0
  14. data/lib/http/2/{huffman.rb → header/huffman.rb} +25 -19
  15. data/lib/http/2/{huffman_statemachine.rb → header/huffman_statemachine.rb} +2 -0
  16. data/lib/http/2/header.rb +35 -0
  17. data/lib/http/2/server.rb +47 -20
  18. data/lib/http/2/stream.rb +130 -61
  19. data/lib/http/2/version.rb +3 -1
  20. data/lib/http/2.rb +14 -13
  21. data/sig/client.rbs +9 -0
  22. data/sig/connection.rbs +93 -0
  23. data/sig/emitter.rbs +13 -0
  24. data/sig/error.rbs +35 -0
  25. data/sig/extensions.rbs +5 -0
  26. data/sig/flow_buffer.rbs +21 -0
  27. data/sig/frame_buffer.rbs +13 -0
  28. data/sig/framer.rbs +54 -0
  29. data/sig/header/compressor.rbs +27 -0
  30. data/sig/header/decompressor.rbs +22 -0
  31. data/sig/header/encoding_context.rbs +34 -0
  32. data/sig/header/huffman.rbs +9 -0
  33. data/sig/header.rbs +27 -0
  34. data/sig/next.rbs +101 -0
  35. data/sig/server.rbs +12 -0
  36. data/sig/stream.rbs +91 -0
  37. metadata +38 -79
  38. data/.autotest +0 -20
  39. data/.coveralls.yml +0 -1
  40. data/.gitignore +0 -20
  41. data/.gitmodules +0 -3
  42. data/.rspec +0 -5
  43. data/.rubocop.yml +0 -93
  44. data/.rubocop_todo.yml +0 -131
  45. data/.travis.yml +0 -17
  46. data/Gemfile +0 -16
  47. data/Guardfile +0 -18
  48. data/Guardfile.h2spec +0 -12
  49. data/LICENSE +0 -21
  50. data/Rakefile +0 -49
  51. data/example/Gemfile +0 -3
  52. data/example/README.md +0 -44
  53. data/example/client.rb +0 -122
  54. data/example/helper.rb +0 -19
  55. data/example/keys/server.crt +0 -20
  56. data/example/keys/server.key +0 -27
  57. data/example/server.rb +0 -139
  58. data/example/upgrade_client.rb +0 -153
  59. data/example/upgrade_server.rb +0 -203
  60. data/http-2.gemspec +0 -22
  61. data/lib/http/2/buffer.rb +0 -76
  62. data/lib/http/2/compressor.rb +0 -572
  63. data/lib/tasks/generate_huffman_table.rb +0 -166
  64. data/spec/buffer_spec.rb +0 -28
  65. data/spec/client_spec.rb +0 -188
  66. data/spec/compressor_spec.rb +0 -666
  67. data/spec/connection_spec.rb +0 -681
  68. data/spec/emitter_spec.rb +0 -54
  69. data/spec/framer_spec.rb +0 -487
  70. data/spec/h2spec/h2spec.darwin +0 -0
  71. data/spec/h2spec/output/non_secure.txt +0 -317
  72. data/spec/helper.rb +0 -147
  73. data/spec/hpack_test_spec.rb +0 -84
  74. data/spec/huffman_spec.rb +0 -68
  75. data/spec/server_spec.rb +0 -52
  76. data/spec/stream_spec.rb +0 -878
  77. data/spec/support/deep_dup.rb +0 -55
  78. data/spec/support/duplicable.rb +0 -98
metadata CHANGED
@@ -1,95 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http-2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
+ - Tiago Cardoso
7
8
  - Ilya Grigorik
8
9
  - Kaoru Maeda
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2021-01-06 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bundler
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :development
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '0'
13
+ date: 2024-06-28 00:00:00.000000000 Z
14
+ dependencies: []
28
15
  description: Pure-ruby HTTP 2.0 protocol implementation
29
16
  email:
17
+ - cardoso_tiago@hotmail.com
30
18
  - ilya@igvita.com
31
19
  executables: []
32
20
  extensions: []
33
21
  extra_rdoc_files: []
34
22
  files:
35
- - ".autotest"
36
- - ".coveralls.yml"
37
- - ".gitignore"
38
- - ".gitmodules"
39
- - ".rspec"
40
- - ".rubocop.yml"
41
- - ".rubocop_todo.yml"
42
- - ".travis.yml"
43
- - Gemfile
44
- - Guardfile
45
- - Guardfile.h2spec
46
- - LICENSE
47
23
  - README.md
48
- - Rakefile
49
- - example/Gemfile
50
- - example/README.md
51
- - example/client.rb
52
- - example/helper.rb
53
- - example/keys/server.crt
54
- - example/keys/server.key
55
- - example/server.rb
56
- - example/upgrade_client.rb
57
- - example/upgrade_server.rb
58
- - http-2.gemspec
59
24
  - lib/http/2.rb
60
- - lib/http/2/buffer.rb
25
+ - lib/http/2/base64.rb
61
26
  - lib/http/2/client.rb
62
- - lib/http/2/compressor.rb
63
27
  - lib/http/2/connection.rb
64
28
  - lib/http/2/emitter.rb
65
29
  - lib/http/2/error.rb
30
+ - lib/http/2/extensions.rb
66
31
  - lib/http/2/flow_buffer.rb
67
32
  - lib/http/2/framer.rb
68
- - lib/http/2/huffman.rb
69
- - lib/http/2/huffman_statemachine.rb
33
+ - lib/http/2/header.rb
34
+ - lib/http/2/header/compressor.rb
35
+ - lib/http/2/header/decompressor.rb
36
+ - lib/http/2/header/encoding_context.rb
37
+ - lib/http/2/header/huffman.rb
38
+ - lib/http/2/header/huffman_statemachine.rb
70
39
  - lib/http/2/server.rb
71
40
  - lib/http/2/stream.rb
72
41
  - lib/http/2/version.rb
73
- - lib/tasks/generate_huffman_table.rb
74
- - spec/buffer_spec.rb
75
- - spec/client_spec.rb
76
- - spec/compressor_spec.rb
77
- - spec/connection_spec.rb
78
- - spec/emitter_spec.rb
79
- - spec/framer_spec.rb
80
- - spec/h2spec/h2spec.darwin
81
- - spec/h2spec/output/non_secure.txt
82
- - spec/helper.rb
83
- - spec/hpack_test_spec.rb
84
- - spec/huffman_spec.rb
85
- - spec/server_spec.rb
86
- - spec/stream_spec.rb
87
- - spec/support/deep_dup.rb
88
- - spec/support/duplicable.rb
42
+ - sig/client.rbs
43
+ - sig/connection.rbs
44
+ - sig/emitter.rbs
45
+ - sig/error.rbs
46
+ - sig/extensions.rbs
47
+ - sig/flow_buffer.rbs
48
+ - sig/frame_buffer.rbs
49
+ - sig/framer.rbs
50
+ - sig/header.rbs
51
+ - sig/header/compressor.rbs
52
+ - sig/header/decompressor.rbs
53
+ - sig/header/encoding_context.rbs
54
+ - sig/header/huffman.rbs
55
+ - sig/next.rbs
56
+ - sig/server.rbs
57
+ - sig/stream.rbs
89
58
  homepage: https://github.com/igrigorik/http-2
90
59
  licenses:
91
60
  - MIT
92
- metadata: {}
61
+ metadata:
62
+ bug_tracker_uri: https://github.com/igrigorik/http-2/issues
63
+ changelog_uri: https://github.com/igrigorik/http-2/blob/main/CHANGELOG.md
64
+ source_code_uri: https://github.com/igrigorik/http-2
65
+ homepage_uri: https://github.com/igrigorik/http-2
66
+ rubygems_mfa_required: 'true'
93
67
  post_install_message:
94
68
  rdoc_options: []
95
69
  require_paths:
@@ -98,30 +72,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
72
  requirements:
99
73
  - - ">="
100
74
  - !ruby/object:Gem::Version
101
- version: 2.1.0
75
+ version: 2.7.0
102
76
  required_rubygems_version: !ruby/object:Gem::Requirement
103
77
  requirements:
104
78
  - - ">="
105
79
  - !ruby/object:Gem::Version
106
80
  version: '0'
107
81
  requirements: []
108
- rubygems_version: 3.0.3
82
+ rubygems_version: 3.5.3
109
83
  signing_key:
110
84
  specification_version: 4
111
85
  summary: Pure-ruby HTTP 2.0 protocol implementation
112
- test_files:
113
- - spec/buffer_spec.rb
114
- - spec/client_spec.rb
115
- - spec/compressor_spec.rb
116
- - spec/connection_spec.rb
117
- - spec/emitter_spec.rb
118
- - spec/framer_spec.rb
119
- - spec/h2spec/h2spec.darwin
120
- - spec/h2spec/output/non_secure.txt
121
- - spec/helper.rb
122
- - spec/hpack_test_spec.rb
123
- - spec/huffman_spec.rb
124
- - spec/server_spec.rb
125
- - spec/stream_spec.rb
126
- - spec/support/deep_dup.rb
127
- - spec/support/duplicable.rb
86
+ test_files: []
data/.autotest DELETED
@@ -1,20 +0,0 @@
1
- require 'autotest/growl'
2
-
3
- Autotest.add_hook(:initialize) {|at|
4
- at.add_exception %r{^\.git|\.yardoc}
5
- at.add_exception %r{^./tmp}
6
- at.add_exception %r{coverage}
7
-
8
- at.clear_mappings
9
-
10
- at.add_mapping(%r%^spec/.*_spec\.rb$%) { |filename, _|
11
- filename
12
- }
13
- at.add_mapping(%r%^lib/(.*)\.rb$%) { |_, m|
14
- ["spec/#{m[1].split('/').last}_spec.rb"]
15
- }
16
- at.add_mapping(%r%^spec/(spec_helper|shared/.*)\.rb$%) {
17
- files_matching %r%^spec/.*_spec\.rb$%
18
- }
19
- nil
20
- }
data/.coveralls.yml DELETED
@@ -1 +0,0 @@
1
- service_name: travis-ci
data/.gitignore DELETED
@@ -1,20 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- .DS_Store
7
- .idea
8
- Gemfile.lock
9
- InstalledFiles
10
- _yardoc
11
- coverage
12
- doc/
13
- vendor/
14
- lib/bundler/man
15
- pkg
16
- rdoc
17
- spec/reports
18
- test/tmp
19
- test/version_tmp
20
- tmp
data/.gitmodules DELETED
@@ -1,3 +0,0 @@
1
- [submodule "spec/hpack-test-case"]
2
- path = spec/hpack-test-case
3
- url = https://github.com/http2jp/hpack-test-case
data/.rspec DELETED
@@ -1,5 +0,0 @@
1
- autotest
2
- --color
3
- --format documentation
4
- --order rand
5
- --warnings
data/.rubocop.yml DELETED
@@ -1,93 +0,0 @@
1
- inherit_from: .rubocop_todo.yml
2
-
3
- AllCops:
4
- TargetRubyVersion: 2.1
5
- DisplayCopNames: true
6
- Exclude:
7
- - 'bin/**'
8
- - 'vendor/**/*'
9
- - '**/huffman_statemachine.rb'
10
-
11
- Layout/IndentHeredoc:
12
- Exclude:
13
- - 'lib/tasks/generate_huffman_table.rb'
14
- - 'example/*'
15
-
16
- Metrics/LineLength:
17
- Max: 120
18
-
19
- Metrics/BlockLength:
20
- Max: 700
21
-
22
- Layout/EndAlignment:
23
- EnforcedStyleAlignWith: variable
24
-
25
- Layout/CaseIndentation:
26
- EnforcedStyle: end
27
-
28
- Layout/IndentHash:
29
- EnforcedStyle: consistent
30
-
31
- Style/TrailingCommaInArrayLiteral:
32
- EnforcedStyleForMultiline: comma
33
-
34
- Style/TrailingCommaInHashLiteral:
35
- EnforcedStyleForMultiline: comma
36
-
37
- Layout/SpaceAroundOperators:
38
- Enabled: false
39
-
40
- Layout/ExtraSpacing:
41
- Enabled: false
42
-
43
- Layout/EmptyLinesAroundExceptionHandlingKeywords:
44
- Enabled: false
45
-
46
- Naming/UncommunicativeMethodParamName:
47
- Enabled: false
48
-
49
- Style/SignalException:
50
- Enabled: false
51
-
52
- Style/FrozenStringLiteralComment:
53
- Enabled: false
54
-
55
- Style/ParallelAssignment:
56
- Enabled: false
57
-
58
- Style/ParenthesesAroundCondition:
59
- Enabled: false
60
-
61
- Style/IfInsideElse:
62
- Enabled: false
63
-
64
- Style/IfUnlessModifier:
65
- Enabled: false
66
-
67
- Style/MultilineIfModifier:
68
- Enabled: false
69
-
70
- Lint/EmptyWhen:
71
- Enabled: false
72
-
73
- Style/TrailingCommaInArguments:
74
- Enabled: false
75
-
76
- Style/TrailingUnderscoreVariable:
77
- Enabled: false
78
-
79
- Style/SymbolArray:
80
- Enabled: false
81
-
82
- Style/CommentedKeyword:
83
- Enabled: false
84
-
85
- Style/PercentLiteralDelimiters:
86
- Enabled: false
87
-
88
- Performance/TimesMap:
89
- Enabled: false
90
-
91
- Performance/RedundantBlockCall:
92
- Enabled: false
93
-
data/.rubocop_todo.yml DELETED
@@ -1,131 +0,0 @@
1
- # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2016-06-09 10:57:54 -0400 using RuboCop version 0.40.0.
4
- # The point is for the user to remove these configuration records
5
- # one by one as the offenses are removed from the code base.
6
- # Note that changes in the inspected code, or installation of new
7
- # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 24
10
- Metrics/AbcSize:
11
- Max: 185
12
-
13
- # Offense count: 16
14
- Metrics/BlockNesting:
15
- Max: 5
16
-
17
- # Offense count: 5
18
- # Configuration parameters: CountComments.
19
- Metrics/ClassLength:
20
- Max: 325
21
-
22
- Metrics/ModuleLength:
23
- Max: 120
24
-
25
- # Offense count: 12
26
- Metrics/CyclomaticComplexity:
27
- Max: 60
28
-
29
- # Offense count: 9
30
- # Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
31
- # URISchemes: http, https
32
- Metrics/LineLength:
33
- Max: 108
34
-
35
- # Offense count: 29
36
- # Configuration parameters: CountComments.
37
- Metrics/MethodLength:
38
- Max: 134
39
-
40
- # Offense count: 1
41
- # Configuration parameters: CountKeywordArgs.
42
- Metrics/ParameterLists:
43
- Max: 7
44
-
45
- # Offense count: 10
46
- Metrics/PerceivedComplexity:
47
- Max: 46
48
-
49
- # Offense count: 1
50
- # Cop supports --auto-correct.
51
- # Configuration parameters: MaxKeyValuePairs.
52
- Performance/RedundantMerge:
53
- Exclude:
54
- - 'lib/http/2/server.rb'
55
-
56
- # Offense count: 4
57
- Style/Documentation:
58
- Exclude:
59
- - 'spec/**/*'
60
- - 'test/**/*'
61
- - 'example/helper.rb'
62
- - 'example/upgrade_server.rb'
63
- - 'lib/tasks/generate_huffman_table.rb'
64
-
65
- # Offense count: 3
66
- # Cop supports --auto-correct.
67
- # Configuration parameters: EnforcedStyle.
68
- # SupportedStyles: braces, no_braces, context_dependent
69
- Style/BracesAroundHashParameters:
70
- Exclude:
71
- - 'spec/connection_spec.rb'
72
- - 'spec/server_spec.rb'
73
-
74
- # Offense count: 1
75
- # Cop supports --auto-correct.
76
- Style/EmptyCaseCondition:
77
- Exclude:
78
- - 'example/upgrade_server.rb'
79
-
80
- # Offense count: 1
81
- # Configuration parameters: MinBodyLength.
82
- Style/GuardClause:
83
- Exclude:
84
- - 'lib/http/2/connection.rb'
85
-
86
- # Offense count: 2
87
- # Cop supports --auto-correct.
88
- # Configuration parameters: SupportedStyles, IndentationWidth.
89
- # SupportedStyles: special_inside_parentheses, consistent, align_brackets
90
- Layout/IndentArray:
91
- EnforcedStyle: consistent
92
-
93
- # Offense count: 1
94
- # Cop supports --auto-correct.
95
- # Configuration parameters: EnforcedStyle, SupportedStyles.
96
- # SupportedStyles: symmetrical, new_line, same_line
97
- Layout/MultilineArrayBraceLayout:
98
- Exclude:
99
- - 'spec/compressor_spec.rb'
100
-
101
- # Offense count: 16
102
- # Cop supports --auto-correct.
103
- # Configuration parameters: EnforcedStyle, SupportedStyles.
104
- # SupportedStyles: symmetrical, new_line, same_line
105
- Layout/MultilineHashBraceLayout:
106
- Exclude:
107
- - 'spec/compressor_spec.rb'
108
-
109
- # Offense count: 1
110
- # Cop supports --auto-correct.
111
- Style/MutableConstant:
112
- Exclude:
113
- - 'example/upgrade_server.rb'
114
-
115
- # Offense count: 1
116
- # Cop supports --auto-correct.
117
- Style/RedundantSelf:
118
- Exclude:
119
- - 'lib/http/2/connection.rb'
120
-
121
- # Offense count: 1
122
- # Cop supports --auto-correct.
123
- Style/UnneededInterpolation:
124
- Exclude:
125
- - 'spec/compressor_spec.rb'
126
-
127
- # Offense count: 1
128
- # Cop supports --auto-correct.
129
- Style/ZeroLengthPredicate:
130
- Exclude:
131
- - 'lib/http/2/framer.rb'
data/.travis.yml DELETED
@@ -1,17 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- rvm:
4
- - 2.1
5
- - 2.2
6
- - 2.3
7
- - 2.4
8
- - 2.5
9
- - 2.6
10
- - 2.7
11
- - jruby-9.2.0.0 # latest stable
12
- - jruby-head
13
- - rbx-2
14
- matrix:
15
- allow_failures:
16
- - rvm: jruby-head
17
- - rvm: rbx-2
data/Gemfile DELETED
@@ -1,16 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'rake'
4
- gem 'yard'
5
-
6
- group :test do
7
- gem 'autotest-standalone'
8
- gem 'coveralls', require: false
9
- gem 'pry'
10
- gem 'pry-byebug', platform: :mri
11
- gem 'rspec', '~> 3.4.0'
12
- gem 'rspec-autotest'
13
- gem 'rubocop', '0.57.2'
14
- end
15
-
16
- gemspec
data/Guardfile DELETED
@@ -1,18 +0,0 @@
1
- guard :process, name: 'HTTP/2 Server', command: 'ruby example/server.rb', stop_signal: 'TERM' do
2
- watch(%r{^example/(.+)\.rb$})
3
- watch(%r{^lib/http/2/(.+)\.rb$})
4
-
5
- watch('Gemfile.lock')
6
- end
7
-
8
- def h2spec
9
- puts 'Starting H2 Spec'
10
- sleep 0.7
11
- system '~/go-workspace/bin/h2spec -p 8080 -o 1 -s 4.2'
12
- puts "\n"
13
- end
14
-
15
- guard :shell, name: 'H2 Spec' do
16
- watch(%r{^example/(.+)\.rb$}) { h2spec }
17
- watch(%r{^lib/http/2/(.+)\.rb$}) { h2spec }
18
- end
data/Guardfile.h2spec DELETED
@@ -1,12 +0,0 @@
1
- def h2spec
2
- puts "Starting H2 Spec"
3
- sleep 0.7
4
- system '~/go-workspace/bin/h2spec -p 8080 -o 1 -s 5.1'
5
- puts "\n"
6
- end
7
-
8
- guard :shell, name:'H2 Spec' do
9
- watch(%r{^example/(.+)\.rb$}) { h2spec }
10
- watch(%r{^lib/http/2/(.+)\.rb$}) { h2spec }
11
- end
12
-
data/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2013 Ilya Grigorik
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
data/Rakefile DELETED
@@ -1,49 +0,0 @@
1
- require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
3
- require 'rubocop/rake_task'
4
- require 'yard'
5
- require 'open3'
6
- require_relative 'lib/tasks/generate_huffman_table'
7
-
8
- RSpec::Core::RakeTask.new(:spec) do |t|
9
- t.exclude_pattern = './spec/hpack_test_spec.rb'
10
- end
11
-
12
- RSpec::Core::RakeTask.new(:hpack) do |t|
13
- t.pattern = './spec/hpack_test_spec.rb'
14
- end
15
-
16
- task :h2spec do
17
- if /darwin/ !~ RUBY_PLATFORM
18
- abort "h2spec rake task currently only works on OSX.
19
- Download other binaries from https://github.com/summerwind/h2spec/releases"
20
- end
21
-
22
- system 'ruby example/server.rb -p 9000 &', out: File::NULL
23
- sleep 1
24
-
25
- output = ''
26
- Open3.popen2e('spec/h2spec/h2spec.darwin -p 9000 -o 1') do |_i, oe, _t|
27
- oe.each do |l|
28
- l.gsub!(/\e\[(\d+)(;\d+)*m/, '')
29
-
30
- output << l
31
- if l =~ /passed.*failed/
32
- puts "\n#{l}"
33
- break # suppress post-summary failure output
34
- else
35
- print '.'
36
- end
37
- end
38
- end
39
-
40
- File.write 'spec/h2spec/output/non_secure.txt', output
41
-
42
- system 'kill `pgrep -f example/server.rb`'
43
- end
44
-
45
- RuboCop::RakeTask.new
46
- YARD::Rake::YardocTask.new
47
-
48
- task default: [:spec, :rubocop]
49
- task all: [:default, :hpack]
data/example/Gemfile DELETED
@@ -1,3 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'http_parser.rb'
data/example/README.md DELETED
@@ -1,44 +0,0 @@
1
- ## Interop
2
-
3
- First, a quick test to ensure that we can talk to ourselves:
4
-
5
- ```bash
6
- # Direct connection
7
- $> ruby server.rb
8
- $> ruby client.rb http://localhost:8080/ # GET
9
- $> ruby client.rb http://localhost:8080/ -d 'some data' # POST
10
-
11
- # Server push
12
- $> ruby server.rb --push
13
- $> ruby client.rb http://localhost:8080/ # GET
14
-
15
- # TLS + NPN negotiation
16
- $> ruby server.rb --secure
17
- $> ruby client.rb https://localhost:8080/ # GET
18
- $> ...
19
- ```
20
-
21
- ### [nghttp2](https://github.com/tatsuhiro-t/nghttp2) (HTTP/2.0 C Library)
22
-
23
- Public test server: http://106.186.112.116 (Upgrade + Direct)
24
-
25
- ```bash
26
- # Direct request (http-2 > nghttp2)
27
- $> ruby client.rb http://106.186.112.116/
28
-
29
- # TLS + NPN request (http-2 > nghttp2)
30
- $> ruby client.rb https://106.186.112.116/
31
-
32
- # Direct request (nghttp2 > http-2)
33
- $> ruby server.rb
34
- $> nghttp -vnu http://localhost:8080 # Direct request to Ruby server
35
- ```
36
-
37
- ### Twitter (Java server)
38
-
39
- ```bash
40
- # NPN + GET request (http-2 > twitter)
41
- $> ruby client.rb https://twitter.com/
42
- ```
43
-
44
- For a complete list of current implementations, see [http2 wiki](https://github.com/http2/http2-spec/wiki/Implementations).