http_get 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/http_get/client.rb +15 -3
- data/lib/http_get/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd3fe5e815e5e2ca544bd3e01cc676ec13f12b5b
|
4
|
+
data.tar.gz: ffebbc077af748f2a4564ecd396b6afadb7ff111
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 949d4747353c7812b105d4141afedb2f993b0ca7ee96d9a44d91064545c2dd9c32d1fa0f880a6c20c5095cee62463e229a531143ed62202b6f6f941404afd3ec
|
7
|
+
data.tar.gz: 5b6ca671d25f9b53151e183c6ea1186db0abbc926c51656c8f62066c5ccdbeec3e83a047869d68248797e6dfc5f2556c2516fe1603e02555e1de1fe6c591a353
|
data/lib/http_get/client.rb
CHANGED
@@ -15,14 +15,26 @@ class HttpGet::Client
|
|
15
15
|
self
|
16
16
|
end
|
17
17
|
|
18
|
-
def get(url, params = {}, redirects
|
18
|
+
def get(url, params = {}, redirects = 0,
|
19
|
+
after_success: ->(resp) { resp },
|
20
|
+
before_redirect: ->(url) { url },
|
21
|
+
blocked_condition: ->(resp) { false })
|
19
22
|
raise RedirectError if redirects > 5
|
20
23
|
|
21
24
|
url = Addressable::URI.parse(url).normalize.to_s
|
22
|
-
|
23
25
|
resp = HTTPClient.new(@opts).get(url, params)
|
24
26
|
|
25
|
-
|
27
|
+
if resp.status_code == 200
|
28
|
+
instance_eval { after_success.call(resp) }
|
29
|
+
elsif resp.status_code == 301
|
30
|
+
redirect_url = before_redirect.call(resp.header['Location'].first)
|
31
|
+
|
32
|
+
get(redirect_url, params, redirects + 1)
|
33
|
+
elsif blocked_condition.call(resp)
|
34
|
+
raise BlockedError
|
35
|
+
else
|
36
|
+
raise MissingError
|
37
|
+
end
|
26
38
|
end
|
27
39
|
|
28
40
|
class BlockedError < StandardError; end
|
data/lib/http_get/version.rb
CHANGED