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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 570a9c672582cf573205f71fdd473f566075a8d9
4
- data.tar.gz: 0ae9972eecace0b3955391db6fb3699feefe35c6
2
+ SHA256:
3
+ metadata.gz: a09063475a1c7e084ea6389379bf847ca36004665b8ed832640db8a17f2dbccf
4
+ data.tar.gz: 88cc43b7d39dea43701d458e32761b61a3d4adba3efdc6cccec38642aab02781
5
5
  SHA512:
6
- metadata.gz: 7a48f75a892958a92387974a5f485655392c7358561633759c2d6db49dd930fbf5028ca1b478510f182d5b61e616a339b8c43f7192a3262e78b5f737629f273c
7
- data.tar.gz: 066fca51a00f76e101bd01cbc4fef3080103451564071b39908232a41ae5c57bf175acf6f80221be1f97d6452394cc15f12757211cddd640b5495db23a3ee971
6
+ metadata.gz: c66c9cac1a9d00b55a3a6b778505badfef5245adafa74caf930e9d1d4506452851737fad37d9e31860965c3ba4285437ee9cfa4627f01bcd298b0158b406576d
7
+ data.tar.gz: 58331cb71c27f634f69d1fc50305af0d734466d635a34262c5ca14f9799ea44a65dcb8a6949254eaff6386e76b14e7496ee6022faf42d1a51147db4b4d055ade
@@ -10,6 +10,9 @@ Naming/FileName:
10
10
  Exclude:
11
11
  - lib/evil-client.rb
12
12
 
13
+ Naming/UncommunicativeMethodParamName:
14
+ MinNameLength: 2
15
+
13
16
  Metrics/BlockLength:
14
17
  Enabled: false
15
18
 
@@ -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.1.0.0
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
@@ -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
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "evil-client"
3
- gem.version = "3.0.2"
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", "~> 2.1"
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.0"
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.42"
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
@@ -10,6 +10,7 @@ require "delegate"
10
10
  require "tram-policy"
11
11
  require "net/http"
12
12
  require "net/https"
13
+ require "base64"
13
14
  #
14
15
  # Namespace for gems created by Evil Martians
15
16
  #
@@ -13,6 +13,7 @@ class Evil::Client
13
13
 
14
14
  def method_missing(name, *args, &block)
15
15
  return super unless respond_to_missing? name
16
+
16
17
  (operations[name] || scopes[name]).call(*args)
17
18
  end
18
19
  end
@@ -21,6 +21,7 @@ class Evil::Client
21
21
  @operations ||= \
22
22
  schema.operations.each_with_object({}) do |(key, sub_schema), obj|
23
23
  next unless key
24
+
24
25
  obj[key] = Builder::Operation.new(sub_schema, settings)
25
26
  end
26
27
  end
@@ -32,6 +32,7 @@ class Evil::Client
32
32
  #
33
33
  def call(item)
34
34
  return item if all.include? item
35
+
35
36
  raise Error, "#{item} is absent in the dictionary #{self}"
36
37
  end
37
38
 
@@ -13,6 +13,7 @@ class Evil::Client
13
13
  def self.check!(name)
14
14
  name = name.to_sym
15
15
  return name if name[Names::FORMAT] && !Names::FORBIDDEN.include?(name)
16
+
16
17
  raise new(name)
17
18
  end
18
19
 
@@ -15,6 +15,7 @@ class Evil::Client
15
15
  def self.check!(schema, name, type)
16
16
  return if type == :scope && schema.operations[name].nil?
17
17
  return if type == :operation && schema.scopes[name].nil?
18
+
18
19
  raise new(name, type)
19
20
  end
20
21
 
@@ -21,6 +21,7 @@ class Evil::Client
21
21
  return to_yaml(source) if format == :yaml
22
22
  return to_form(source) if format == :form
23
23
  return to_text(source) if format == :text
24
+
24
25
  to_multipart(source, opts)
25
26
  end
26
27
 
@@ -37,7 +37,7 @@ module Evil::Client::Formatter
37
37
  end
38
38
 
39
39
  def extract_name(filename, number)
40
- filename ? filename : "Part#{number}"
40
+ filename || "Part#{number}"
41
41
  end
42
42
 
43
43
  def extract_content(source)
@@ -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
 
@@ -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
@@ -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 => err
50
- logger&.error(self.class) { "failed to resolve #{self}: #{err.message}" }
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
@@ -15,6 +15,7 @@ class Evil::Client
15
15
  value = instance_exec(&__blocks__.last)&.to_sym if __blocks__.any?
16
16
  value = :json if value.to_s == ""
17
17
  raise __invalid_error__(value) unless LIST.include? value
18
+
18
19
  value
19
20
  end
20
21
  end
@@ -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
@@ -15,6 +15,7 @@ class Evil::Client
15
15
  value = instance_exec(&__blocks__.last)&.to_s&.upcase if __blocks__.any?
16
16
  raise __not_defined_error__ if value.to_s == ""
17
17
  raise __invalid_error__(value) unless LIST.include? value
18
+
18
19
  value
19
20
  end
20
21
  end
@@ -23,6 +23,7 @@ class Evil::Client
23
23
  def __normalize__(data)
24
24
  return if data.nil?
25
25
  raise __definition_error__("#{data} is not a hash") unless data.is_a? Hash
26
+
26
27
  __stringify_keys__(data)
27
28
  end
28
29
 
@@ -28,21 +28,21 @@ class Evil::Client
28
28
  # rubocop: disable Metrics/AbcSize
29
29
  def environment
30
30
  {
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,
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" => false,
44
- "rack.hijack?" => false,
45
- "rack.logger" => @__settings__&.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
@@ -20,8 +20,8 @@ class Evil::Client
20
20
 
21
21
  def __uri__(path)
22
22
  URI path
23
- rescue StandardError => error
24
- raise __definition_error__(error.message)
23
+ rescue StandardError => e
24
+ raise __definition_error__(e.message)
25
25
  end
26
26
 
27
27
  def __check__(uri)
@@ -44,7 +44,7 @@ RSpec.describe "operation request" do
44
44
  let(:head) do
45
45
  {
46
46
  "Authorization" => "Basic YW5keTpmb28=",
47
- "Content-Type" => "application/json"
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" => "application/json"
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" => "application/json"
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" => "application/x-www-form-urlencoded"
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" => "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" => {
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" => "application/json"
16
+ "Content-Type" => "application/json"
17
17
  },
18
- "rack.version" => Rack::VERSION,
19
- "rack.input" => "name=Andrew&age=46",
20
- "rack.url_scheme" => "https",
21
- "rack.multithread" => false,
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" => false,
24
- "rack.hijack?" => false,
25
- "rack.logger" => 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" => "application/json"
36
+ "Content-Type" => "application/json"
37
37
  }
38
38
  end
39
39
 
40
40
  before do
41
- stub_request(:any, //).to_return status: 200,
41
+ stub_request(:any, //).to_return status: 200,
42
42
  headers: { "Content-Language" => "en_AU" },
43
- body: "Done!"
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: "MyApi.users.update",
16
- client: double(:client, connection: connection),
17
- parent: nil,
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: -> { "https://example.com/users/#{id}" },
20
+ path: -> { "https://example.com/users/#{id}" },
21
21
  http_method: -> { "PATCH" },
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 } }
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" => "qux",
57
+ expect(r.headers).to include "Authentication" => "qux",
58
58
  "Content-Language" => "en_US",
59
- "Accept-Language" => "ru_RU"
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: nil,
19
- settings: settings_klass,
18
+ parent: nil,
19
+ settings: settings_klass,
20
20
  operations: { update: update_schema },
21
- scopes: { admins: admins_schema }
21
+ scopes: { admins: admins_schema }
22
22
  end
23
23
 
24
24
  it "is a subclass of base container" do
@@ -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 { source.slice :foo, :baz }
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 { source.except :foo, :baz }
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: proc { %W[v#{version}] },
11
- format: proc { :form },
12
- headers: proc { { "Foo" => "BAR" } },
10
+ body: proc { %W[v#{version}] },
11
+ format: proc { :form },
12
+ headers: proc { { "Foo" => "BAR" } },
13
13
  http_method: proc { :get },
14
- query: proc { { version: version } },
15
- security: proc { token_auth token },
16
- path: proc { "https://myhost.com/api/v#{version}" }
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: proc { { version: "v#{version}" } },
26
- format: proc { :json if version > 76 },
27
- headers: proc { { "Baz" => "QUX" } },
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: proc { { verbose: true } },
30
- security: proc { token_auth token, prefix: "Bearer" },
31
- path: proc { "users/#{id}" }
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" => "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" => {
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" => "application/json"
51
+ "Content-Type" => "application/json"
52
52
  },
53
- "rack.version" => Rack::VERSION,
54
- "rack.input" => '{"version":"v77"}',
55
- "rack.url_scheme" => "https",
56
- "rack.multithread" => false,
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" => false,
59
- "rack.hijack?" => false,
60
- "rack.logger" => 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.2
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: 2018-03-01 00:00:00.000000000 Z
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.0'
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.0'
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: '0.42'
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: '0.42'
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
- rubyforge_project:
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