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