itrigga-net_helper 0.0.3 → 0.1.0
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/VERSION +1 -1
- data/lib/itrigga/net_helper.rb +50 -1
- data/spec/net_helper_spec.rb +21 -1
- data/spec/spec_helper.rb +2 -0
- metadata +12 -12
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/lib/itrigga/net_helper.rb
CHANGED
@@ -9,6 +9,10 @@ module Itrigga
|
|
9
9
|
module NetHelper
|
10
10
|
|
11
11
|
module_function
|
12
|
+
|
13
|
+
def typhoeus_present?
|
14
|
+
defined?(Typhoeus)
|
15
|
+
end
|
12
16
|
|
13
17
|
def do_get(url, time_out=5, retries_on_timeout=5, max_redirects = 3)
|
14
18
|
retrycount = 0
|
@@ -28,10 +32,55 @@ module Itrigga
|
|
28
32
|
end
|
29
33
|
|
30
34
|
end
|
35
|
+
|
36
|
+
def typhoeus_request( opts={} )
|
37
|
+
opts[:timeout] ||= 30000 # ms
|
38
|
+
opts[:follow_location] ||= true
|
39
|
+
opts[:disable_ssl_peer_verification] = true if opts[:disable_ssl_peer_verification].nil?
|
40
|
+
|
41
|
+
request = Typhoeus::Request.new(opts[:url], opts)
|
42
|
+
|
43
|
+
request.on_complete do |response|
|
44
|
+
if response.success?
|
45
|
+
return response.body
|
46
|
+
elsif response.timed_out?
|
47
|
+
# aw hell no
|
48
|
+
log("got a time out")
|
49
|
+
elsif response.code == 0
|
50
|
+
# Could not get an http response, something's wrong.
|
51
|
+
log(response.curl_error_message)
|
52
|
+
else
|
53
|
+
# Received a non-successful http response.
|
54
|
+
log("HTTP request failed: " + response.code.to_s)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
def get_response( url )
|
61
|
+
if typhoeus_present?
|
62
|
+
typhoeus_request( url )
|
63
|
+
else
|
64
|
+
Net::HTTP.get_response(URI.parse(url))
|
65
|
+
end
|
66
|
+
end
|
31
67
|
|
32
68
|
def get_with_timeout( url, time_out)
|
69
|
+
resp = nil
|
70
|
+
if defined?(SystemTimer)
|
71
|
+
resp = SystemTimer.timeout_after(time_out) do
|
72
|
+
get_response(url)
|
73
|
+
end
|
74
|
+
else
|
75
|
+
resp = timeout(time_out) do
|
76
|
+
get_response(url)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
resp
|
80
|
+
end
|
81
|
+
|
33
82
|
resp = timeout(time_out) do
|
34
|
-
|
83
|
+
|
35
84
|
end
|
36
85
|
resp
|
37
86
|
end
|
data/spec/net_helper_spec.rb
CHANGED
@@ -1,10 +1,30 @@
|
|
1
|
-
require 'spec_helper'
|
1
|
+
require File.join(File.dirname(__FILE__), 'spec_helper' )
|
2
2
|
|
3
3
|
describe "Itrigga::NetHelper" do
|
4
4
|
before(:each) do
|
5
5
|
@mock_response = mock("response")
|
6
6
|
@mock_response.stub!(:body).and_return("body")
|
7
7
|
end
|
8
|
+
|
9
|
+
describe "typhoeus_present?" do
|
10
|
+
context "when Typhoeus is loaded" do
|
11
|
+
before(:each) do
|
12
|
+
class Typhoeus
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should return true" do
|
17
|
+
Itrigga::NetHelper.typhoeus_present?.should == true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "when Typhoeus is not loaded" do
|
22
|
+
it "should return false" do
|
23
|
+
Itrigga::NetHelper.typhoeus_present?.should == false
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
8
28
|
|
9
29
|
describe "do_get" do
|
10
30
|
it "should get the HTTP response" do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itrigga-net_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.3
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Al Davidson
|
@@ -15,11 +15,10 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-08-30 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
type: :development
|
23
22
|
prerelease: false
|
24
23
|
name: hpricot
|
25
24
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
@@ -32,8 +31,8 @@ dependencies:
|
|
32
31
|
- 0
|
33
32
|
version: "0"
|
34
33
|
requirement: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
34
|
type: :development
|
35
|
+
- !ruby/object:Gem::Dependency
|
37
36
|
prerelease: false
|
38
37
|
name: bundler
|
39
38
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
@@ -48,8 +47,8 @@ dependencies:
|
|
48
47
|
- 0
|
49
48
|
version: 1.0.0
|
50
49
|
requirement: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
50
|
type: :development
|
51
|
+
- !ruby/object:Gem::Dependency
|
53
52
|
prerelease: false
|
54
53
|
name: jeweler
|
55
54
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
@@ -64,8 +63,8 @@ dependencies:
|
|
64
63
|
- 4
|
65
64
|
version: 1.6.4
|
66
65
|
requirement: *id003
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
66
|
type: :development
|
67
|
+
- !ruby/object:Gem::Dependency
|
69
68
|
prerelease: false
|
70
69
|
name: rcov
|
71
70
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
@@ -78,8 +77,8 @@ dependencies:
|
|
78
77
|
- 0
|
79
78
|
version: "0"
|
80
79
|
requirement: *id004
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
80
|
type: :development
|
81
|
+
- !ruby/object:Gem::Dependency
|
83
82
|
prerelease: false
|
84
83
|
name: rspec
|
85
84
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
@@ -92,8 +91,8 @@ dependencies:
|
|
92
91
|
- 0
|
93
92
|
version: "0"
|
94
93
|
requirement: *id005
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
94
|
type: :development
|
95
|
+
- !ruby/object:Gem::Dependency
|
97
96
|
prerelease: false
|
98
97
|
name: json_pure
|
99
98
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
@@ -106,8 +105,8 @@ dependencies:
|
|
106
105
|
- 0
|
107
106
|
version: "0"
|
108
107
|
requirement: *id006
|
109
|
-
- !ruby/object:Gem::Dependency
|
110
108
|
type: :development
|
109
|
+
- !ruby/object:Gem::Dependency
|
111
110
|
prerelease: false
|
112
111
|
name: itrigga-core_ext
|
113
112
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
@@ -120,8 +119,8 @@ dependencies:
|
|
120
119
|
- 0
|
121
120
|
version: "0"
|
122
121
|
requirement: *id007
|
123
|
-
- !ruby/object:Gem::Dependency
|
124
122
|
type: :development
|
123
|
+
- !ruby/object:Gem::Dependency
|
125
124
|
prerelease: false
|
126
125
|
name: fastercsv
|
127
126
|
version_requirements: &id008 !ruby/object:Gem::Requirement
|
@@ -136,6 +135,7 @@ dependencies:
|
|
136
135
|
- 4
|
137
136
|
version: 1.5.4
|
138
137
|
requirement: *id008
|
138
|
+
type: :development
|
139
139
|
description: Provides various more convenient wrappers around Net::HTTP methods
|
140
140
|
email: aldavidson@trigga.com
|
141
141
|
executables: []
|