evil-client 3.0.2 → 3.0.3
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 +5 -5
- data/.rubocop.yml +3 -0
- data/.travis.yml +3 -3
- data/CHANGELOG.md +9 -0
- data/README.md +0 -3
- data/evil-client.gemspec +4 -4
- data/lib/evil/client.rb +1 -0
- data/lib/evil/client/chaining.rb +1 -0
- data/lib/evil/client/container/scope.rb +1 -0
- data/lib/evil/client/dictionary.rb +1 -0
- data/lib/evil/client/exceptions/name_error.rb +1 -0
- data/lib/evil/client/exceptions/type_error.rb +1 -0
- data/lib/evil/client/formatter.rb +1 -0
- data/lib/evil/client/formatter/part.rb +1 -1
- data/lib/evil/client/model.rb +2 -0
- data/lib/evil/client/names.rb +5 -1
- data/lib/evil/client/resolver.rb +3 -2
- data/lib/evil/client/resolver/format.rb +1 -0
- data/lib/evil/client/resolver/headers.rb +2 -1
- data/lib/evil/client/resolver/http_method.rb +1 -0
- data/lib/evil/client/resolver/query.rb +1 -0
- data/lib/evil/client/resolver/request.rb +14 -14
- data/lib/evil/client/resolver/uri.rb +2 -2
- data/spec/features/operation/request_spec.rb +4 -4
- data/spec/unit/connection_spec.rb +18 -18
- data/spec/unit/container/operation_spec.rb +13 -13
- data/spec/unit/container/scope_spec.rb +3 -3
- data/spec/unit/options_spec.rb +2 -2
- data/spec/unit/resolver/request_spec.rb +27 -27
- metadata +15 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a09063475a1c7e084ea6389379bf847ca36004665b8ed832640db8a17f2dbccf
|
4
|
+
data.tar.gz: 88cc43b7d39dea43701d458e32761b61a3d4adba3efdc6cccec38642aab02781
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c66c9cac1a9d00b55a3a6b778505badfef5245adafa74caf930e9d1d4506452851737fad37d9e31860965c3ba4285437ee9cfa4627f01bcd298b0158b406576d
|
7
|
+
data.tar.gz: 58331cb71c27f634f69d1fc50305af0d734466d635a34262c5ca14f9799ea44a65dcb8a6949254eaff6386e76b14e7496ee6022faf42d1a51147db4b4d055ade
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
sudo: false
|
3
3
|
language: ruby
|
4
4
|
cache: bundler
|
5
|
+
before_install: gem install bundler --no-document
|
5
6
|
script:
|
6
7
|
- bundle exec rspec
|
7
8
|
- bundle exec rubocop
|
8
9
|
rvm:
|
9
10
|
- '2.3.0'
|
10
|
-
- '2.4.0'
|
11
11
|
- ruby-head
|
12
|
-
- jruby-9.
|
12
|
+
- jruby-9.2.7.0
|
13
13
|
- jruby-head
|
14
|
-
before_install: gem install bundler -v 1.12.5
|
15
14
|
matrix:
|
16
15
|
allow_failures:
|
17
16
|
- rvm: ruby-head
|
18
17
|
- rvm: jruby-head
|
18
|
+
- rvm: truffleruby
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog], and this project adheres
|
5
5
|
to [Semantic Versioning].
|
6
6
|
|
7
|
+
## [3.0.3] [2019-05-06]
|
8
|
+
|
9
|
+
### Added
|
10
|
+
- Support of `dry-initializer` v3+ (nepalez)
|
11
|
+
|
12
|
+
### Fixed
|
13
|
+
- Don't remove ActiveSupport::Dependencies::Loadable methods (DarthSim)
|
14
|
+
- Fix name error base 64 (Andrey)
|
15
|
+
|
7
16
|
## [3.0.2] [2018-03-01]
|
8
17
|
|
9
18
|
### Changed
|
data/README.md
CHANGED
@@ -7,7 +7,6 @@ Human-friendly DSL for writing HTTP(s) clients in Ruby
|
|
7
7
|
|
8
8
|
[![Gem Version][gem-badger]][gem]
|
9
9
|
[![Build Status][travis-badger]][travis]
|
10
|
-
[![Dependency Status][gemnasium-badger]][gemnasium]
|
11
10
|
[![Code Climate][codeclimate-badger]][codeclimate]
|
12
11
|
[![Inline docs][inch-badger]][inch]
|
13
12
|
[![Documentation Status][readthedocs-badger]][readthedocs]
|
@@ -113,8 +112,6 @@ The gem is available as open source under the terms of the [MIT License](http://
|
|
113
112
|
[dry-initializer]: http://dry-rb.org/gems/dry-initializer
|
114
113
|
[gem-badger]: https://img.shields.io/gem/v/evil-client.svg?style=flat
|
115
114
|
[gem]: https://rubygems.org/gems/evil-client
|
116
|
-
[gemnasium-badger]: https://img.shields.io/gemnasium/evilmartians/evil-client.svg?style=flat
|
117
|
-
[gemnasium]: https://gemnasium.com/evilmartians/evil-client
|
118
115
|
[inch-badger]: http://inch-ci.org/github/evilmartians/evil-client.svg
|
119
116
|
[inch]: https://inch-ci.org/github/evilmartians/evil-client
|
120
117
|
[swagger]: http://swagger.io
|
data/evil-client.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |gem|
|
2
2
|
gem.name = "evil-client"
|
3
|
-
gem.version = "3.0.
|
3
|
+
gem.version = "3.0.3"
|
4
4
|
gem.author = ["Andrew Kozin (nepalez)", "Ravil Bairamgalin (brainopia)"]
|
5
5
|
gem.email = ["andrew.kozin@gmail.com", "nepalez@evilmartians.com"]
|
6
6
|
gem.homepage = "https://github.com/evilmartians/evil-client"
|
@@ -13,15 +13,15 @@ Gem::Specification.new do |gem|
|
|
13
13
|
|
14
14
|
gem.required_ruby_version = "~> 2.3"
|
15
15
|
|
16
|
-
gem.add_runtime_dependency "dry-initializer", "
|
16
|
+
gem.add_runtime_dependency "dry-initializer", ">= 2.1", "< 4"
|
17
17
|
gem.add_runtime_dependency "mime-types", "~> 3.1"
|
18
18
|
gem.add_runtime_dependency "rack", "~> 2"
|
19
|
-
gem.add_runtime_dependency "tram-policy", ">= 0.3.1", "< 2
|
19
|
+
gem.add_runtime_dependency "tram-policy", ">= 0.3.1", "< 2"
|
20
20
|
|
21
21
|
gem.add_development_dependency "rake", ">= 10"
|
22
22
|
gem.add_development_dependency "rspec", "~> 3.0"
|
23
23
|
gem.add_development_dependency "rspec-its", "~> 1.2"
|
24
|
-
gem.add_development_dependency "rubocop", "~> 0.
|
24
|
+
gem.add_development_dependency "rubocop", "~> 0.52.0"
|
25
25
|
gem.add_development_dependency "timecop", "~> 0.9"
|
26
26
|
gem.add_development_dependency "webmock", "~> 2.1"
|
27
27
|
end
|
data/lib/evil/client.rb
CHANGED
data/lib/evil/client/chaining.rb
CHANGED
data/lib/evil/client/model.rb
CHANGED
@@ -81,6 +81,7 @@ class Evil::Client
|
|
81
81
|
#
|
82
82
|
def extend(other)
|
83
83
|
return super if other.instance_of? Module
|
84
|
+
|
84
85
|
validate_model other
|
85
86
|
extend_model other
|
86
87
|
end
|
@@ -109,6 +110,7 @@ class Evil::Client
|
|
109
110
|
|
110
111
|
def validate_model(other)
|
111
112
|
return if other.ancestors.include? Evil::Client::Model
|
113
|
+
|
112
114
|
raise TypeError, "#{other} is not a subclass of Evil::Client::Model"
|
113
115
|
end
|
114
116
|
|
data/lib/evil/client/names.rb
CHANGED
@@ -47,9 +47,13 @@ class Evil::Client
|
|
47
47
|
to_s
|
48
48
|
to_str
|
49
49
|
token_auth
|
50
|
+
load_dependency
|
51
|
+
unloadable
|
52
|
+
require_or_load
|
53
|
+
require_dependency
|
50
54
|
].freeze
|
51
55
|
|
52
56
|
# Matches whether a name can be used in operations/scopes/options
|
53
|
-
FORMAT = /^[a-z]([a-z\d_])*[a-z\d]
|
57
|
+
FORMAT = /^[a-z]([a-z\d_])*[a-z\d]$/.freeze
|
54
58
|
end
|
55
59
|
end
|
data/lib/evil/client/resolver.rb
CHANGED
@@ -46,8 +46,8 @@ class Evil::Client
|
|
46
46
|
yield.tap do |obj|
|
47
47
|
logger&.debug(self.class) { "resolved #{self} to #{obj.inspect}" }
|
48
48
|
end
|
49
|
-
rescue StandardError =>
|
50
|
-
logger&.error(self.class) { "failed to resolve #{self}: #{
|
49
|
+
rescue StandardError => e
|
50
|
+
logger&.error(self.class) { "failed to resolve #{self}: #{e.message}" }
|
51
51
|
raise
|
52
52
|
end
|
53
53
|
|
@@ -56,6 +56,7 @@ class Evil::Client
|
|
56
56
|
schema = @__schema__
|
57
57
|
loop do
|
58
58
|
break unless schema
|
59
|
+
|
59
60
|
block = schema.definitions.dig(*@__keys__)
|
60
61
|
schema = schema.parent
|
61
62
|
blocks.unshift block if block
|
@@ -34,6 +34,7 @@ class Evil::Client
|
|
34
34
|
keys = data.keys.map(&:to_s)
|
35
35
|
wrong = keys.reject { |key| key[VALID_KEY] }.map(&:inspect)
|
36
36
|
return keys unless wrong.any?
|
37
|
+
|
37
38
|
raise __definition_error__ "inacceptable headers #{wrong.join(', ')}"
|
38
39
|
end
|
39
40
|
|
@@ -41,6 +42,6 @@ class Evil::Client
|
|
41
42
|
data.values.map { |v| v.respond_to?(:map) ? v.map(&:to_s) : v.to_s }
|
42
43
|
end
|
43
44
|
|
44
|
-
VALID_KEY =
|
45
|
+
VALID_KEY = /^.+$/.freeze
|
45
46
|
end
|
46
47
|
end
|
@@ -28,21 +28,21 @@ class Evil::Client
|
|
28
28
|
# rubocop: disable Metrics/AbcSize
|
29
29
|
def environment
|
30
30
|
{
|
31
|
-
"REQUEST_METHOD"
|
32
|
-
"PATH_INFO"
|
33
|
-
"SCRIPT_NAME"
|
34
|
-
"QUERY_STRING"
|
35
|
-
"SERVER_NAME"
|
36
|
-
"SERVER_PORT"
|
37
|
-
"HTTP_Variables"
|
38
|
-
"rack.version"
|
39
|
-
"rack.url_scheme"
|
40
|
-
"rack.input"
|
41
|
-
"rack.multithread"
|
31
|
+
"REQUEST_METHOD" => http_method,
|
32
|
+
"PATH_INFO" => uri.path,
|
33
|
+
"SCRIPT_NAME" => "",
|
34
|
+
"QUERY_STRING" => Formatter.call(query, :form),
|
35
|
+
"SERVER_NAME" => uri.host,
|
36
|
+
"SERVER_PORT" => uri.port,
|
37
|
+
"HTTP_Variables" => headers,
|
38
|
+
"rack.version" => Rack::VERSION,
|
39
|
+
"rack.url_scheme" => uri.scheme,
|
40
|
+
"rack.input" => Formatter.call(body, format, boundary: boundary),
|
41
|
+
"rack.multithread" => false,
|
42
42
|
"rack.multiprocess" => false,
|
43
|
-
"rack.run_once"
|
44
|
-
"rack.hijack?"
|
45
|
-
"rack.logger"
|
43
|
+
"rack.run_once" => false,
|
44
|
+
"rack.hijack?" => false,
|
45
|
+
"rack.logger" => @__settings__&.logger
|
46
46
|
}
|
47
47
|
end
|
48
48
|
# rubocop: enable Metrics/MethodLength
|
@@ -44,7 +44,7 @@ RSpec.describe "operation request" do
|
|
44
44
|
let(:head) do
|
45
45
|
{
|
46
46
|
"Authorization" => "Basic YW5keTpmb28=",
|
47
|
-
"Content-Type"
|
47
|
+
"Content-Type" => "application/json"
|
48
48
|
}
|
49
49
|
end
|
50
50
|
end
|
@@ -58,7 +58,7 @@ RSpec.describe "operation request" do
|
|
58
58
|
let(:head) do
|
59
59
|
{
|
60
60
|
"Authorization" => "Basic YW5keTpmb28=",
|
61
|
-
"Content-Type"
|
61
|
+
"Content-Type" => "application/json"
|
62
62
|
}
|
63
63
|
end
|
64
64
|
end
|
@@ -73,7 +73,7 @@ RSpec.describe "operation request" do
|
|
73
73
|
let(:head) do
|
74
74
|
{
|
75
75
|
"Authorization" => "Basic YW5keTpmb28=",
|
76
|
-
"Content-Type"
|
76
|
+
"Content-Type" => "application/json"
|
77
77
|
}
|
78
78
|
end
|
79
79
|
end
|
@@ -87,7 +87,7 @@ RSpec.describe "operation request" do
|
|
87
87
|
let(:head) do
|
88
88
|
{
|
89
89
|
"Authorization" => "Basic YW5keTpmb28=",
|
90
|
-
"Content-Type"
|
90
|
+
"Content-Type" => "application/x-www-form-urlencoded"
|
91
91
|
}
|
92
92
|
end
|
93
93
|
end
|
@@ -3,26 +3,26 @@ RSpec.describe Evil::Client::Connection, ".call" do
|
|
3
3
|
let(:log) { StringIO.new }
|
4
4
|
let(:env) do
|
5
5
|
{
|
6
|
-
"REQUEST_METHOD"
|
7
|
-
"SCRIPT_NAME"
|
8
|
-
"PATH_INFO"
|
9
|
-
"QUERY_STRING"
|
10
|
-
"SERVER_NAME"
|
11
|
-
"SERVER_PORT"
|
12
|
-
"HTTP_Variables"
|
6
|
+
"REQUEST_METHOD" => "POST",
|
7
|
+
"SCRIPT_NAME" => "",
|
8
|
+
"PATH_INFO" => "/api/v77/users/43",
|
9
|
+
"QUERY_STRING" => "version=77&verbose=true",
|
10
|
+
"SERVER_NAME" => "foo.com",
|
11
|
+
"SERVER_PORT" => 443,
|
12
|
+
"HTTP_Variables" => {
|
13
13
|
"Foo" => "BAR",
|
14
14
|
"Baz" => "QUX",
|
15
15
|
"Authorization" => "Bearer eoiqopr==",
|
16
|
-
"Content-Type"
|
16
|
+
"Content-Type" => "application/json"
|
17
17
|
},
|
18
|
-
"rack.version"
|
19
|
-
"rack.input"
|
20
|
-
"rack.url_scheme"
|
21
|
-
"rack.multithread"
|
18
|
+
"rack.version" => Rack::VERSION,
|
19
|
+
"rack.input" => "name=Andrew&age=46",
|
20
|
+
"rack.url_scheme" => "https",
|
21
|
+
"rack.multithread" => false,
|
22
22
|
"rack.multiprocess" => false,
|
23
|
-
"rack.run_once"
|
24
|
-
"rack.hijack?"
|
25
|
-
"rack.logger"
|
23
|
+
"rack.run_once" => false,
|
24
|
+
"rack.hijack?" => false,
|
25
|
+
"rack.logger" => logger
|
26
26
|
}
|
27
27
|
end
|
28
28
|
|
@@ -33,14 +33,14 @@ RSpec.describe Evil::Client::Connection, ".call" do
|
|
33
33
|
"Foo" => "BAR",
|
34
34
|
"Baz" => "QUX",
|
35
35
|
"Authorization" => "Bearer eoiqopr==",
|
36
|
-
"Content-Type"
|
36
|
+
"Content-Type" => "application/json"
|
37
37
|
}
|
38
38
|
end
|
39
39
|
|
40
40
|
before do
|
41
|
-
stub_request(:any, //).to_return status:
|
41
|
+
stub_request(:any, //).to_return status: 200,
|
42
42
|
headers: { "Content-Language" => "en_AU" },
|
43
|
-
body:
|
43
|
+
body: "Done!"
|
44
44
|
end
|
45
45
|
|
46
46
|
subject { described_class.call(env) }
|
@@ -12,20 +12,20 @@ RSpec.describe Evil::Client::Container::Operation do
|
|
12
12
|
let(:connection) { Evil::Client::Connection }
|
13
13
|
let(:schema) do
|
14
14
|
double :schema,
|
15
|
-
to_s:
|
16
|
-
client:
|
17
|
-
parent:
|
15
|
+
to_s: "MyApi.users.update",
|
16
|
+
client: double(:client, connection: connection),
|
17
|
+
parent: nil,
|
18
18
|
settings: settings_klass,
|
19
19
|
definitions: {
|
20
|
-
path:
|
20
|
+
path: -> { "https://example.com/users/#{id}" },
|
21
21
|
http_method: -> { "PATCH" },
|
22
|
-
format:
|
23
|
-
security:
|
24
|
-
headers:
|
25
|
-
query:
|
26
|
-
body:
|
27
|
-
middleware:
|
28
|
-
responses:
|
22
|
+
format: -> { :json },
|
23
|
+
security: -> { { headers: { "Authentication" => token } } },
|
24
|
+
headers: -> { { "Content-Language" => language } },
|
25
|
+
query: -> { { language: language } },
|
26
|
+
body: -> { { name: name } },
|
27
|
+
middleware: -> { Test::Middleware },
|
28
|
+
responses: { 200 => proc { |_, _, body| JSON.parse body.first } }
|
29
29
|
}
|
30
30
|
end
|
31
31
|
|
@@ -54,9 +54,9 @@ RSpec.describe Evil::Client::Container::Operation do
|
|
54
54
|
let(:request) do
|
55
55
|
a_request(:patch, "https://example.com/users/7?language=en_US") do |r|
|
56
56
|
expect(r.body).to eq '{"name":"Joe"}'
|
57
|
-
expect(r.headers).to include "Authentication"
|
57
|
+
expect(r.headers).to include "Authentication" => "qux",
|
58
58
|
"Content-Language" => "en_US",
|
59
|
-
"Accept-Language"
|
59
|
+
"Accept-Language" => "ru_RU"
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -15,10 +15,10 @@ RSpec.describe Evil::Client::Container::Scope do
|
|
15
15
|
|
16
16
|
let(:schema) do
|
17
17
|
double :schema,
|
18
|
-
parent:
|
19
|
-
settings:
|
18
|
+
parent: nil,
|
19
|
+
settings: settings_klass,
|
20
20
|
operations: { update: update_schema },
|
21
|
-
scopes:
|
21
|
+
scopes: { admins: admins_schema }
|
22
22
|
end
|
23
23
|
|
24
24
|
it "is a subclass of base container" do
|
data/spec/unit/options_spec.rb
CHANGED
@@ -3,7 +3,7 @@ RSpec.describe Evil::Client::Options do
|
|
3
3
|
let(:source) { { foo: :FOO, bar: :BAR, baz: :BAZ } }
|
4
4
|
|
5
5
|
describe "#slice" do
|
6
|
-
subject {
|
6
|
+
subject { options.slice :foo, :baz }
|
7
7
|
|
8
8
|
it "slices keys from a hash" do
|
9
9
|
expect(subject).to eq foo: :FOO, baz: :BAZ
|
@@ -11,7 +11,7 @@ RSpec.describe Evil::Client::Options do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
describe "#except" do
|
14
|
-
subject {
|
14
|
+
subject { options.except :foo, :baz }
|
15
15
|
|
16
16
|
it "removes keys from a hash" do
|
17
17
|
expect(subject).to eq bar: :BAR
|
@@ -7,13 +7,13 @@ RSpec.describe Evil::Client::Resolver::Request, ".call" do
|
|
7
7
|
let(:root_schema) do
|
8
8
|
double :my_parent_schema,
|
9
9
|
definitions: {
|
10
|
-
body:
|
11
|
-
format:
|
12
|
-
headers:
|
10
|
+
body: proc { %W[v#{version}] },
|
11
|
+
format: proc { :form },
|
12
|
+
headers: proc { { "Foo" => "BAR" } },
|
13
13
|
http_method: proc { :get },
|
14
|
-
query:
|
15
|
-
security:
|
16
|
-
path:
|
14
|
+
query: proc { { version: version } },
|
15
|
+
security: proc { token_auth token },
|
16
|
+
path: proc { "https://myhost.com/api/v#{version}" }
|
17
17
|
},
|
18
18
|
parent: nil
|
19
19
|
end
|
@@ -22,13 +22,13 @@ RSpec.describe Evil::Client::Resolver::Request, ".call" do
|
|
22
22
|
double :my_schema,
|
23
23
|
to_s: "MySchema.users.fetch",
|
24
24
|
definitions: {
|
25
|
-
body:
|
26
|
-
format:
|
27
|
-
headers:
|
25
|
+
body: proc { { version: "v#{version}" } },
|
26
|
+
format: proc { :json if version > 76 },
|
27
|
+
headers: proc { { "Baz" => "QUX" } },
|
28
28
|
http_method: proc { :post if version > 75 },
|
29
|
-
query:
|
30
|
-
security:
|
31
|
-
path:
|
29
|
+
query: proc { { verbose: true } },
|
30
|
+
security: proc { token_auth token, prefix: "Bearer" },
|
31
|
+
path: proc { "users/#{id}" }
|
32
32
|
},
|
33
33
|
parent: root_schema
|
34
34
|
end
|
@@ -38,26 +38,26 @@ RSpec.describe Evil::Client::Resolver::Request, ".call" do
|
|
38
38
|
|
39
39
|
let(:environment) do
|
40
40
|
{
|
41
|
-
"REQUEST_METHOD"
|
42
|
-
"SCRIPT_NAME"
|
43
|
-
"PATH_INFO"
|
44
|
-
"QUERY_STRING"
|
45
|
-
"SERVER_NAME"
|
46
|
-
"SERVER_PORT"
|
47
|
-
"HTTP_Variables"
|
41
|
+
"REQUEST_METHOD" => "POST",
|
42
|
+
"SCRIPT_NAME" => "",
|
43
|
+
"PATH_INFO" => "/api/v77/users/43",
|
44
|
+
"QUERY_STRING" => "version=77&verbose=true",
|
45
|
+
"SERVER_NAME" => "myhost.com",
|
46
|
+
"SERVER_PORT" => 443,
|
47
|
+
"HTTP_Variables" => {
|
48
48
|
"Foo" => "BAR",
|
49
49
|
"Baz" => "QUX",
|
50
50
|
"Authorization" => "Bearer eoiqopr==",
|
51
|
-
"Content-Type"
|
51
|
+
"Content-Type" => "application/json"
|
52
52
|
},
|
53
|
-
"rack.version"
|
54
|
-
"rack.input"
|
55
|
-
"rack.url_scheme"
|
56
|
-
"rack.multithread"
|
53
|
+
"rack.version" => Rack::VERSION,
|
54
|
+
"rack.input" => '{"version":"v77"}',
|
55
|
+
"rack.url_scheme" => "https",
|
56
|
+
"rack.multithread" => false,
|
57
57
|
"rack.multiprocess" => false,
|
58
|
-
"rack.run_once"
|
59
|
-
"rack.hijack?"
|
60
|
-
"rack.logger"
|
58
|
+
"rack.run_once" => false,
|
59
|
+
"rack.hijack?" => false,
|
60
|
+
"rack.logger" => logger
|
61
61
|
}
|
62
62
|
end
|
63
63
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evil-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kozin (nepalez)
|
@@ -9,22 +9,28 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-05-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: dry-initializer
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '2.1'
|
21
|
+
- - "<"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '4'
|
21
24
|
type: :runtime
|
22
25
|
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
24
27
|
requirements:
|
25
|
-
- - "
|
28
|
+
- - ">="
|
26
29
|
- !ruby/object:Gem::Version
|
27
30
|
version: '2.1'
|
31
|
+
- - "<"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4'
|
28
34
|
- !ruby/object:Gem::Dependency
|
29
35
|
name: mime-types
|
30
36
|
requirement: !ruby/object:Gem::Requirement
|
@@ -62,7 +68,7 @@ dependencies:
|
|
62
68
|
version: 0.3.1
|
63
69
|
- - "<"
|
64
70
|
- !ruby/object:Gem::Version
|
65
|
-
version: '2
|
71
|
+
version: '2'
|
66
72
|
type: :runtime
|
67
73
|
prerelease: false
|
68
74
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -72,7 +78,7 @@ dependencies:
|
|
72
78
|
version: 0.3.1
|
73
79
|
- - "<"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: '2
|
81
|
+
version: '2'
|
76
82
|
- !ruby/object:Gem::Dependency
|
77
83
|
name: rake
|
78
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -121,14 +127,14 @@ dependencies:
|
|
121
127
|
requirements:
|
122
128
|
- - "~>"
|
123
129
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
130
|
+
version: 0.52.0
|
125
131
|
type: :development
|
126
132
|
prerelease: false
|
127
133
|
version_requirements: !ruby/object:Gem::Requirement
|
128
134
|
requirements:
|
129
135
|
- - "~>"
|
130
136
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
137
|
+
version: 0.52.0
|
132
138
|
- !ruby/object:Gem::Dependency
|
133
139
|
name: timecop
|
134
140
|
requirement: !ruby/object:Gem::Requirement
|
@@ -308,8 +314,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
308
314
|
- !ruby/object:Gem::Version
|
309
315
|
version: '0'
|
310
316
|
requirements: []
|
311
|
-
|
312
|
-
rubygems_version: 2.6.14
|
317
|
+
rubygems_version: 3.0.3
|
313
318
|
signing_key:
|
314
319
|
specification_version: 4
|
315
320
|
summary: Human-friendly DSL for building HTTP(s) clients in Ruby
|