net-hippie 0.2.7 → 0.3.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: 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. ☮️