http_monkey 0.0.2 → 0.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.
data/Readme.md CHANGED
@@ -1,183 +1,55 @@
1
1
  # HTTP Monkey [![Build Status](https://secure.travis-ci.org/rogerleite/http_monkey.png?branch=master)](https://travis-ci.org/rogerleite/http_monkey)
2
2
 
3
3
  A fluent interface to do HTTP calls, free of fat dependencies and at same time, powered by middlewares rack.
4
+ * Light and powerful interface
5
+ * Flexibility
6
+ * Choose your HTTP adapter
7
+ * Middlewares (More power to the people!)
8
+ * Easy to contribute
4
9
 
5
- ## Light and powerful
10
+ Probably you want to see some code to continue ...
6
11
 
7
12
  ``` ruby
8
- # Works with Entry Point concept
9
- response = HttpMonkey.at("http://google.com").get
10
- response = HttpMonkey.at("http://google.com").post(:q => "Http Monkey!")
11
- puts response.body # More info about response at http://httpirb.com/#responses
13
+ agent = HttpMonkey.build
12
14
 
13
- ## Headers
14
- HttpMonket.at("http://google.com").
15
- with_header("Content-Type" => "text/html").
16
- with_header("X-Custom" => "sample").
17
- get
15
+ # you can set headers, cookies, auth, proxy timeout, SSL ... all web stuff.
16
+ # response = agent.at("http://someservice.com").
17
+ # with_header("Content-Type" => "application/json").
18
+ # basic_auth("user", "pass").
19
+ # get
18
20
 
19
- ## Cookies
20
- HttpMonkey.at("http://google.com").set_cookie("blah").get
21
+ response = agent.at("http://google.com").get
22
+ puts response.code # response.headers and response.body
21
23
 
22
- ## Basic Authentication
23
- HttpMonkey.at("http://user:pass@google.com").get
24
- HttpMonkey.at("http://google.com").
25
- basic_auth("user", "pass").
26
- get
24
+ # you can change settings on your client
25
+ agent.configure do
26
+ middlewares do
27
+ # Default HTTP Headers (to all requests)
28
+ use HttpMonkey::M::DefaultHeaders, {"Content-Type" => "application/json"}
27
29
 
28
- ## Request Internals (yields HTTPI::Request, to set your obscure desires)
29
- HttpMonkey.at("http://google.com").yield_request do |req|
30
- req.proxy = "http://proxy.com"
31
- req.open_timeout = 30
32
- req.read_timeout = 15
33
- end.get
34
-
35
- # SSL
36
- HttpMonkey.at("http://google.com").yield_request do |req|
37
- req.auth.ssl.cert_key_file = "client_key.pem" # the private key file to use
38
- req.auth.ssl.cert_key_password = "C3rtP@ssw0rd" # the key file's password
39
- req.auth.ssl.cert_file = "client_cert.pem" # the certificate file to use
40
- req.auth.ssl.ca_cert_file = "ca_cert.pem" # the ca certificate file to use
41
- req.auth.ssl.verify_mode = :none # or one of [:peer, :fail_if_no_peer_cert, :client_once]
42
- req.auth.ssl.ssl_version = :TLSv1 # or one of [:SSLv2, :SSLv3]
43
- end.get
44
-
45
- # HttpMonkey "built-in" middlewares
46
- HttpMonkey.configure do
47
- # Default HTTP Headers (to all requests)
48
- middlewares.use HttpMonkey::M::DefaultHeaders, {"Content-Type" => "application/json"}
49
-
50
- # Filter ALL requests (access to env and request objects)
51
- middlewares.use HttpMonkey::M::RequestFilter do |env, request|
52
- # HTTPI::Request, you can set proxy, timeouts, authentication etc.
53
- # req.proxy = "http://proxy.com"
54
- end
55
-
56
- # Enable automatic follow redirect
57
- middlewares.use HttpMonkey::M::FollowRedirect, :max_tries => 3
58
- end
59
- ```
60
-
61
- ## Flexibility
62
-
63
- You can configure the default or build your own client and define how it should behave.
64
-
65
- You can also define net adapter, behaviours and middlewares by request.
66
-
67
- ``` ruby
68
- # Changing default client
69
- HttpMonkey.configure do
70
- net_adapter :curb
71
- behaviours.on(500) do |client, request, response|
72
- raise "Server side error :X"
73
- end
74
- end
75
-
76
- # Works with status code callbacks (here known as behaviours)
77
- chimp = HttpMonkey.build do
78
- behaviours do
79
- # 2xx range
80
- on(200..299) do |client, request, response|
81
- response
82
- end
83
- # Redirects
84
- on([301, 302]) do |client, request, response|
85
- raise "Redirect error"
86
- end
87
- end
30
+ # Filter ALL requests (access to env and request objects)
31
+ middlewares.use HttpMonkey::M::RequestFilter do |env, request|
32
+ # HTTPI::Request, you can set proxy, timeouts, authentication etc.
33
+ # req.proxy = "http://proxy.com"
88
34
  end
89
35
 
90
- chimp.at("http://google.com").get # raises Redirect error
36
+ # Enable automatic follow redirect
37
+ middlewares.use HttpMonkey::M::FollowRedirect, :max_tries => 3
38
+ end
91
39
 
92
- # by request
93
- chimp.at("http://google.com").get do
94
- behaviours.on(200) do |client, request, response|
95
- raise "ok" # only for this request
40
+ # or settings by request
41
+ response = agent.at("http://google.com").get do
42
+ net_adapter :curb # [:httpclient, :curb, :net_http, :em_http]
43
+ behaviours do
44
+ on([301, 302]) do |client, request, response|
45
+ raise "Redirect Error"
96
46
  end
97
47
  end
48
+ end
98
49
  ```
99
50
 
100
- ## Choose your HTTP client
101
-
102
- Thanks to [HTTPI](http://httpirb.com/), you can choose different HTTP clients:
103
-
104
- * [HTTPClient](http://rubygems.org/gems/httpclient)
105
- * [Curb](http://rubygems.org/gems/curb)
106
- * [Net::HTTP](http://ruby-doc.org/stdlib/libdoc/net/http/rdoc)
107
-
108
- *Important*: If you want to use anything other than Net::HTTP, you need to manually require the library or make sure it’s available in your load path.
109
-
110
- ``` ruby
111
- # When you build your own client, you can define which Http client to use.
112
- chimp = HttpMonkey.build do
113
- # HTTP clients available [:httpclient, :curb, :net_http]
114
- net_adapter :curb # default :net_http
115
- # [...]
116
- end
117
-
118
- # You can also change you net_adapter by request
119
- chimp.at("http://google.com").get do
120
- # only on this request, use :httpclient
121
- net_adapter :httpclient
122
- # [...]
123
- end
124
- ```
125
-
126
- ## More power to the people (for God sake!)
127
-
128
- Easy to extend, using the power of Rack middleware interface.
129
-
130
- ``` ruby
131
-
132
- class Logger
133
- def initialize(app)
134
- @app = app
135
- end
136
- def call(env)
137
- puts "-> before #{env.inspect} #{Time.now.inspect}"
138
- result = @app.call(env)
139
- puts "-> after #{env.inspect} #{Time.now.inspect}"
140
- result
141
- end
142
- end
143
-
144
- # Add custom middlewares to default stack
145
- HttpMonkey.configure do
146
- middlewares do
147
- use Logger
148
- end
149
- end
150
- # Now all requests uses Logger
151
- response = HttpMonkey.at("http://google.com").get
152
-
153
- # or when you build your own client
154
- chimp = HttpMonkey.build do
155
- middlewares do
156
- use Logger
157
- end
158
- end
159
-
160
- # or by request
161
- chimp.at("http://google.com").get do
162
- middlewares.use Logger
163
- # [...]
164
- end
165
- ```
166
-
167
- Some ideas to future:
168
-
169
- * Cache? Finish [cachebag](https://github.com/abril/cachebag)
170
- * Support Cookies with http_monkey-cookies (to do).
171
- * Logger? Maybe a built-in middleware? Apache/Custom format.
172
- * Cool ways to support asynchronous calls.
173
-
174
- You can see my [presentation](http://www.slideshare.net/rogerleite14/http-monkey) in *pt-br* at Editora Abril.
175
-
176
- ## Easy to contribute
177
-
178
- Suggestions, bugs and pull requests, here at [github.com/rogerleite/http_monkey](http://github.com/rogerleite/http_monkey).
179
- `bundle install`, `rake test` and be happy!
51
+ If you liked what you saw, visit http://rogerleite.github.com/http_monkey/ for more information.
180
52
 
181
- ## License
53
+ Suggestions, bugs and pull requests, use [GitHub Issues](http://github.com/rogerleite/http_monkey/issues).
182
54
 
183
55
  HTTP Monkey is copyright 2012 Roger Leite and contributors. It is licensed under the MIT license. See the include LICENSE file for details.
data/http_monkey.gemspec CHANGED
@@ -18,7 +18,8 @@ Gem::Specification.new do |gem|
18
18
  gem.require_paths = ["lib"]
19
19
 
20
20
  gem.add_runtime_dependency "rack"
21
- gem.add_runtime_dependency "httpi", "~> 1.1"
21
+ gem.add_runtime_dependency "httpi", "~> 2.0.0"
22
+ gem.add_runtime_dependency "http_objects", "~> 0.0.4"
22
23
 
23
24
  gem.add_development_dependency "rake"
24
25
  gem.add_development_dependency "minitest", "~> 3"
data/lib/http_monkey.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "net/http"
2
2
  require "rack"
3
3
  require "httpi"
4
+ require "http_objects"
4
5
 
5
6
  require "http_monkey/version"
6
7
  require "http_monkey/entry_point"
@@ -8,11 +9,13 @@ require "http_monkey/configuration"
8
9
  require "http_monkey/configuration/behaviours"
9
10
  require "http_monkey/configuration/middlewares"
10
11
  require "http_monkey/client"
11
- require "http_monkey/client/http_request"
12
12
  require "http_monkey/client/environment"
13
13
  require "http_monkey/client/environment_builder"
14
+ require "http_monkey/client/response"
14
15
  require "http_monkey/middlewares"
15
16
 
17
+ HTTPI.log = false
18
+
16
19
  module HttpMonkey
17
20
 
18
21
  def self.at(url)
@@ -42,14 +45,3 @@ module HttpMonkey
42
45
  end
43
46
 
44
47
  end
45
-
46
- HTTPI.log = false
47
-
48
- # This monkey patch is to avoid a bug from httpi (1.1.1) on ruby 1.8.7
49
- # that raises "undefined method `use_ssl=' for Net::HTTP"
50
- if RUBY_VERSION =~ /1\.8/
51
- class Net::HTTPSession
52
- def use_ssl=(flag)
53
- end
54
- end
55
- end
@@ -19,6 +19,10 @@ module HttpMonkey
19
19
  @conf.net_adapter
20
20
  end
21
21
 
22
+ def storage
23
+ @conf.storage
24
+ end
25
+
22
26
  def configure(&block)
23
27
  @conf.instance_eval(&block) if block_given?
24
28
  self
@@ -26,9 +30,9 @@ module HttpMonkey
26
30
 
27
31
  def http_request(method, request)
28
32
  env = Client::EnvironmentBuilder.new(self, method, request).to_env
29
- code, headers, body = @conf.middlewares.execute(Client::HttpRequest, env)
33
+ code, headers, body = @conf.middlewares.execute(Middlewares::HttpRequest, env)
30
34
  body.close if body.respond_to?(:close) # close when is a Rack::BodyProxy
31
- response = HTTPI::Response.new(code, headers, body)
35
+ response = Client::Response.new(code, headers, body)
32
36
 
33
37
  if (behaviour = @conf.behaviours.find(response.code))
34
38
  behaviour.call(self, request, response)
@@ -93,6 +93,12 @@ module HttpMonkey
93
93
  (method.empty? ? nil : method.downcase.to_sym)
94
94
  end
95
95
 
96
+ # Returns instance from HttpMonkey::Configuration#storage.
97
+ # Simple Hash instance by default.
98
+ def storage
99
+ self['http_monkey.storage']
100
+ end
101
+
96
102
  end
97
103
 
98
104
  end
@@ -23,7 +23,6 @@ module HttpMonkey
23
23
  # Returns a instance of HttpMonkey::Client::Environment with
24
24
  # rack like headers.
25
25
  def to_env
26
- uri = @request.url
27
26
  rack_input = normalize_body(@request.body)
28
27
 
29
28
  env = HttpMonkey::Client::Environment.new(DEFAULT_ENV)
@@ -37,12 +36,15 @@ module HttpMonkey
37
36
  'CONTENT_LENGTH' => rack_input.length.to_s,
38
37
 
39
38
  # custom info
40
- 'http_monkey.request' => [@method, @request, @client]
39
+ 'http_monkey.request' => [@method, @request, @client],
40
+ 'http_monkey.storage' => @client.storage
41
41
  })
42
42
  env.add_http_header(@request.headers)
43
43
  env
44
44
  end
45
45
 
46
+ protected
47
+
46
48
  def normalize_body(body)
47
49
  return "" if body.nil?
48
50
  input = body.dup
@@ -0,0 +1,12 @@
1
+ module HttpMonkey
2
+
3
+ class Client::Response < HTTPI::Response
4
+
5
+ def initialize(code, headers, body)
6
+ super
7
+ self.headers = HttpObjects::HeadersHash.new(headers)
8
+ end
9
+
10
+ end
11
+
12
+ end
@@ -8,6 +8,7 @@ module HttpMonkey
8
8
  # behaviour default always return response
9
9
  @behaviours.on_unknown { |client, req, response| response }
10
10
  @middlewares = HttpMonkey::Configuration::Middlewares.new
11
+ @storage = Hash.new
11
12
  end
12
13
 
13
14
  def initialize_copy(source)
@@ -31,6 +32,11 @@ module HttpMonkey
31
32
  @middlewares
32
33
  end
33
34
 
35
+ def storage(store = nil)
36
+ @storage = store unless store.nil?
37
+ @storage
38
+ end
39
+
34
40
  end
35
41
 
36
42
  end
@@ -5,23 +5,36 @@ module HttpMonkey
5
5
 
6
6
  def initialize
7
7
  @chain = []
8
+ @stack_middlewares = nil
8
9
  end
9
10
 
10
11
  def initialize_copy(source)
11
12
  super
12
13
  @chain = @chain.clone
14
+ @stack_middlewares = @stack_middlewares.clone if @stack_middlewares
13
15
  end
14
16
 
15
17
  def use(middleware, *args, &block)
16
18
  @chain << lambda { |app| middleware.new(app, *args, &block) }
19
+ @stack_middlewares = nil
17
20
  self
18
21
  end
19
22
 
20
23
  def execute(app, env)
21
- stacked_middleware = @chain.reverse.inject(app) do |app, middle|
24
+ stacked = stack_middlewares(app, @chain)
25
+ stacked.call(env)
26
+ end
27
+
28
+ protected
29
+
30
+ def stack_middlewares(app, chain)
31
+ @stack_middlewares ||= stack_middlewares!(app, chain)
32
+ end
33
+
34
+ def stack_middlewares!(app, chain)
35
+ chain.reverse.inject(app) do |app, middle|
22
36
  middle.call(app)
23
37
  end
24
- stacked_middleware.call(env)
25
38
  end
26
39
 
27
40
  end
@@ -48,13 +48,7 @@ module HttpMonkey
48
48
  include EntryPointFluentInterface
49
49
 
50
50
  def get(query_param = nil, &block)
51
- # pending pull request to httpi support @request.query=
52
- if query_param.kind_of?(Hash)
53
- query_param = Rack::Utils.build_query(query_param)
54
- end
55
- query_param = query_param.to_s unless query_param.is_a?(String)
56
- @request.url.query = query_param unless query_param.empty?
57
-
51
+ @request.query = query_param unless query_param.nil?
58
52
  capture_client(&block).http_request(:get, @request)
59
53
  end
60
54
 
@@ -3,6 +3,7 @@ module HttpMonkey
3
3
  autoload :DefaultHeaders, "http_monkey/middlewares/default_headers"
4
4
  autoload :RequestFilter, "http_monkey/middlewares/request_filter"
5
5
  autoload :FollowRedirect, "http_monkey/middlewares/follow_redirect"
6
+ require "http_monkey/middlewares/http_request"
6
7
  end
7
8
  M = Middlewares
8
9
  end
@@ -1,11 +1,13 @@
1
- module HttpMonkey
1
+ module HttpMonkey::Middlewares
2
2
 
3
3
  # Main App middleware
4
4
  # Responsible to make HTTP request
5
- class Client::HttpRequest
5
+ class HttpRequest
6
6
 
7
7
  def self.call(env)
8
- env = Client::Environment.new(env) unless env.is_a?(Client::Environment)
8
+ unless env.is_a?(HttpMonkey::Client::Environment)
9
+ env = HttpMonkey::Client::Environment.new(env)
10
+ end
9
11
  _, request, client = env['http_monkey.request']
10
12
 
11
13
  method = env.request_method
@@ -1,3 +1,3 @@
1
1
  module HttpMonkey
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,46 @@
1
+ require "test_helper"
2
+
3
+ describe HttpMonkey::Client::EnvironmentBuilder do
4
+
5
+ let(:subject_class) { HttpMonkey::Client::EnvironmentBuilder }
6
+ let(:client) { HttpMonkey.build }
7
+
8
+ describe "#to_env" do
9
+
10
+ let(:fake_uri) { URI.parse("http://fake.com") }
11
+ let(:stub_request) do
12
+ stub("request",
13
+ :url => fake_uri,
14
+ :body => "body",
15
+ :headers => {"Content-Type" => "plain/text"})
16
+ end
17
+
18
+ let(:env) { subject_class.new(client, :get, stub_request).to_env }
19
+
20
+ it "body as 'rack.input'" do
21
+ env['rack.input'].must_equal("body")
22
+ end
23
+
24
+ it "builds env with uri" do
25
+ env.uri.host.must_equal("fake.com")
26
+ end
27
+
28
+ it "sets request method" do
29
+ env['REQUEST_METHOD'].must_equal("GET")
30
+ end
31
+
32
+ it "sets 'http_monkey.request'" do
33
+ env['http_monkey.request'].must_equal([:get, stub_request, client])
34
+ end
35
+
36
+ it "sets 'http_monkey.storage'" do
37
+ env['http_monkey.storage'].must_be_same_as(client.storage)
38
+ end
39
+
40
+ it "adds http headers" do
41
+ env['HTTP_CONTENT_TYPE'].must_equal("plain/text")
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -125,4 +125,12 @@ describe HttpMonkey::Client::Environment do
125
125
  end
126
126
  end
127
127
 
128
+ describe "#storage" do
129
+ it "returns 'http_monkey.storage' key" do
130
+ stub_store = stub("storage")
131
+ env = subject.new('http_monkey.storage' => stub_store)
132
+ env.storage.must_be_same_as(stub_store)
133
+ end
134
+ end
135
+
128
136
  end
@@ -0,0 +1,26 @@
1
+ require "test_helper"
2
+
3
+ describe HttpMonkey::Client::Response do
4
+
5
+ let(:code) { 200 }
6
+ let(:headers) { Hash["Content-Type", "text/plain; charset=ISO-8859-4"] }
7
+ let(:body) { ["body test"] }
8
+
9
+ subject { HttpMonkey::Client::Response.new(code, headers, body) }
10
+
11
+ describe "#headers" do
12
+ it "must be instance of HttpObjects::HeadersHash" do
13
+ subject.headers.must_be_instance_of(HttpObjects::HeadersHash)
14
+ end
15
+ it "access values with style" do
16
+ subject.headers.content_type?.must_equal(true)
17
+ subject.headers.content_type!.must_equal("text/plain; charset=ISO-8859-4")
18
+ subject.headers.content_type.value.must_equal("text/plain")
19
+ end
20
+ end
21
+
22
+ it "must be kind of HTTPI::Response" do
23
+ subject.must_be_kind_of(HTTPI::Response)
24
+ end
25
+
26
+ end
@@ -10,18 +10,26 @@ describe HttpMonkey::Client do
10
10
  subject.at("http://server.com").must_be_instance_of(HttpMonkey::EntryPoint)
11
11
  end
12
12
 
13
- describe "default values" do
13
+ describe "configuration attributes" do
14
14
  it "#net_adapter" do
15
- subject.net_adapter.must_equal(:net_http)
15
+ subject.must_respond_to(:net_adapter)
16
+ end
17
+ it "#storage" do
18
+ subject.must_respond_to(:storage)
16
19
  end
17
20
  end
18
21
 
19
22
  describe "#configure" do
20
- it "#net_adapter" do
23
+ it "returns self" do
24
+ subject.configure.must_be_same_as(subject)
25
+ end
26
+ it "yields Configuration instance" do
27
+ flag = "out block"
21
28
  subject.configure do
22
- net_adapter(:curb)
29
+ self.must_be_instance_of(HttpMonkey::Configuration)
30
+ flag = "inner block"
23
31
  end
24
- subject.net_adapter.must_equal(:curb)
32
+ flag.must_equal("inner block")
25
33
  end
26
34
  end
27
35
 
@@ -18,7 +18,7 @@ describe HttpMonkey::Configuration do
18
18
  end
19
19
 
20
20
  describe "#net_adapter" do
21
- it "returns value" do
21
+ it "returns :net_http by default" do
22
22
  subject.net_adapter.must_equal(:net_http)
23
23
  end
24
24
  it "sets value" do
@@ -61,4 +61,18 @@ describe HttpMonkey::Configuration do
61
61
  end
62
62
  end
63
63
 
64
+ describe "#storage" do
65
+ it "respond_to" do
66
+ subject.must_respond_to(:storage)
67
+ end
68
+ it "returns hash by default" do
69
+ subject.storage.must_be_instance_of(Hash)
70
+ end
71
+ it "allows to change" do
72
+ MyCustomStorage = Class.new(Hash)
73
+ subject.storage(MyCustomStorage.new)
74
+ subject.storage.must_be_instance_of(MyCustomStorage)
75
+ end
76
+ end
77
+
64
78
  end
@@ -0,0 +1,18 @@
1
+ require "test_helper"
2
+
3
+ describe "Integration Specs - Client" do
4
+
5
+ def self.before_suite
6
+ @@server = MinionServer.new(MirrorApp).start
7
+ end
8
+
9
+ def self.after_suite
10
+ @@server.shutdown
11
+ end
12
+
13
+ it "response must be instance of Client::Response" do
14
+ response = HttpMonkey.at("http://localhost:4000").get
15
+ response.must_be_instance_of(HttpMonkey::Client::Response)
16
+ end
17
+
18
+ end
@@ -1,19 +1,9 @@
1
1
  require "test_helper"
2
2
 
3
- VerbsApp = Rack::Builder.new do
4
- map "/" do
5
- run lambda { |env|
6
- env['rack.input'] = env['rack.input'].read if env['rack.input'].respond_to?(:read)
7
- body = YAML.dump(env)
8
- [200, {"Content-Type" => "text/plain", "Content-Length" => body.size.to_s}, [body]]
9
- }
10
- end
11
- end
12
-
13
3
  describe "Integration Specs - Verbs" do
14
4
 
15
5
  def self.before_suite
16
- @@server = MinionServer.new(VerbsApp).start
6
+ @@server = MinionServer.new(MirrorApp).start
17
7
  end
18
8
 
19
9
  def self.after_suite
data/test/test_helper.rb CHANGED
@@ -13,3 +13,14 @@ MiniTest::Unit.runner.reporters << MiniTest::Reporters::SpecReporter.new
13
13
  MiniTest::Unit.runner.reporters << HttpMonkey::Support::CaptainHook.new
14
14
 
15
15
  require "minion_server"
16
+
17
+ # Default App to integration tests
18
+ MirrorApp = Rack::Builder.new do
19
+ map "/" do
20
+ run lambda { |env|
21
+ env['rack.input'] = env['rack.input'].read if env['rack.input'].respond_to?(:read)
22
+ body = YAML.dump(env)
23
+ [200, {"Content-Type" => "text/plain", "Content-Length" => body.size.to_s}, [body]]
24
+ }
25
+ end
26
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http_monkey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-30 00:00:00.000000000 Z
12
+ date: 2013-01-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
- requirement: &70184962553820 !ruby/object:Gem::Requirement
16
+ requirement: &70197101569580 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,21 +21,32 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70184962553820
24
+ version_requirements: *70197101569580
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: httpi
27
- requirement: &70184962553260 !ruby/object:Gem::Requirement
27
+ requirement: &70197101569080 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
31
31
  - !ruby/object:Gem::Version
32
- version: '1.1'
32
+ version: 2.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70184962553260
35
+ version_requirements: *70197101569080
36
+ - !ruby/object:Gem::Dependency
37
+ name: http_objects
38
+ requirement: &70197101568560 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 0.0.4
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70197101568560
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: rake
38
- requirement: &70184962552740 !ruby/object:Gem::Requirement
49
+ requirement: &70197101568160 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: '0'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70184962552740
57
+ version_requirements: *70197101568160
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: minitest
49
- requirement: &70184962552180 !ruby/object:Gem::Requirement
60
+ requirement: &70197101567600 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ~>
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '3'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70184962552180
68
+ version_requirements: *70197101567600
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: minitest-reporters
60
- requirement: &70184962551620 !ruby/object:Gem::Requirement
71
+ requirement: &70197101567040 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ~>
@@ -65,10 +76,10 @@ dependencies:
65
76
  version: 0.7.0
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70184962551620
79
+ version_requirements: *70197101567040
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: mocha
71
- requirement: &70184962551220 !ruby/object:Gem::Requirement
82
+ requirement: &70197101566640 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,10 +87,10 @@ dependencies:
76
87
  version: '0'
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *70184962551220
90
+ version_requirements: *70197101566640
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: minion_server
82
- requirement: &70184962550760 !ruby/object:Gem::Requirement
93
+ requirement: &70197101566140 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ! '>='
@@ -87,7 +98,7 @@ dependencies:
87
98
  version: '0'
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *70184962550760
101
+ version_requirements: *70197101566140
91
102
  description: A fluent interface to do HTTP calls, free of fat dependencies and at
92
103
  same time, powered by middlewares rack.
93
104
  email:
@@ -107,7 +118,7 @@ files:
107
118
  - lib/http_monkey/client.rb
108
119
  - lib/http_monkey/client/environment.rb
109
120
  - lib/http_monkey/client/environment_builder.rb
110
- - lib/http_monkey/client/http_request.rb
121
+ - lib/http_monkey/client/response.rb
111
122
  - lib/http_monkey/configuration.rb
112
123
  - lib/http_monkey/configuration/behaviours.rb
113
124
  - lib/http_monkey/configuration/middlewares.rb
@@ -115,9 +126,12 @@ files:
115
126
  - lib/http_monkey/middlewares.rb
116
127
  - lib/http_monkey/middlewares/default_headers.rb
117
128
  - lib/http_monkey/middlewares/follow_redirect.rb
129
+ - lib/http_monkey/middlewares/http_request.rb
118
130
  - lib/http_monkey/middlewares/request_filter.rb
119
131
  - lib/http_monkey/version.rb
132
+ - test/http_monkey/client/environment_builder_test.rb
120
133
  - test/http_monkey/client/environment_test.rb
134
+ - test/http_monkey/client/response_test.rb
121
135
  - test/http_monkey/client_test.rb
122
136
  - test/http_monkey/configuration/behaviours_test.rb
123
137
  - test/http_monkey/configuration/middlewares_test.rb
@@ -128,6 +142,7 @@ files:
128
142
  - test/http_monkey/middlewares/follow_redirect_test.rb
129
143
  - test/http_monkey/middlewares/request_filter_test.rb
130
144
  - test/http_monkey/middlewares_test.rb
145
+ - test/integration/client_test.rb
131
146
  - test/integration/follow_redirect_test.rb
132
147
  - test/integration/verbs_test.rb
133
148
  - test/support/captain_hook.rb
@@ -159,7 +174,9 @@ specification_version: 3
159
174
  summary: A fluent interface to do HTTP calls, free of fat dependencies and at same
160
175
  time, powered by middlewares rack.
161
176
  test_files:
177
+ - test/http_monkey/client/environment_builder_test.rb
162
178
  - test/http_monkey/client/environment_test.rb
179
+ - test/http_monkey/client/response_test.rb
163
180
  - test/http_monkey/client_test.rb
164
181
  - test/http_monkey/configuration/behaviours_test.rb
165
182
  - test/http_monkey/configuration/middlewares_test.rb
@@ -170,6 +187,7 @@ test_files:
170
187
  - test/http_monkey/middlewares/follow_redirect_test.rb
171
188
  - test/http_monkey/middlewares/request_filter_test.rb
172
189
  - test/http_monkey/middlewares_test.rb
190
+ - test/integration/client_test.rb
173
191
  - test/integration/follow_redirect_test.rb
174
192
  - test/integration/verbs_test.rb
175
193
  - test/support/captain_hook.rb