tipi 0.36 → 0.37

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: 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