net-hippie 0.2.7 → 0.3.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: 2b63d2a05869a5001eae9742dd541758c1465910d89a020191bb62154072b061
4
- data.tar.gz: 14f48d83d06460cd29678feb60ab3b1dae449e14f5a6ec16c0b0db6da8c88308
3
+ metadata.gz: bc721888f6a07bf6e32a11efd99ac9ed5efc921a55a1b8d6f65478993b9677bf
4
+ data.tar.gz: df18ee59a4585e7cfca08a3ce1423322386c271a1851980c1664337756a8d560
5
5
  SHA512:
6
- metadata.gz: 8560ccd11f0a1937fd0366998ba244955d8d714c9c35b93f1679b5cc9fca0e8024a3ec082d3d10fc22887be237a35d20cbccc288ce1e41b072186a4750749dc9
7
- data.tar.gz: bbfeed6ab2eaad247f4b2bdb5c76884aae1230f961bad6f4519c73389aeb76b09866f11d0479964488628719872bb3ad488fa7ed2861dbc823ccc6ed0ee77c19
6
+ metadata.gz: 7a806957b8b1ca9b19d045e8711d3446ab7d42976b4020435c976a848dad5511a31eb53541304eeb3991be547fbce95401855360be29c67329f6ed4ba33b912b
7
+ data.tar.gz: 3e0f03283bbeba0455a6181842c8ef88cd2f449a92301ad197d67f94214312a2c01aef1a716b6c3f05b726eaeb2f6224f1357a0c0d172bd7a6fed293794a5261
@@ -7,7 +7,7 @@ AllCops:
7
7
  - 'vendor/**/*'
8
8
  TargetRubyVersion: 2.4
9
9
 
10
- Layout/AlignParameters:
10
+ Layout/ParameterAlignment:
11
11
  EnforcedStyle: with_fixed_indentation
12
12
 
13
13
  Naming/RescuedExceptionsVariableName:
@@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
  ## [Unreleased]
10
10
  - nil
11
11
 
12
+ ## [0.3.0] - 2020-01-13
13
+ ### Added
14
+ - Allow following HTTP redirects.
15
+
12
16
  ## [0.2.7] - 2019-10-04
13
17
  ### Added
14
18
  - add additional connection errors
@@ -41,7 +45,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
41
45
  - with\_retry.https://www.mokhan.ca/%F0%9F%92%8E/2018/11/10/net-hippie-0-2-0.html
42
46
  - authorization header helpers
43
47
 
44
- [Unreleased]: https://github.com/mokhan/net-hippie/compare/v0.2.7...HEAD
48
+ [Unreleased]: https://github.com/mokhan/net-hippie/compare/v0.3.0...HEAD
49
+ [0.3.0]: https://github.com/mokhan/net-hippie/compare/v0.2.7...v0.3.0
45
50
  [0.2.7]: https://github.com/mokhan/net-hippie/compare/v0.2.6...v0.2.7
46
51
  [0.2.6]: https://github.com/mokhan/net-hippie/compare/v0.2.5...v0.2.6
47
52
  [0.2.5]: https://github.com/mokhan/net-hippie/compare/v0.2.4...v0.2.5
@@ -11,6 +11,7 @@ module Net
11
11
  }.freeze
12
12
 
13
13
  attr_accessor :mapper, :read_timeout, :open_timeout, :logger
14
+ attr_accessor :follow_redirects
14
15
 
15
16
  def initialize(certificate: nil, headers: DEFAULT_HEADERS,
16
17
  key: nil, passphrase: nil, verify_mode: Net::Hippie.verify_mode)
@@ -22,43 +23,34 @@ module Net
22
23
  @read_timeout = 30
23
24
  @verify_mode = verify_mode
24
25
  @logger = Net::Hippie.logger
26
+ @follow_redirects = 0
25
27
  end
26
28
 
27
29
  def execute(uri, request)
28
- response = http_for(normalize_uri(uri)).request(request)
29
- if block_given?
30
- yield request, response
31
- else
32
- response
30
+ response = follow(limit: follow_redirects) do
31
+ http_for(normalize_uri(uri)).request(request)
33
32
  end
33
+ block_given? ? yield(request, response) : response
34
34
  end
35
35
 
36
36
  def get(uri, headers: {}, body: {}, &block)
37
- request = request_for(Net::HTTP::Get, uri, headers: headers, body: body)
38
- execute(uri, request, &block)
37
+ run(uri, Net::HTTP::Get, headers, body, &block)
39
38
  end
40
39
 
41
40
  def patch(uri, headers: {}, body: {}, &block)
42
- type = Net::HTTP::Patch
43
- request = request_for(type, uri, headers: headers, body: body)
44
- execute(uri, request, &block)
41
+ run(uri, Net::HTTP::Patch, headers, body, &block)
45
42
  end
46
43
 
47
44
  def post(uri, headers: {}, body: {}, &block)
48
- type = Net::HTTP::Post
49
- request = request_for(type, uri, headers: headers, body: body)
50
- execute(uri, request, &block)
45
+ run(uri, Net::HTTP::Post, headers, body, &block)
51
46
  end
52
47
 
53
48
  def put(uri, headers: {}, body: {}, &block)
54
- request = request_for(Net::HTTP::Put, uri, headers: headers, body: body)
55
- execute(uri, request, &block)
49
+ run(uri, Net::HTTP::Put, headers, body, &block)
56
50
  end
57
51
 
58
52
  def delete(uri, headers: {}, body: {}, &block)
59
- type = Net::HTTP::Delete
60
- request = request_for(type, uri, headers: headers, body: body)
61
- execute(uri, request, &block)
53
+ run(uri, Net::HTTP::Delete, headers, body, &block)
62
54
  end
63
55
 
64
56
  # attempt 1 -> delay 0.1 second
@@ -81,8 +73,7 @@ module Net
81
73
 
82
74
  private
83
75
 
84
- attr_reader :default_headers
85
- attr_reader :verify_mode
76
+ attr_reader :default_headers, :verify_mode
86
77
  attr_reader :certificate, :key, :passphrase
87
78
 
88
79
  def attempt(attempt, max)
@@ -131,6 +122,17 @@ module Net
131
122
  def warn(message)
132
123
  logger.warn(message)
133
124
  end
125
+
126
+ def follow(limit: 0, &block)
127
+ response = yield
128
+ redirected = limit.positive? && response.is_a?(Net::HTTPRedirection)
129
+ redirected ? follow(limit: limit - 1, &block) : response
130
+ end
131
+
132
+ def run(uri, http_method, headers, body, &block)
133
+ request = request_for(http_method, uri, headers: headers, body: body)
134
+ execute(uri, request, &block)
135
+ end
134
136
  end
135
137
  end
136
138
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Net
4
4
  module Hippie
5
- VERSION = '0.2.7'
5
+ VERSION = '0.3.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-hippie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-05 00:00:00.000000000 Z
11
+ date: 2020-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  requirements: []
133
- rubygems_version: 3.0.3
133
+ rubygems_version: 3.1.2
134
134
  signing_key:
135
135
  specification_version: 4
136
136
  summary: net/http for hippies. ☮️