micky 0.6.9 → 0.7.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.
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