typhoeus 0.5.0.pre → 0.5.0.rc
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +12 -0
- data/Gemfile +17 -1
- data/README.md +2 -2
- data/lib/typhoeus.rb +78 -16
- data/lib/typhoeus/config.rb +40 -4
- data/lib/typhoeus/errors.rb +9 -0
- data/lib/typhoeus/errors/no_stub.rb +12 -0
- data/lib/typhoeus/errors/typhoeus_error.rb +8 -0
- data/lib/typhoeus/expectation.rb +174 -0
- data/lib/typhoeus/hydra.rb +71 -14
- data/lib/typhoeus/hydra/before.rb +30 -0
- data/lib/typhoeus/hydra/block_connection.rb +35 -0
- data/lib/typhoeus/{hydras → hydra}/easy_factory.rb +17 -5
- data/lib/typhoeus/{hydras → hydra}/easy_pool.rb +4 -2
- data/lib/typhoeus/{hydras → hydra}/memoizable.rb +7 -5
- data/lib/typhoeus/{hydras → hydra}/queueable.rb +5 -3
- data/lib/typhoeus/{hydras → hydra}/runnable.rb +4 -1
- data/lib/typhoeus/hydra/stubbable.rb +26 -0
- data/lib/typhoeus/request.rb +117 -29
- data/lib/typhoeus/request/actions.rb +125 -0
- data/lib/typhoeus/request/before.rb +30 -0
- data/lib/typhoeus/request/block_connection.rb +52 -0
- data/lib/typhoeus/request/callbacks.rb +98 -0
- data/lib/typhoeus/{requests → request}/marshal.rb +1 -1
- data/lib/typhoeus/{requests → request}/memoizable.rb +4 -2
- data/lib/typhoeus/{requests → request}/operations.rb +25 -5
- data/lib/typhoeus/{requests → request}/responseable.rb +1 -1
- data/lib/typhoeus/request/stubbable.rb +28 -0
- data/lib/typhoeus/response.rb +30 -8
- data/lib/typhoeus/{responses → response}/header.rb +15 -11
- data/lib/typhoeus/response/informations.rb +205 -0
- data/lib/typhoeus/{responses → response}/status.rb +10 -7
- data/lib/typhoeus/version.rb +1 -1
- metadata +32 -135
- data/lib/typhoeus/requests/actions.rb +0 -17
- data/lib/typhoeus/requests/callbacks.rb +0 -48
- data/lib/typhoeus/responses/informations.rb +0 -43
- data/lib/typhoeus/responses/legacy.rb +0 -26
@@ -1,17 +0,0 @@
|
|
1
|
-
module Typhoeus
|
2
|
-
module Requests # :nodoc:
|
3
|
-
|
4
|
-
# Module containing logic about shortcuts to
|
5
|
-
# http methods. Like
|
6
|
-
# Typhoeus.get("www.example.com")
|
7
|
-
module Actions
|
8
|
-
[:get, :post, :put, :delete, :head, :patch, :options].each do |name|
|
9
|
-
define_method(name) do |*args|
|
10
|
-
url = args[0]
|
11
|
-
options = args.fetch(1, {})
|
12
|
-
Request.run(url, options.merge(:method => name))
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module Typhoeus
|
2
|
-
module Requests
|
3
|
-
|
4
|
-
# This module contains the logic for the response callbacks.
|
5
|
-
# The on_complete callback is the only one at the moment.
|
6
|
-
#
|
7
|
-
# You can set multiple callbacks, which are then executed
|
8
|
-
# in the same order.
|
9
|
-
#
|
10
|
-
# request.on_complete { p 1 }
|
11
|
-
# request.on_complete { p 2 }
|
12
|
-
# request.complete
|
13
|
-
# #=> 1
|
14
|
-
# #=> 2
|
15
|
-
#
|
16
|
-
# You can clear the callbacks:
|
17
|
-
#
|
18
|
-
# request.on_complete { p 1 }
|
19
|
-
# request.on_complete { p 2 }
|
20
|
-
# request.on_complete.clear
|
21
|
-
# request.on_complete
|
22
|
-
# #=> []
|
23
|
-
module Callbacks
|
24
|
-
|
25
|
-
# Set on_complete callback.
|
26
|
-
#
|
27
|
-
# @example Set on_complete.
|
28
|
-
# request.on_complete { p "yay" }
|
29
|
-
#
|
30
|
-
# @param [ Block ] block The block to execute.
|
31
|
-
def on_complete(&block)
|
32
|
-
@on_complete ||= []
|
33
|
-
@on_complete << block if block_given?
|
34
|
-
@on_complete
|
35
|
-
end
|
36
|
-
|
37
|
-
# Execute on_complete callbacks.
|
38
|
-
#
|
39
|
-
# @example Execute on_completes.
|
40
|
-
# request.complete
|
41
|
-
def complete
|
42
|
-
if defined?(@on_complete)
|
43
|
-
@on_complete.map{ |callback| callback.call(self) }
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
module Typhoeus
|
2
|
-
module Responses
|
3
|
-
|
4
|
-
# This module contains logic about informations
|
5
|
-
# on a response.
|
6
|
-
module Informations
|
7
|
-
|
8
|
-
# All available informations.
|
9
|
-
AVAILABLE_INFORMATIONS = Ethon::Easies::Informations::AVAILABLE_INFORMATIONS.keys+
|
10
|
-
[:return_code, :response_body, :response_header]
|
11
|
-
|
12
|
-
AVAILABLE_INFORMATIONS.each do |name|
|
13
|
-
define_method(name) do
|
14
|
-
options[name.to_sym]
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
# Returns the response header.
|
19
|
-
#
|
20
|
-
# @example Return header.
|
21
|
-
# response.header
|
22
|
-
#
|
23
|
-
# @return [ Header ] The response header.
|
24
|
-
def header
|
25
|
-
return nil unless response_header
|
26
|
-
@header ||= Responses::Header.new(response_header.split("\r\n\r\n").last)
|
27
|
-
end
|
28
|
-
|
29
|
-
# Return all redirections in between as multiple
|
30
|
-
# responses with header.
|
31
|
-
#
|
32
|
-
# @example Return redirections.
|
33
|
-
# response.redirections
|
34
|
-
#
|
35
|
-
# @return [ Array ] The redirections
|
36
|
-
def redirections
|
37
|
-
return [] unless response_header
|
38
|
-
response_header.split("\r\n\r\n")[0..-2].map{ |h| Response.new(:response_header => h) }
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module Typhoeus
|
2
|
-
module Responses # :nodoc:
|
3
|
-
|
4
|
-
# This module contains logic for providing the
|
5
|
-
# old accessors.
|
6
|
-
module Legacy
|
7
|
-
|
8
|
-
# The legacy mapping.
|
9
|
-
MAPPING = {
|
10
|
-
:body => :response_body,
|
11
|
-
:code => :response_code,
|
12
|
-
:curl_return_code => :return_code,
|
13
|
-
:time => :total_time,
|
14
|
-
:app_connect_time => :appconnect_time,
|
15
|
-
:start_transfer_time => :starttransfer_time,
|
16
|
-
:name_lookup_time => :namelookup_time
|
17
|
-
}
|
18
|
-
|
19
|
-
MAPPING.each do |old, new|
|
20
|
-
define_method(old) do
|
21
|
-
options[new]
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|