micky 0.6.9 → 0.7.1
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 +4 -4
- data/lib/micky/errors.rb +2 -0
- data/lib/micky/request.rb +23 -7
- data/lib/micky/uri.rb +1 -1
- data/lib/micky/version.rb +1 -1
- data/lib/micky.rb +26 -24
- data/micky.gemspec +0 -1
- metadata +3 -20
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f2be6c8fcc885dfca7a1733f5957e089906e033347e39f37a570804692a1430b
|
|
4
|
+
data.tar.gz: 043bdc08aa5c099bf07927ba30011f87696ec8302eb7de9257865f857a5f1a57
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 585dcfdc3f897d0880acab1591331774db0f18b189adb1e2111371e4d5b8075bb9f0975e58b3c1b9007c7d2d6f49ce0b95663b944adcff2e9b74a7aeb257b367
|
|
7
|
+
data.tar.gz: 91645ed087cb98abd4c16bae8eac88d088e62cf8fca49cddd1f05c526a9ce560de122d506f6a314003d665a5df269d6ed735c23eccaa7b08acf3466de5addca8
|
data/lib/micky/errors.rb
CHANGED
data/lib/micky/request.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Micky
|
|
|
5
5
|
class Request
|
|
6
6
|
def initialize(opts = {})
|
|
7
7
|
# Options can be set per request and fallback to module-level defaults
|
|
8
|
-
|
|
8
|
+
DEFAULTS.each_key do |name|
|
|
9
9
|
value = opts.has_key?(name) ? opts[name] : Micky.public_send(name)
|
|
10
10
|
instance_variable_set "@#{name}", value
|
|
11
11
|
end
|
|
@@ -32,6 +32,7 @@ module Micky
|
|
|
32
32
|
|
|
33
33
|
case response = request(uri)
|
|
34
34
|
when Net::HTTPSuccess
|
|
35
|
+
debug "#{response.code} success"
|
|
35
36
|
Response.new(response, @uri)
|
|
36
37
|
when Net::HTTPRedirection
|
|
37
38
|
previous_uri = uri
|
|
@@ -39,7 +40,7 @@ module Micky
|
|
|
39
40
|
|
|
40
41
|
if uri.nil?
|
|
41
42
|
raise Micky::NoRedirectLocation, response: response if @raise_errors
|
|
42
|
-
|
|
43
|
+
log "No “Location” for #{response.code} response", previous_uri
|
|
43
44
|
return nil
|
|
44
45
|
end
|
|
45
46
|
|
|
@@ -59,7 +60,18 @@ module Micky
|
|
|
59
60
|
end
|
|
60
61
|
end
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
parsed_uri = Micky::URI(uri)
|
|
64
|
+
if parsed_uri.nil?
|
|
65
|
+
raise Micky::InvalidLocation, response: response if @raise_errors
|
|
66
|
+
log "Invalid “Location” for #{response.code} response: #{uri}", previous_uri
|
|
67
|
+
return nil
|
|
68
|
+
elsif parsed_uri.hostname.empty?
|
|
69
|
+
raise Micky::NoRedirectLocation, response: response if @raise_errors
|
|
70
|
+
log "Empty hostname for #{response.code} response", previous_uri
|
|
71
|
+
return nil
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
debug "#{response.code} redirect to #{uri}"
|
|
63
75
|
request_with_redirect_handling(uri, redirect_count + 1)
|
|
64
76
|
else
|
|
65
77
|
if @raise_errors
|
|
@@ -70,7 +82,7 @@ module Micky
|
|
|
70
82
|
raise Micky::HTTPServerError, response: response
|
|
71
83
|
end
|
|
72
84
|
else
|
|
73
|
-
log response
|
|
85
|
+
log "#{response.code} error" if response
|
|
74
86
|
nil
|
|
75
87
|
end
|
|
76
88
|
end
|
|
@@ -79,7 +91,7 @@ module Micky
|
|
|
79
91
|
def request(uri)
|
|
80
92
|
@uri = Micky::URI(uri) or begin
|
|
81
93
|
raise Micky::InvalidURIError, uri if @raise_errors
|
|
82
|
-
|
|
94
|
+
log 'Invalid URI', uri
|
|
83
95
|
return nil
|
|
84
96
|
end
|
|
85
97
|
|
|
@@ -159,9 +171,13 @@ module Micky
|
|
|
159
171
|
end
|
|
160
172
|
end
|
|
161
173
|
|
|
162
|
-
def log(message)
|
|
174
|
+
def log(message, uri = @uri, severity = Logger::WARN)
|
|
163
175
|
message = "#{message.class}: #{message.message}" if message.is_a? Exception
|
|
164
|
-
|
|
176
|
+
@logger.add(severity, "[Micky] #{@request_class_name.upcase} #{uri} - #{message}")
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def debug(message, uri = @uri)
|
|
180
|
+
log(message, uri, Logger::DEBUG)
|
|
165
181
|
end
|
|
166
182
|
end
|
|
167
183
|
end
|
data/lib/micky/uri.rb
CHANGED
data/lib/micky/version.rb
CHANGED
data/lib/micky.rb
CHANGED
|
@@ -5,34 +5,36 @@ require_relative 'micky/request'
|
|
|
5
5
|
require_relative 'micky/response'
|
|
6
6
|
require_relative 'micky/errors'
|
|
7
7
|
|
|
8
|
+
require 'logger'
|
|
9
|
+
|
|
8
10
|
module Micky
|
|
11
|
+
DEFAULTS = {
|
|
12
|
+
raise_errors: false,
|
|
13
|
+
max_redirects: 20,
|
|
14
|
+
timeout: 10,
|
|
15
|
+
skip_resolve: false,
|
|
16
|
+
resolve_timeout: 5,
|
|
17
|
+
oauth: {},
|
|
18
|
+
query: {},
|
|
19
|
+
headers: {},
|
|
20
|
+
parsers: {
|
|
21
|
+
'application/json' => -> (body) {
|
|
22
|
+
require 'json' unless defined? JSON
|
|
23
|
+
JSON.parse(body) rescue nil
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
logger: Logger.new(STDOUT),
|
|
27
|
+
}
|
|
28
|
+
|
|
9
29
|
class << self
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
attr_accessor :skip_resolve
|
|
14
|
-
attr_accessor :resolve_timeout
|
|
15
|
-
attr_accessor :oauth
|
|
16
|
-
attr_accessor :query
|
|
17
|
-
attr_accessor :headers
|
|
18
|
-
attr_accessor :parsers
|
|
30
|
+
DEFAULTS.each_key do |key|
|
|
31
|
+
attr_accessor key
|
|
32
|
+
end
|
|
19
33
|
end
|
|
20
34
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
@timeout = 10
|
|
25
|
-
@skip_resolve = false
|
|
26
|
-
@resolve_timeout = 5
|
|
27
|
-
@oauth = {}
|
|
28
|
-
@query = {}
|
|
29
|
-
@headers = {}
|
|
30
|
-
@parsers = {
|
|
31
|
-
'application/json' => -> (body) {
|
|
32
|
-
require 'json' unless defined? JSON
|
|
33
|
-
JSON.parse(body) rescue nil
|
|
34
|
-
}
|
|
35
|
-
}
|
|
35
|
+
DEFAULTS.each do |key, value|
|
|
36
|
+
instance_variable_set :"@#{key}", value
|
|
37
|
+
end
|
|
36
38
|
|
|
37
39
|
def self.get(uri, opts = {})
|
|
38
40
|
Request.new(opts).get(uri)
|
data/micky.gemspec
CHANGED
metadata
CHANGED
|
@@ -1,29 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: micky
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rafaël Blais Masson
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: bundler
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.3'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '1.3'
|
|
27
12
|
- !ruby/object:Gem::Dependency
|
|
28
13
|
name: rake
|
|
29
14
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -63,7 +48,6 @@ homepage: http://github.com/rafBM/micky
|
|
|
63
48
|
licenses:
|
|
64
49
|
- MIT
|
|
65
50
|
metadata: {}
|
|
66
|
-
post_install_message:
|
|
67
51
|
rdoc_options: []
|
|
68
52
|
require_paths:
|
|
69
53
|
- lib
|
|
@@ -78,8 +62,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
78
62
|
- !ruby/object:Gem::Version
|
|
79
63
|
version: '0'
|
|
80
64
|
requirements: []
|
|
81
|
-
rubygems_version: 3.
|
|
82
|
-
signing_key:
|
|
65
|
+
rubygems_version: 3.6.9
|
|
83
66
|
specification_version: 4
|
|
84
67
|
summary: Lightweight and worry-free HTTP client
|
|
85
68
|
test_files: []
|