micky 0.6.9 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9be790e9b69f56620b27af765fcdd4230b57d5164ac5f24374fc168986db291
4
- data.tar.gz: eb604f6cefd295336b46903d050d617108a943ef75d0a7fe1c57acb021f773a5
3
+ metadata.gz: 898140acbc602cbf145536a9370e9a1bda8806d5bced808576e58d55a583ac4e
4
+ data.tar.gz: 274bb288eeb2789f70f7104a272aeb8f5f052f9239f4e41fbf50c59553c391a2
5
5
  SHA512:
6
- metadata.gz: ebb52a2e4a80055e47f31e40a7acbe00c1f15d025fe2c38c986dea4d2d456fe78771a9b3d0f483443521051d7f6f6059a1385e295be2f105f777d41dd6d36692
7
- data.tar.gz: 65b29b7898f38eaa2ecff1538b80070dfe03bc108e712f8b9662591ec3f812dcd0866fa57a443124c51c8698f1b7050a5aac005349d8e0ffd7d9eaa3a006bf40
6
+ metadata.gz: 5bb4814243602605eedd5a2b17386e8f8db6845bfda32ff44f2bc9aa9173ebb00c62a656180e11b09ab4835ac7fe5b421666711a84d0df74ab28c2ea2ff0098b
7
+ data.tar.gz: c7dfb2acabcc9d1c5fc2f86d33cc387f05c7f32987f384607431cc3fef70047cc6c6a1474a04ddbb13b92435948ef223a8d3d5495e15d74010c5ccb105bd83da
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
- [:raise_errors, :max_redirects, :timeout, :skip_resolve, :resolve_timeout, :oauth, :query, :headers, :parsers].each do |name|
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
- warn "Micky.#{@request_class_name.downcase}('#{previous_uri}'): No “Location” for #{response.code} response"
43
+ log "No “Location” for #{response.code} response", previous_uri
43
44
  return nil
44
45
  end
45
46
 
@@ -59,7 +60,7 @@ module Micky
59
60
  end
60
61
  end
61
62
 
62
- log "Redirect to #{uri}"
63
+ debug "#{response.code} redirect to #{uri}"
63
64
  request_with_redirect_handling(uri, redirect_count + 1)
64
65
  else
65
66
  if @raise_errors
@@ -70,7 +71,7 @@ module Micky
70
71
  raise Micky::HTTPServerError, response: response
71
72
  end
72
73
  else
73
- log response
74
+ log "#{response.code} error" if response
74
75
  nil
75
76
  end
76
77
  end
@@ -79,7 +80,7 @@ module Micky
79
80
  def request(uri)
80
81
  @uri = Micky::URI(uri) or begin
81
82
  raise Micky::InvalidURIError, uri if @raise_errors
82
- warn "Micky.#{@request_class_name.downcase}('#{uri}'): Invalid URI"
83
+ log 'Invalid URI', uri
83
84
  return nil
84
85
  end
85
86
 
@@ -159,9 +160,13 @@ module Micky
159
160
  end
160
161
  end
161
162
 
162
- def log(message)
163
+ def log(message, uri = @uri, severity = Logger::WARN)
163
164
  message = "#{message.class}: #{message.message}" if message.is_a? Exception
164
- warn "Micky.#{@request_class_name.downcase}('#{@uri}'): #{message}"
165
+ @logger.add(severity, "[Micky] #{@request_class_name.upcase} #{uri} - #{message}")
166
+ end
167
+
168
+ def debug(message, uri = @uri)
169
+ log(message, uri, Logger::DEBUG)
165
170
  end
166
171
  end
167
172
  end
data/lib/micky/uri.rb CHANGED
@@ -16,7 +16,7 @@ module Micky
16
16
  ::URI.parse(uri)
17
17
  rescue ::URI::InvalidURIError
18
18
  begin
19
- ::URI.parse(::URI.encode(uri))
19
+ ::URI.parse(::URI::Parser.new.escape(uri))
20
20
  rescue ::URI::InvalidURIError
21
21
  end
22
22
  end
data/lib/micky/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Micky
2
- VERSION = '0.6.9'
2
+ VERSION = '0.7.0'
3
3
  end
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
- attr_accessor :raise_errors
11
- attr_accessor :max_redirects
12
- attr_accessor :timeout
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
- # Reasonable defaults
22
- @raise_errors = false
23
- @max_redirects = 20
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)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: micky
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.9
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafaël Blais Masson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-13 00:00:00.000000000 Z
11
+ date: 2022-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -78,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
78
  - !ruby/object:Gem::Version
79
79
  version: '0'
80
80
  requirements: []
81
- rubygems_version: 3.0.1
81
+ rubygems_version: 3.1.6
82
82
  signing_key:
83
83
  specification_version: 4
84
84
  summary: Lightweight and worry-free HTTP client