falcon 0.46.1 → 0.47.1

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