tipi 0.36 → 0.37

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: 82a6e09e9b1777016ef5da412c7e60d7224c8ea4d2839b486f02ccda2774d522
4
- data.tar.gz: 0d2ae87d9c2525432417699553670503528e52a6ca3c0d400e8a7a0bfeae0142
3
+ metadata.gz: 4129b10a7f6b5fb92e4e4784bf8cfd12ea2659840b616b7627bf28d1dc423e87
4
+ data.tar.gz: 7f5f71c4a870e33c7de84fd292568b3aca582dcc1adc9496d99e636328b3df4b
5
5
  SHA512:
6
- metadata.gz: db5d80d15a5fc164b09461fe91bb0a35549910f6e7783583f0df838c3d5d5379b797cb67bd7d19236b9a5388a2ba1957fa081092ca103643cd028d475668cfcd
7
- data.tar.gz: f9d965dcc195568900d3a772892925bea90fc45b8e8a5e8ad4c0370323a388b26c66e6a85fc629c73d9b028caebc4f6bf27c430991ba9e1e2dd4335fce98bc6a
6
+ metadata.gz: c1bfcbf1cdf4fa2868554e690a71543d89a37bf2d8cfa27cf604e453fb411d5b1dd2e4bc10678cbe79db6a94238ffef1a09e53771f7e8d8e71f2512b87f7265a
7
+ data.tar.gz: 4f476a65800ffb6cbcdfde6e10ed9e1dd7b9fcc4ddd69ad2babed1a747cba4f94e05659cbd235c1f7e71e1595851d77896262d45d1036d216d866b7bdc3f914a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.37 2021-02-15
2
+
3
+ * Update upgrade mechanism to work with updated Qeweney API
4
+
1
5
  ## 0.36 2021-02-12
2
6
 
3
7
  * Use `Qeweney::Status` constants
data/Gemfile.lock CHANGED
@@ -1,12 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tipi (0.36)
4
+ tipi (0.37)
5
5
  http-2 (~> 0.10.0)
6
6
  http_parser.rb (~> 0.6.0)
7
7
  msgpack (~> 1.4.2)
8
8
  polyphony (~> 0.51.0)
9
- qeweney (~> 0.3)
9
+ qeweney (~> 0.5)
10
10
  rack (>= 2.0.8, < 2.3.0)
11
11
  websocket (~> 1.2.8)
12
12
 
@@ -29,7 +29,7 @@ GEM
29
29
  ruby-progressbar
30
30
  msgpack (1.4.2)
31
31
  polyphony (0.51.0)
32
- qeweney (0.3)
32
+ qeweney (0.5)
33
33
  escape_utils (~> 1.2.1)
34
34
  rack (2.2.3)
35
35
  rake (12.3.3)
data/e ADDED
File without changes
@@ -27,7 +27,8 @@ puts 'Listening on port 4411...'
27
27
 
28
28
  Tipi.serve('0.0.0.0', 4411, opts) do |req|
29
29
  if req.upgrade_protocol == 'websocket'
30
- ws_handler(Tipi::Websocket.new(req.adapter.conn, req.headers))
30
+ conn = req.upgrade_to_websocket
31
+ ws_handler(conn)
31
32
  else
32
33
  req.respond(HTML, 'Content-Type' => 'text/html')
33
34
  end
@@ -131,6 +131,14 @@ module Tipi
131
131
  # protocols, notably WebSocket, can be specified by passing a hash to the
132
132
  # :upgrade option when starting a server:
133
133
  #
134
+ # def ws_handler(conn)
135
+ # conn << 'hi'
136
+ # msg = conn.recv
137
+ # conn << "You said #{msg}"
138
+ # conn << 'bye'
139
+ # conn.close
140
+ # end
141
+ #
134
142
  # opts = {
135
143
  # upgrade: {
136
144
  # websocket: Tipi::Websocket.handler(&method(:ws_handler))
@@ -154,7 +162,7 @@ module Tipi
154
162
 
155
163
  def upgrade_with_handler(handler, headers)
156
164
  @parser = @requests_head = @requests_tail = nil
157
- handler.(@conn, headers)
165
+ handler.(self, headers)
158
166
  true
159
167
  end
160
168
 
@@ -173,6 +181,10 @@ module Tipi
173
181
  ':authority' => headers['host']
174
182
  )
175
183
  end
184
+
185
+ def websocket_connection(req)
186
+ Tipi::Websocket.new(@conn, req.headers)
187
+ end
176
188
 
177
189
  # response API
178
190
 
data/lib/tipi/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tipi
4
- VERSION = '0.36'
4
+ VERSION = '0.37'
5
5
  end
@@ -7,32 +7,17 @@ module Tipi
7
7
  # Websocket connection
8
8
  class Websocket
9
9
  def self.handler(&block)
10
- proc { |conn, headers|
11
- block.(new(conn, headers))
12
- }
13
- end
10
+ proc do |adapter, headers|
11
+ req = Qeweney::Request.new(headers, adapter)
12
+ websocket = req.upgrade_to_websocket
13
+ block.(websocket)
14
+ end
15
+ end
14
16
 
15
17
  def initialize(conn, headers)
16
18
  @conn = conn
17
19
  @headers = headers
18
- setup(headers)
19
- end
20
-
21
- S_WS_GUID = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'
22
- UPGRADE_RESPONSE = <<~HTTP.gsub("\n", "\r\n")
23
- HTTP/1.1 101 Switching Protocols
24
- Upgrade: websocket
25
- Connection: Upgrade
26
- Sec-WebSocket-Accept: %<accept>s
27
-
28
- HTTP
29
-
30
- def setup(headers)
31
- key = headers['sec-websocket-key']
32
20
  @version = headers['sec-websocket-version'].to_i
33
- accept = Digest::SHA1.base64digest([key, S_WS_GUID].join)
34
- @conn << format(UPGRADE_RESPONSE, accept: accept)
35
-
36
21
  @reader = ::WebSocket::Frame::Incoming::Server.new(version: @version)
37
22
  end
38
23
 
@@ -64,8 +49,10 @@ module Tipi
64
49
  end
65
50
  end
66
51
 
52
+ OutgoingFrame = ::WebSocket::Frame::Outgoing::Server
53
+
67
54
  def send(data)
68
- frame = ::WebSocket::Frame::Outgoing::Server.new(
55
+ frame = OutgoingFrame.new(
69
56
  version: @version, data: data, type: :text
70
57
  )
71
58
  @conn << frame.to_s
data/tipi.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.executables = ['tipi']
21
21
 
22
22
  s.add_runtime_dependency 'polyphony', '~>0.51.0'
23
- s.add_runtime_dependency 'qeweney', '~>0.3'
23
+ s.add_runtime_dependency 'qeweney', '~>0.5'
24
24
 
25
25
  s.add_runtime_dependency 'http_parser.rb', '~>0.6.0'
26
26
  s.add_runtime_dependency 'http-2', '~>0.10.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tipi
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.36'
4
+ version: '0.37'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-12 00:00:00.000000000 Z
11
+ date: 2021-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: polyphony
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.3'
33
+ version: '0.5'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.3'
40
+ version: '0.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: http_parser.rb
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -214,6 +214,7 @@ files:
214
214
  - df/ws_page.html
215
215
  - docs/README.md
216
216
  - docs/tipi-logo.png
217
+ - e
217
218
  - examples/cuba.ru
218
219
  - examples/hanami-api.ru
219
220
  - examples/hello.ru