evil-client 3.0.2 → 3.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|