ds9 1.3.0 → 1.3.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
  SHA1:
3
- metadata.gz: 2c4e36345289f23d14f435bc4cb397a72a5bda5d
4
- data.tar.gz: 142a14a755b07d0ea718f3de691fb87fed448ed3
3
+ metadata.gz: 675cfb91dad1dd9337150425144870db64e880c9
4
+ data.tar.gz: 31fa19e3c643ce1a425cb7c97b2fa6e145fb69d4
5
5
  SHA512:
6
- metadata.gz: 52385947712d95677a593d18a16e81bbe9332042854537fcc4734fb8e5f39fb15e65380349725abe5d5ebedc9f3c6b97da573ffd18a10cc4b260924aac30551d
7
- data.tar.gz: fcf9414805469006684c1ecd1a30297322892baa0e3d04804688aba6949a90b77ea0eecf99981f0ca3ae18315b6399947e75d74d649de49dd668c50e746d8ce6
6
+ metadata.gz: 5023590043ecd16dc8f9f004cb7c38e0b479806459c0716e108ba15160f3eb88d8d15fa0349118817aa7414d7878ece680c8dc97059bc102dfb2e13b2fa3b187
7
+ data.tar.gz: ed434905dc9b8129f0c812cec3a752b77618a61c157698e46c2d2b3b22221ac1a28145a089d222e31f37258e42221b5cdd9b841589a266e26a12e813e1f12b80
@@ -0,0 +1,3 @@
1
+ Gemfile.lock
2
+ /pkg/
3
+ /tmp/
data/Gemfile ADDED
@@ -0,0 +1 @@
1
+ gemspec
data/README.md CHANGED
@@ -9,19 +9,33 @@ around nghttp2.
9
9
 
10
10
  ## INSTALLING
11
11
 
12
- On OS X:
12
+ Add this line to your application's Gemfile:
13
13
 
14
+ ```ruby
15
+ gem ds9
16
+ ```
17
+
18
+ And then execute:
19
+
20
+ ```shell
21
+ $ bundle install
14
22
  ```
15
- $ brew install nghttp2
23
+
24
+ Or install it yourself as:
25
+
26
+ ```shell
16
27
  $ gem install ds9
17
28
  ```
18
29
 
19
- I'm not sure about other platforms, but it should Just Work if you install
20
- libnghttp2.
30
+ To install this gem without nghttp2:
21
31
 
22
- ## FEATURES/PROBLEMS:
32
+ Use `DS9_USE_SYSTEM_LIBRARIES` ENV var:
23
33
 
24
- * Needs nghttp2
34
+ ```shell
35
+ $ DS9_USE_SYSTEM_LIBRARIES=1 bundle install
36
+ ```
37
+
38
+ or, the `--use-system-libraries` option:
25
39
 
26
40
  ## SYNOPSIS:
27
41
 
@@ -142,23 +156,11 @@ end
142
156
 
143
157
  ## HACKING:
144
158
 
145
- On OS X:
146
-
147
159
  ```
148
- $ brew install nghttp2
149
- $ gem install hoe rake-compiler
150
- $ rake compile test
160
+ $ bundle install
161
+ $ bundle exec rake compile test
151
162
  ```
152
163
 
153
- ## REQUIREMENTS:
154
-
155
- * Needs nghttp2
156
-
157
- ## INSTALL:
158
-
159
- * brew install nghttp2
160
- * gem install ds9
161
-
162
164
  ## LICENSE:
163
165
 
164
166
  (The MIT License)
data/Rakefile CHANGED
@@ -1,31 +1,12 @@
1
- # -*- ruby -*-
2
-
3
- require 'rubygems'
4
- require 'hoe'
5
-
6
- Hoe.plugins.delete :rubyforge
7
- Hoe.plugin :minitest
8
- Hoe.plugin :gemspec # `gem install hoe-gemspec`
9
- Hoe.plugin :git # `gem install hoe-git`
10
-
11
- gem 'rake-compiler', '>= 0.4.1'
1
+ require "bundler/gem_tasks"
12
2
  require "rake/extensiontask"
13
3
 
14
- Hoe.spec 'ds9' do
15
- developer('Aaron Patterson', 'tenderlove@ruby-lang.org')
16
- self.readme_file = 'README.md'
17
- self.history_file = 'CHANGELOG.md'
18
- self.extra_rdoc_files = FileList['*.md']
19
- extra_dev_deps << ['rake-compiler', '>= 0.4.1']
20
-
21
- self.spec_extras = {
22
- :required_ruby_version => '>= 2.2.2'
23
- }
4
+ task default: :compile
24
5
 
25
- self.spec_extras[:extensions] = ["ext/ds9/extconf.rb"]
26
- Rake::ExtensionTask.new "ds9", spec do |ext|
27
- ext.lib_dir = File.join(*['lib', ENV['FAT_DIR']].compact)
28
- end
6
+ Rake::ExtensionTask.new("ds9") do |t|
7
+ t.name = "ds9"
8
+ t.ext_dir = "ext/ds9"
9
+ t.lib_dir = "lib"
29
10
  end
30
11
 
31
12
  # vim: syntax=ruby
@@ -0,0 +1,33 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "ds9/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "ds9"
7
+ s.version = DS9::VERSION
8
+ s.authors = ["Aaron Patterson", "Yuta Iwama"]
9
+ s.email = ["tenderlove@ruby-lang.org", "ganmacs@gmail.com"]
10
+
11
+ s.summary = "This library allows you to write HTTP/2 clients and servers"
12
+ s.description = "This library allows you to write HTTP/2 clients and servers. It is a wrapper\naround nghttp2."
13
+ s.homepage = "https://github.com/tenderlove/ds9"
14
+ s.licenses = ["MIT"]
15
+
16
+ s.files = `git ls-files -z`.split("\x0")
17
+ s.require_paths = ["lib"]
18
+ s.extensions = ["ext/ds9/extconf.rb"]
19
+
20
+ s.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
21
+ s.rubygems_version = "2.4.8"
22
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
23
+ s.extra_rdoc_files = ["CHANGELOG.md", "README.md"]
24
+ s.rdoc_options = ["--main", "README.md"]
25
+ s.date = "2015-07-06"
26
+
27
+ s.add_runtime_dependency "mini_portile2", ">= 2.2.0"
28
+
29
+ s.add_development_dependency "bundler"
30
+ s.add_development_dependency "minitest", "~> 5.7"
31
+ s.add_development_dependency "rdoc", "~> 4.0"
32
+ s.add_development_dependency "rake-compiler", ">= 1.0.5"
33
+ end
@@ -1,16 +1,43 @@
1
1
  require 'mkmf'
2
2
 
3
- if with_config("static")
4
- ldflags = pkg_config 'libnghttp2', 'libs-only-L'
3
+ def using_system_libraries?
4
+ arg_config('--use-system-libraries', !!ENV['DS9_USE_SYSTEM_LIBRARIES'])
5
+ end
6
+
7
+ if using_system_libraries?
8
+ if with_config("static")
9
+ ldflags = pkg_config 'libnghttp2', 'libs-only-L'
5
10
 
6
- archive = File.join ldflags.sub(/^-L/, ''), 'libnghttp2.a'
7
- if File.exist? archive
8
- $LDFLAGS << " #{archive}"
11
+ archive = File.join ldflags.sub(/^-L/, ''), 'libnghttp2.a'
12
+ if File.exist? archive
13
+ $LDFLAGS << " #{archive}"
14
+ else
15
+ raise "couldn't find archive"
16
+ end
9
17
  else
10
- raise "couldn't find archive"
18
+ pkg_config 'libnghttp2'
11
19
  end
12
20
  else
13
- pkg_config 'libnghttp2'
21
+ message "Building nghttp2\n"
22
+ require 'rubygems'
23
+ require 'mini_portile2'
24
+ recipe = MiniPortile.new('nghttp2', 'v1.34.0')
25
+ # We need to compile nghttp2 with `-fPIC` option, so delete `--disable-shared` from MiniPortile#configure_defaults
26
+ recipe.configure_options = ['--enable-lib-only', '--enable-static', "--host=#{recipe.host}"]
27
+
28
+ recipe.files << {
29
+ url: 'https://github.com/nghttp2/nghttp2/releases/download/v1.34.0/nghttp2-1.34.0.tar.gz',
30
+ sha1: '2d0ad93a254a7a6e6c737f2fd2e10e4810a41f74',
31
+ }
32
+ recipe.cook
33
+
34
+ # `recipe.activate` uses invalid path for this package.
35
+ $LIBPATH = ["#{recipe.path}/lib"] + $LIBPATH
36
+ $CPPFLAGS << " -I#{recipe.path}/include"
37
+ $LIBS << " -lnghttp2 -lstdc++"
14
38
  end
15
39
 
40
+ abort 'nghttp2/nghttp2.h not found' unless have_header('nghttp2/nghttp2.h')
41
+ abort 'libnghttp2 not found' unless have_library('nghttp2')
42
+
16
43
  create_makefile 'ds9'
data/lib/ds9.rb CHANGED
@@ -1,9 +1,8 @@
1
1
  require 'ds9.so'
2
2
  require 'stringio'
3
+ require 'ds9/version'
3
4
 
4
5
  module DS9
5
- VERSION = '1.3.0'
6
-
7
6
  module Frames
8
7
  class Frame
9
8
  Header = Struct.new :length, :stream_id, :type, :flags
@@ -0,0 +1,3 @@
1
+ module DS9
2
+ VERSION = '1.3.1'
3
+ end
@@ -0,0 +1,68 @@
1
+ require 'helper'
2
+
3
+ class TestServer < DS9::TestCase
4
+ def test_submit_response
5
+ server, client = pipe do |req, res|
6
+ refute req.stream.stream_remote_closed?(req.stream_id)
7
+ refute req.stream.stream_local_closed?(req.stream_id)
8
+ res.submit_response([[':status', '200'],
9
+ ['server', 'test server'],
10
+ ['date', 'Sat, 27 Jun 2015 17:29:21 GMT']])
11
+ res.finish('omglol')
12
+ end
13
+
14
+ s = Thread.new { server.run }
15
+ c = Thread.new { client.run }
16
+
17
+ client.submit_request([[':method', 'GET'],
18
+ [':path', '/'],
19
+ [':scheme', 'https'],
20
+ [':authority', ['localhost', '8080'].join(':')],
21
+ ['accept', '*/*'],
22
+ ['user-agent', 'test']])
23
+
24
+ responses = []
25
+ while (response = client.responses.pop)
26
+ responses << response
27
+ if responses.length == 1
28
+ client.terminate_session DS9::NO_ERROR
29
+ end
30
+ end
31
+
32
+ s.join
33
+ c.join
34
+ assert_equal ['omglol'], responses.map(&:body).map(&:string)
35
+ end
36
+
37
+ def test_submit_headers
38
+ server, client = pipe do |req, res|
39
+ refute req.stream.stream_remote_closed?(req.stream_id)
40
+ refute req.stream.stream_local_closed?(req.stream_id)
41
+ res.submit_headers([[':status', '200'],
42
+ ['server', 'test server'],
43
+ ['date', 'Sat, 27 Jun 2015 17:29:21 GMT']])
44
+ end
45
+
46
+ s = Thread.new { server.run }
47
+ c = Thread.new { client.run }
48
+
49
+ client.submit_request([[':method', 'GET'],
50
+ [':path', '/'],
51
+ [':scheme', 'https'],
52
+ [':authority', ['localhost', '8080'].join(':')],
53
+ ['accept', '*/*'],
54
+ ['user-agent', 'test']])
55
+
56
+ responses = []
57
+ while (response = client.responses.pop)
58
+ responses << response
59
+ if responses.length == 1
60
+ client.terminate_session DS9::NO_ERROR
61
+ end
62
+ end
63
+
64
+ s.join
65
+ c.join
66
+ assert_equal [''], responses.map(&:body).map(&:string)
67
+ end
68
+ end
metadata CHANGED
@@ -1,103 +1,116 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ds9
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson
8
+ - Yuta Iwama
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2018-11-07 00:00:00.000000000 Z
12
+ date: 2015-07-06 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: minitest
15
+ name: mini_portile2
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - "~>"
18
+ - - ">="
18
19
  - !ruby/object:Gem::Version
19
- version: '5.11'
20
- type: :development
20
+ version: 2.2.0
21
+ type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
- - - "~>"
25
+ - - ">="
25
26
  - !ruby/object:Gem::Version
26
- version: '5.11'
27
+ version: 2.2.0
27
28
  - !ruby/object:Gem::Dependency
28
- name: rake-compiler
29
+ name: bundler
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - ">="
32
33
  - !ruby/object:Gem::Version
33
- version: 0.4.1
34
+ version: '0'
34
35
  type: :development
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
39
  - - ">="
39
40
  - !ruby/object:Gem::Version
40
- version: 0.4.1
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: minitest
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '5.7'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '5.7'
41
56
  - !ruby/object:Gem::Dependency
42
57
  name: rdoc
43
58
  requirement: !ruby/object:Gem::Requirement
44
59
  requirements:
45
- - - ">="
60
+ - - "~>"
46
61
  - !ruby/object:Gem::Version
47
62
  version: '4.0'
48
- - - "<"
49
- - !ruby/object:Gem::Version
50
- version: '7'
51
63
  type: :development
52
64
  prerelease: false
53
65
  version_requirements: !ruby/object:Gem::Requirement
54
66
  requirements:
55
- - - ">="
67
+ - - "~>"
56
68
  - !ruby/object:Gem::Version
57
69
  version: '4.0'
58
- - - "<"
59
- - !ruby/object:Gem::Version
60
- version: '7'
61
70
  - !ruby/object:Gem::Dependency
62
- name: hoe
71
+ name: rake-compiler
63
72
  requirement: !ruby/object:Gem::Requirement
64
73
  requirements:
65
- - - "~>"
74
+ - - ">="
66
75
  - !ruby/object:Gem::Version
67
- version: '3.17'
76
+ version: 1.0.5
68
77
  type: :development
69
78
  prerelease: false
70
79
  version_requirements: !ruby/object:Gem::Requirement
71
80
  requirements:
72
- - - "~>"
81
+ - - ">="
73
82
  - !ruby/object:Gem::Version
74
- version: '3.17'
83
+ version: 1.0.5
75
84
  description: |-
76
- This library allows you to write HTTP/2 clients and servers. It is a wrapper
85
+ This library allows you to write HTTP/2 clients and servers. It is a wrapper
77
86
  around nghttp2.
78
87
  email:
79
88
  - tenderlove@ruby-lang.org
89
+ - ganmacs@gmail.com
80
90
  executables: []
81
91
  extensions:
82
92
  - ext/ds9/extconf.rb
83
93
  extra_rdoc_files:
84
94
  - CHANGELOG.md
85
- - Manifest.txt
86
95
  - README.md
87
96
  files:
88
97
  - ".autotest"
98
+ - ".gitignore"
89
99
  - CHANGELOG.md
90
- - Manifest.txt
100
+ - Gemfile
91
101
  - README.md
92
102
  - Rakefile
103
+ - ds9.gemspec
93
104
  - ext/ds9/ds9.c
94
105
  - ext/ds9/ds9.h
95
106
  - ext/ds9/ds9_frames.c
96
107
  - ext/ds9/extconf.rb
97
108
  - lib/ds9.rb
109
+ - lib/ds9/version.rb
98
110
  - test/helper.rb
99
111
  - test/test_client.rb
100
112
  - test/test_ds9.rb
113
+ - test/test_server.rb
101
114
  homepage: https://github.com/tenderlove/ds9
102
115
  licenses:
103
116
  - MIT
@@ -112,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
125
  requirements:
113
126
  - - ">="
114
127
  - !ruby/object:Gem::Version
115
- version: 2.2.2
128
+ version: 2.3.0
116
129
  required_rubygems_version: !ruby/object:Gem::Requirement
117
130
  requirements:
118
131
  - - ">="
@@ -1,13 +0,0 @@
1
- .autotest
2
- CHANGELOG.md
3
- Manifest.txt
4
- README.md
5
- Rakefile
6
- ext/ds9/ds9.c
7
- ext/ds9/ds9.h
8
- ext/ds9/ds9_frames.c
9
- ext/ds9/extconf.rb
10
- lib/ds9.rb
11
- test/helper.rb
12
- test/test_client.rb
13
- test/test_ds9.rb