dagger 2.1.1 → 2.3.0
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 +4 -4
- data/.gitignore +2 -0
- data/dagger.gemspec +1 -0
- data/lib/dagger/connection_manager.rb +3 -1
- data/lib/dagger/version.rb +2 -2
- data/lib/dagger.rb +20 -26
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10733130d8f24aa8ba7fb7e27837fdc34ab854348aed2e82a09347c039689b2d
|
4
|
+
data.tar.gz: 9e3c600a111cdd1cf7090b8b48aa1103fa48e1f763588623902a9bb9daa704b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1d486fd374676a0f1892dfc98e89048729941a4ba10c0f207ebc87fefc100fe3ed172b31a3ba9d238124c1d8d8dfd01d3deda79b06eb93e7a60c04d67fbf7c6
|
7
|
+
data.tar.gz: fefd2e08f939a0dcfe8ba1c52c8e07c20eda4cdf921d120393cd4e52ade3002180ef29329ce2f9f1085ad27e2785cf76dc00a90cc499ba3724ac057a487c46b4
|
data/.gitignore
CHANGED
data/dagger.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_development_dependency "rspec-mocks"
|
20
20
|
s.add_development_dependency "rspec-expectations"
|
21
21
|
|
22
|
+
s.add_runtime_dependency "net-http-persistent", ">= 3.0"
|
22
23
|
s.add_runtime_dependency "oj", ">= 2.1"
|
23
24
|
s.add_runtime_dependency "ox", ">= 2.4"
|
24
25
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# unused (we're using Net::HTTP::Persistent again)
|
2
|
+
|
1
3
|
module Dagger
|
2
4
|
|
3
5
|
class ConnectionManager
|
@@ -41,7 +43,7 @@ module Dagger
|
|
41
43
|
|
42
44
|
# Executes an HTTP request to the given URI with the given method. Also
|
43
45
|
# allows a request body, headers, and query string to be specified.
|
44
|
-
def
|
46
|
+
def request(uri, request)
|
45
47
|
connection = connection_for(uri)
|
46
48
|
@mutex.synchronize do
|
47
49
|
begin
|
data/lib/dagger/version.rb
CHANGED
data/lib/dagger.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'dagger/version'
|
2
2
|
require 'dagger/response'
|
3
3
|
require 'dagger/parsers'
|
4
|
-
require '
|
4
|
+
require 'net/http/persistent'
|
5
|
+
# require 'dagger/connection_manager' # unused
|
5
6
|
require 'net/https'
|
6
7
|
require 'base64'
|
7
8
|
require 'erb'
|
@@ -47,6 +48,7 @@ module Dagger
|
|
47
48
|
end
|
48
49
|
|
49
50
|
def self.encode_body(obj, opts = {})
|
51
|
+
return if obj.nil? || obj.empty?
|
50
52
|
if obj.is_a?(String)
|
51
53
|
obj
|
52
54
|
elsif opts[:json]
|
@@ -78,25 +80,20 @@ module Dagger
|
|
78
80
|
|
79
81
|
class Client
|
80
82
|
|
81
|
-
def self.init_persistent(opts = {})
|
82
|
-
# this line below forces one connection manager between multiple threads
|
83
|
-
# @persistent ||= Dagger::ConnectionManager.new(opts)
|
84
|
-
|
85
|
-
# here we initialize a connection manager for each thread
|
86
|
-
Thread.current[:dagger_persistent] ||= begin
|
87
|
-
Dagger::ConnectionManager.new(opts)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
83
|
def self.init_connection(uri, opts = {})
|
92
|
-
http =
|
84
|
+
http = if opts.delete(:persistent)
|
85
|
+
pool_size = opts[:pool_size] || Net::HTTP::Persistent::DEFAULT_POOL_SIZE
|
86
|
+
Net::HTTP::Persistent.new(name: DAGGER_NAME, pool_size: pool_size)
|
87
|
+
else
|
88
|
+
Net::HTTP.new(opts[:ip] || uri.host, uri.port)
|
89
|
+
end
|
93
90
|
|
94
91
|
if uri.port == 443 || uri.scheme == 'https'
|
95
92
|
http.use_ssl = true if http.respond_to?(:use_ssl=) # persistent does it automatically
|
96
93
|
http.verify_mode = opts[:verify_ssl] === false ? OpenSSL::SSL::VERIFY_NONE : OpenSSL::SSL::VERIFY_PEER
|
97
94
|
end
|
98
95
|
|
99
|
-
[:
|
96
|
+
[:open_timeout, :read_timeout, :ssl_version, :ciphers].each do |key|
|
100
97
|
http.send("#{key}=", opts[key] || DEFAULTS[key]) if (opts.has_key?(key) || DEFAULTS.has_key?(key))
|
101
98
|
end
|
102
99
|
|
@@ -105,12 +102,7 @@ module Dagger
|
|
105
102
|
|
106
103
|
def self.init(uri, opts)
|
107
104
|
uri = Utils.parse_uri(uri)
|
108
|
-
|
109
|
-
http = if opts.delete(:persistent)
|
110
|
-
init_persistent(opts)
|
111
|
-
else
|
112
|
-
init_connection(uri, opts)
|
113
|
-
end
|
105
|
+
http = init_connection(uri, opts)
|
114
106
|
|
115
107
|
new(http, uri.scheme_and_host)
|
116
108
|
end
|
@@ -129,22 +121,24 @@ module Dagger
|
|
129
121
|
opts[:follow] = 10 if opts[:follow] == true
|
130
122
|
headers = opts[:headers] || {}
|
131
123
|
headers['Accept'] = 'application/json' if opts[:json] && headers['Accept'].nil?
|
132
|
-
headers['Content-Type'] = 'application/json' if opts[:json] && opts[:body]
|
124
|
+
headers['Content-Type'] = 'application/json' if opts[:json] && opts[:body] && opts[:body].size > 0
|
133
125
|
|
134
126
|
if opts[:ip]
|
135
127
|
headers['Host'] = uri.host
|
136
128
|
uri = opts[:ip]
|
137
129
|
end
|
138
130
|
|
131
|
+
debug { "Sending GET request to #{uri.request_uri} with headers #{headers.inspect} -- #{opts[:body]}" }
|
132
|
+
|
139
133
|
request = Net::HTTP::Get.new(uri, DEFAULT_HEADERS.merge(headers))
|
140
134
|
request.basic_auth(opts.delete(:username), opts.delete(:password)) if opts[:username]
|
141
|
-
request.body = Utils.encode_body(opts[:body], opts) if opts[:body]
|
135
|
+
request.body = Utils.encode_body(opts[:body], opts) if opts[:body] && opts[:body].size > 0
|
142
136
|
|
143
137
|
if @http.respond_to?(:started?) # regular Net::HTTP
|
144
138
|
@http.start unless @http.started?
|
145
139
|
resp, data = @http.request(request)
|
146
140
|
else # persistent
|
147
|
-
resp, data = @http.
|
141
|
+
resp, data = @http.request(uri, request)
|
148
142
|
end
|
149
143
|
|
150
144
|
if REDIRECT_CODES.include?(resp.code.to_i) && resp['Location'] && (opts[:follow] && opts[:follow] > 0)
|
@@ -209,7 +203,7 @@ module Dagger
|
|
209
203
|
end
|
210
204
|
|
211
205
|
start = Time.now
|
212
|
-
debug { "Sending #{method} request to #{uri.request_uri} with headers #{headers.inspect} -- #{
|
206
|
+
debug { "Sending #{method} request to #{uri.request_uri} with headers #{headers.inspect} -- #{data}" }
|
213
207
|
|
214
208
|
if @http.respond_to?(:started?) # regular Net::HTTP
|
215
209
|
args = [method.to_s.downcase, uri.request_uri, body, headers]
|
@@ -220,7 +214,7 @@ module Dagger
|
|
220
214
|
else # Net::HTTP::Persistent
|
221
215
|
req = Kernel.const_get("Net::HTTP::#{method.capitalize}").new(uri.request_uri, headers)
|
222
216
|
req.body = body
|
223
|
-
resp, data = @http.
|
217
|
+
resp, data = @http.request(uri, req)
|
224
218
|
end
|
225
219
|
|
226
220
|
debug { "Got response #{resp.code} in #{(Time.now - start).round(2)}s: #{data || resp.body}" }
|
@@ -244,7 +238,7 @@ module Dagger
|
|
244
238
|
end
|
245
239
|
|
246
240
|
def open(&block)
|
247
|
-
if @http.is_a?(
|
241
|
+
if @http.is_a?(Net::HTTP::Persistent)
|
248
242
|
instance_eval(&block)
|
249
243
|
else
|
250
244
|
@http.start do
|
@@ -254,7 +248,7 @@ module Dagger
|
|
254
248
|
end
|
255
249
|
|
256
250
|
def close
|
257
|
-
if @http.is_a?(
|
251
|
+
if @http.is_a?(Net::HTTP::Persistent)
|
258
252
|
@http.shutdown # calls finish on pool connections
|
259
253
|
else
|
260
254
|
@http.finish if @http.started?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dagger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomás Pollak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: net-http-persistent
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: oj
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|