falcon 0.46.1 → 0.47.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
  SHA256:
3
- metadata.gz: ab60da5c2573da0b0d2c0958898fb68dacf19a2e88e1fd9a563823e2baa7633e
4
- data.tar.gz: 05cbda0911c79c6fe3c4abb6bd44be1d286f664bf57a61329588debfa337a01b
3
+ metadata.gz: afae07cb03f2c1966050a313f8a5be2cd26fde0ad9d3d1ab1ff3eb091271f29d
4
+ data.tar.gz: 53b781ad1cd3f49414eca991ac09efb281c96c7daa55d708c429d036e911d349
5
5
  SHA512:
6
- metadata.gz: 6a2aa0bd1c6ff91a5f0a25570cf02c37207be7a468b8227f69a4db1224dde7abf25f4263a72369a22714426f8783b446f50b25655f0e9c4e6123b4b5496b7f25
7
- data.tar.gz: 76c9579c200f77268264baafccaa2652272df607ce8bb5997a6be757809112971724028b3852bf2eced35c1c26600747949a17ffcb07c3ba7143086a84799084
6
+ metadata.gz: '088b7b78b93930ab04c21e978050f46830ee38931773f91ff8635b74f5c5fb9a7cdd7892c107f3540baa6d3bbf1ea93b21dd9931c6cf9e2835184a4ebc3dc4fe'
7
+ data.tar.gz: 99199297af5faf6cd5c7dcc3bb4f081781a4876f6c45ec8370596ca3e6d614ac79c56a3fd297df109434102baaea489711472e023c35e18f276cee8648df896d
checksums.yaml.gz.sig CHANGED
Binary file
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2019-2023, by Samuel Williams.
4
+ # Copyright, 2019-2024, by Samuel Williams.
5
5
 
6
6
  require 'samovar'
7
7
  require 'async'
8
8
  require 'json'
9
9
 
10
- require 'async/io/stream'
11
- require 'async/io/unix_endpoint'
10
+ require 'io/endpoint/unix_endpoint'
11
+ require 'io/stream'
12
12
 
13
13
  module Falcon
14
14
  module Command
@@ -43,7 +43,7 @@ module Falcon
43
43
  stream.puts({please: 'metrics'}.to_json, separator: "\0")
44
44
  response = JSON.parse(stream.gets("\0"), symbolize_names: true)
45
45
 
46
- pp response
46
+ $stdout.puts response
47
47
  end
48
48
  end
49
49
 
@@ -57,16 +57,14 @@ module Falcon
57
57
 
58
58
  # The endpoint the supervisor is bound to.
59
59
  def endpoint
60
- Async::IO::Endpoint.unix(@options[:path])
60
+ ::IO::Endpoint.unix(@options[:path])
61
61
  end
62
62
 
63
63
  # Connect to the supervisor and execute the requested command.
64
64
  def call
65
- Async do
65
+ Sync do
66
66
  endpoint.connect do |socket|
67
- stream = Async::IO::Stream.new(socket)
68
-
69
- @command.call(stream)
67
+ @command.call(IO::Stream(socket))
70
68
  end
71
69
  end
72
70
  end
@@ -41,7 +41,7 @@ module Falcon
41
41
  end
42
42
 
43
43
  # The endpoint that will be used for communicating with the application server.
44
- # @returns [Async::IO::Endpoint]
44
+ # @returns [::Falcon::ProxyEndpoint]
45
45
  def endpoint
46
46
  ::Falcon::ProxyEndpoint.unix(ipc_path,
47
47
  protocol: protocol,
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2019-2024, by Samuel Williams.
4
+ # Copyright, 2020-2024, by Samuel Williams.
5
5
 
6
6
  require_relative 'server'
7
7
  require_relative '../tls'
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2019-2024, by Samuel Williams.
4
+ # Copyright, 2024, by Samuel Williams.
5
5
 
6
6
  require_relative 'application'
7
7
  require_relative 'rackup'
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2024, by Samuel Williams.
4
+ # Copyright, 2020-2024, by Samuel Williams.
5
5
 
6
6
  require 'rack/builder'
7
7
  require_relative '../server'
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2024, by Samuel Williams.
4
+ # Copyright, 2020-2024, by Samuel Williams.
5
5
 
6
6
  require 'async/service/generic'
7
7
  require 'async/http/endpoint'
@@ -23,9 +23,9 @@ module Falcon
23
23
  end
24
24
 
25
25
  # The endpoint the supervisor will bind to.
26
- # @returns [Async::IO::Endpoint]
26
+ # @returns [::IO::Endpoint::Generic]
27
27
  def endpoint
28
- Async::IO::Endpoint.unix(ipc_path)
28
+ ::IO::Endpoint.unix(ipc_path)
29
29
  end
30
30
 
31
31
  # The service class to use for the supervisor.
@@ -3,13 +3,13 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2019-2023, by Samuel Williams.
5
5
 
6
- require 'async/io/unix_endpoint'
6
+ require 'io/endpoint/unix_endpoint'
7
7
 
8
8
  module Falcon
9
9
  # An endpoint suitable for proxing requests, typically via a unix pipe.
10
- class ProxyEndpoint < Async::IO::Endpoint
10
+ class ProxyEndpoint < ::IO::Endpoint::Generic
11
11
  # Initialize the proxy endpoint.
12
- # @parameter endpoint [Async::IO::Endpoint] The endpoint which will be used for connecting/binding.
12
+ # @parameter endpoint [::IO::Endpoint::Generic] The endpoint which will be used for connecting/binding.
13
13
  def initialize(endpoint, **options)
14
14
  super(**options)
15
15
 
@@ -21,7 +21,7 @@ module Falcon
21
21
  end
22
22
 
23
23
  # The actual endpoint for I/O.
24
- # @attribute [Async::IO::Endpoint]
24
+ # @attribute [::IO::Endpoint::Generic]
25
25
  attr :endpoint
26
26
 
27
27
  # The protocol to use for this connection.
@@ -69,7 +69,7 @@ module Falcon
69
69
  # Create a proxy unix endpoint with the specific path.
70
70
  # @returns [ProxyEndpoint]
71
71
  def self.unix(path, **options)
72
- self.new(::Async::IO::Endpoint.unix(path), **options)
72
+ self.new(::IO::Endpoint.unix(path), **options)
73
73
  end
74
74
  end
75
75
  end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2023, by Samuel Williams.
5
+
6
+ require 'rackup/handler'
7
+
8
+ require_relative '../../falcon'
9
+
10
+ require 'kernel/sync'
11
+ require 'io/endpoint/host_endpoint'
12
+
13
+ module Falcon
14
+ module Rackup
15
+ # The falcon adaptor for the `rackup` executable.
16
+ class Handler
17
+ # The default scheme.
18
+ SCHEME = "http"
19
+
20
+ # Generate an endpoint for the given `rackup` options.
21
+ # @returns [::IO::Endpoint::HostEndpoint]
22
+ def self.endpoint_for(**options)
23
+ host = options[:Host] || 'localhost'
24
+ port = Integer(options[:Port] || 9292)
25
+
26
+ return ::IO::Endpoint.tcp(host, port)
27
+ end
28
+
29
+ # Run the specified app using the given options:
30
+ # @parameter app [Object] The rack middleware.
31
+ def self.run(app, **options)
32
+ app = ::Protocol::Rack::Adapter.new(app)
33
+
34
+ Sync do |task|
35
+ endpoint = endpoint_for(**options)
36
+ server = ::Falcon::Server.new(app, endpoint, protocol: Async::HTTP::Protocol::HTTP1, scheme: SCHEME)
37
+
38
+ server_task = server.run
39
+
40
+ wrapper = self.new(server, task)
41
+
42
+ yield wrapper if block_given?
43
+
44
+ server_task.wait
45
+ ensure
46
+ server_task.stop
47
+ wrapper.close
48
+ end
49
+ end
50
+
51
+ def initialize(server, task)
52
+ @server = server
53
+ @task = task
54
+
55
+ @notification = Thread::Queue.new
56
+
57
+ @waiter = @task.async(transient: true) do
58
+ @notification.pop
59
+
60
+ @task&.stop
61
+ @task = nil
62
+ end
63
+ end
64
+
65
+ def stop
66
+ @notification&.push(true)
67
+ end
68
+
69
+ def close
70
+ @notification&.close
71
+ @notification = nil
72
+
73
+ @waiter&.stop
74
+ @waiter = nil
75
+ end
76
+ end
77
+ end
78
+ end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2024, by Samuel Williams.
5
- # Copyright, 2020, by Michael Adams.
4
+ # Copyright, 2019-2024, by Samuel Williams.
5
+ # Copyright, 2020, by Daniel Evans.
6
6
 
7
7
  require 'async/service/generic'
8
8
  require 'async/http/endpoint'
@@ -6,8 +6,6 @@
6
6
  require 'process/metrics'
7
7
  require 'json'
8
8
 
9
- require 'async/io/endpoint'
10
- require 'async/io/shared_endpoint'
11
9
  require 'async/service/generic'
12
10
 
13
11
  module Falcon
@@ -71,7 +69,7 @@ module Falcon
71
69
  container.run(name: self.name, restart: true, count: 1) do |instance|
72
70
  Async do
73
71
  @bound_endpoint.accept do |peer|
74
- stream = Async::IO::Stream.new(peer)
72
+ stream = ::IO::Stream.new(peer)
75
73
 
76
74
  while message = stream.gets("\0")
77
75
  response = handle(JSON.parse(message, symbolize_names: true))
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2024, by Samuel Williams.
4
+ # Copyright, 2020-2024, by Samuel Williams.
5
5
 
6
6
  require 'async/service/generic'
7
7
 
@@ -4,5 +4,5 @@
4
4
  # Copyright, 2017-2024, by Samuel Williams.
5
5
 
6
6
  module Falcon
7
- VERSION = "0.46.1"
7
+ VERSION = "0.47.1"
8
8
  end
@@ -1,84 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2017-2023, by Samuel Williams.
5
- # Copyright, 2019, by Bryan Powell.
4
+ # Copyright, 2023, by Samuel Williams.
6
5
 
7
6
  require 'rack/handler'
8
7
 
9
- require_relative '../../falcon'
10
-
11
- require 'kernel/sync'
12
- require 'async/io/host_endpoint'
13
- require 'async/io/notification'
8
+ require_relative '../../falcon/rackup/handler'
14
9
 
15
10
  module Rack
16
11
  module Handler
17
- # The falcon adaptor for the `rackup` executable.
18
- class Falcon
19
- # The default scheme.
20
- SCHEME = "http"
21
-
22
- # Generate an endpoint for the given `rackup` options.
23
- # @returns [Async::IO::Endpoint]
24
- def self.endpoint_for(**options)
25
- host = options[:Host] || 'localhost'
26
- port = Integer(options[:Port] || 9292)
27
-
28
- return Async::IO::Endpoint.tcp(host, port)
29
- end
30
-
31
- # Run the specified app using the given options:
32
- # @parameter app [Object] The rack middleware.
33
- def self.run(app, **options)
34
- app = ::Protocol::Rack::Adapter.new(app)
35
-
36
- Sync do |task|
37
- endpoint = endpoint_for(**options)
38
- server = ::Falcon::Server.new(app, endpoint, protocol: Async::HTTP::Protocol::HTTP1, scheme: SCHEME)
39
-
40
- server_task = task.async do
41
- server.run.each(&:wait)
42
- end
43
-
44
- wrapper = self.new(server, task)
45
-
46
- yield wrapper if block_given?
47
-
48
- server_task.wait
49
- ensure
50
- server_task.stop
51
- wrapper.close
52
- end
53
- end
54
-
55
- def initialize(server, task)
56
- @server = server
57
- @task = task
58
-
59
- @notification = Async::IO::Notification.new
60
-
61
- @waiter = @task.async(transient: true) do
62
- @notification.wait
63
-
64
- @task&.stop
65
- @task = nil
66
- end
67
- end
68
-
69
- def stop
70
- @notification&.signal
71
- end
72
-
73
- def close
74
- @notification&.close
75
- @notification = nil
76
-
77
- @waiter&.stop
78
- @waiter = nil
79
- end
80
- end
81
-
12
+ Falcon = ::Falcon::Rackup::Handler
82
13
  register :falcon, Falcon
83
14
  end
84
15
  end
@@ -5,79 +5,11 @@
5
5
 
6
6
  require 'rackup/handler'
7
7
 
8
- require_relative '../../falcon'
9
-
10
- require 'kernel/sync'
11
- require 'async/io/host_endpoint'
12
- require 'async/io/notification'
8
+ require_relative '../../falcon/rackup/handler'
13
9
 
14
10
  module Rackup
15
11
  module Handler
16
- # The falcon adaptor for the `rackup` executable.
17
- class Falcon
18
- # The default scheme.
19
- SCHEME = "http"
20
-
21
- # Generate an endpoint for the given `rackup` options.
22
- # @returns [Async::IO::Endpoint]
23
- def self.endpoint_for(**options)
24
- host = options[:Host] || 'localhost'
25
- port = Integer(options[:Port] || 9292)
26
-
27
- return Async::IO::Endpoint.tcp(host, port)
28
- end
29
-
30
- # Run the specified app using the given options:
31
- # @parameter app [Object] The rack middleware.
32
- def self.run(app, **options)
33
- app = ::Protocol::Rack::Adapter.new(app)
34
-
35
- Sync do |task|
36
- endpoint = endpoint_for(**options)
37
- server = ::Falcon::Server.new(app, endpoint, protocol: Async::HTTP::Protocol::HTTP1, scheme: SCHEME)
38
-
39
- server_task = task.async do
40
- server.run.each(&:wait)
41
- end
42
-
43
- wrapper = self.new(server, task)
44
-
45
- yield wrapper if block_given?
46
-
47
- server_task.wait
48
- ensure
49
- server_task.stop
50
- wrapper.close
51
- end
52
- end
53
-
54
- def initialize(server, task)
55
- @server = server
56
- @task = task
57
-
58
- @notification = Async::IO::Notification.new
59
-
60
- @waiter = @task.async(transient: true) do
61
- @notification.wait
62
-
63
- @task&.stop
64
- @task = nil
65
- end
66
- end
67
-
68
- def stop
69
- @notification&.signal
70
- end
71
-
72
- def close
73
- @notification&.close
74
- @notification = nil
75
-
76
- @waiter&.stop
77
- @waiter = nil
78
- end
79
- end
80
-
12
+ Falcon = ::Falcon::Rackup::Handler
81
13
  register :falcon, Falcon
82
14
  end
83
15
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: falcon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.46.1
4
+ version: 0.47.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  - Janko Marohnić
9
9
  - Bryan Powell
10
+ - Trevor Turk
10
11
  - Claudiu Garba
11
12
  - Kyle Tam
12
13
  - Mitsutaka Mimura
13
14
  - Sho Ito
14
- - Trevor Turk
15
15
  - Colby Swandale
16
16
  - Daniel Evans
17
17
  - Kent Gruber
@@ -57,7 +57,7 @@ cert_chain:
57
57
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
58
58
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
59
59
  -----END CERTIFICATE-----
60
- date: 2024-04-24 00:00:00.000000000 Z
60
+ date: 2024-04-30 00:00:00.000000000 Z
61
61
  dependencies:
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: async
@@ -93,14 +93,20 @@ dependencies:
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.57'
96
+ version: '0.66'
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 0.66.2
97
100
  type: :runtime
98
101
  prerelease: false
99
102
  version_requirements: !ruby/object:Gem::Requirement
100
103
  requirements:
101
104
  - - "~>"
102
105
  - !ruby/object:Gem::Version
103
- version: '0.57'
106
+ version: '0.66'
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 0.66.2
104
110
  - !ruby/object:Gem::Dependency
105
111
  name: async-http-cache
106
112
  requirement: !ruby/object:Gem::Requirement
@@ -252,6 +258,7 @@ files:
252
258
  - lib/falcon/middleware/redirect.rb
253
259
  - lib/falcon/middleware/verbose.rb
254
260
  - lib/falcon/proxy_endpoint.rb
261
+ - lib/falcon/rackup/handler.rb
255
262
  - lib/falcon/railtie.rb
256
263
  - lib/falcon/server.rb
257
264
  - lib/falcon/service/server.rb
@@ -268,6 +275,7 @@ licenses:
268
275
  - MIT
269
276
  metadata:
270
277
  documentation_uri: https://socketry.github.io/falcon/
278
+ source_code_uri: https://github.com/socketry/falcon.git
271
279
  post_install_message:
272
280
  rdoc_options: []
273
281
  require_paths:
@@ -276,7 +284,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
276
284
  requirements:
277
285
  - - ">="
278
286
  - !ruby/object:Gem::Version
279
- version: '3.0'
287
+ version: '3.1'
280
288
  required_rubygems_version: !ruby/object:Gem::Requirement
281
289
  requirements:
282
290
  - - ">="
metadata.gz.sig CHANGED
Binary file