net-hippie 0.3.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bc721888f6a07bf6e32a11efd99ac9ed5efc921a55a1b8d6f65478993b9677bf
4
- data.tar.gz: df18ee59a4585e7cfca08a3ce1423322386c271a1851980c1664337756a8d560
3
+ metadata.gz: 587a0c3abc7e55ea7db10494f69c828aff0a35879d4d277d73fe3980419a26c7
4
+ data.tar.gz: 7c4404f2ee59ddb13b650d4cfe5193652ec120a1d60073a17d0dd969e3428d5f
5
5
  SHA512:
6
- metadata.gz: 7a806957b8b1ca9b19d045e8711d3446ab7d42976b4020435c976a848dad5511a31eb53541304eeb3991be547fbce95401855360be29c67329f6ed4ba33b912b
7
- data.tar.gz: 3e0f03283bbeba0455a6181842c8ef88cd2f449a92301ad197d67f94214312a2c01aef1a716b6c3f05b726eaeb2f6224f1357a0c0d172bd7a6fed293794a5261
6
+ metadata.gz: a7119bffdf4ea7469e6ec7d948ce033a078eaeb2ae952eb110c0c590d2667c28450fd41b0b268e20ad5a840577615015178c914c457037b4b01dafa2dc9f28ac
7
+ data.tar.gz: e1f83721bb3c1a85493e1e17bb5c8eec6bafcfe8d374aa50cea5342405be0faf098f3f689a5d86b679066c20ff9a71301a9cbbf74ac2a639b233f45ec270f70e
@@ -10,6 +10,6 @@ jobs:
10
10
  - name: Set up Ruby
11
11
  uses: actions/setup-ruby@v1
12
12
  with:
13
- version: 2.6.x
13
+ version: 2.7.x
14
14
  - name: Build and test
15
15
  run: bin/cibuild
@@ -1,8 +1,9 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.4.5
5
- - 2.5.5
6
- - 2.6.3
4
+ - 2.4.9
5
+ - 2.5.7
6
+ - 2.6.5
7
+ - 2.7.0
7
8
  script:
8
9
  - bin/cibuild
@@ -1,4 +1,4 @@
1
- Version 0.2.7
1
+ Version 0.3.1
2
2
 
3
3
  # Changelog
4
4
  All notable changes to this project will be documented in this file.
@@ -9,6 +9,11 @@ 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.1] - 2020-01-14
13
+ ### Fixed
14
+ - Parse location header in response then follow redirect.
15
+ - Follow redirect using GET regardless of the original request method.
16
+
12
17
  ## [0.3.0] - 2020-01-13
13
18
  ### Added
14
19
  - Allow following HTTP redirects.
@@ -45,7 +50,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
45
50
  - with\_retry.https://www.mokhan.ca/%F0%9F%92%8E/2018/11/10/net-hippie-0-2-0.html
46
51
  - authorization header helpers
47
52
 
48
- [Unreleased]: https://github.com/mokhan/net-hippie/compare/v0.3.0...HEAD
53
+ [Unreleased]: https://github.com/mokhan/net-hippie/compare/v0.3.1...HEAD
54
+ [0.3.1]: https://github.com/mokhan/net-hippie/compare/v0.3.0...v0.3.1
49
55
  [0.3.0]: https://github.com/mokhan/net-hippie/compare/v0.2.7...v0.3.0
50
56
  [0.2.7]: https://github.com/mokhan/net-hippie/compare/v0.2.6...v0.2.7
51
57
  [0.2.6]: https://github.com/mokhan/net-hippie/compare/v0.2.5...v0.2.6
@@ -26,11 +26,15 @@ module Net
26
26
  @follow_redirects = 0
27
27
  end
28
28
 
29
- def execute(uri, request)
30
- response = follow(limit: follow_redirects) do
31
- http_for(normalize_uri(uri)).request(request)
29
+ def execute(uri, request, limit: follow_redirects, &block)
30
+ response = http_for(uri).request(request)
31
+ if limit.positive? && response.is_a?(Net::HTTPRedirection)
32
+ location = response['location']
33
+ request = request_for(Net::HTTP::Get, location)
34
+ execute(location, request, limit: limit - 1, &block)
35
+ else
36
+ block_given? ? yield(request, response) : response
32
37
  end
33
- block_given? ? yield(request, response) : response
34
38
  end
35
39
 
36
40
  def get(uri, headers: {}, body: {}, &block)
@@ -87,6 +91,7 @@ module Net
87
91
  end
88
92
 
89
93
  def http_for(uri)
94
+ uri = URI.parse(uri.to_s)
90
95
  http = Net::HTTP.new(uri.host, uri.port)
91
96
  http.read_timeout = read_timeout
92
97
  http.open_timeout = open_timeout if open_timeout
@@ -99,15 +104,12 @@ module Net
99
104
 
100
105
  def request_for(type, uri, headers: {}, body: {})
101
106
  final_headers = default_headers.merge(headers)
102
- type.new(uri.to_s, final_headers).tap do |x|
107
+ uri = URI.parse(uri.to_s)
108
+ type.new(uri, final_headers).tap do |x|
103
109
  x.body = mapper.map_from(final_headers, body) unless body.empty?
104
110
  end
105
111
  end
106
112
 
107
- def normalize_uri(uri)
108
- uri.is_a?(URI) ? uri : URI.parse(uri)
109
- end
110
-
111
113
  def private_key(type = OpenSSL::PKey::RSA)
112
114
  passphrase ? type.new(key, passphrase) : type.new(key)
113
115
  end
@@ -123,12 +125,6 @@ module Net
123
125
  logger.warn(message)
124
126
  end
125
127
 
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
128
  def run(uri, http_method, headers, body, &block)
133
129
  request = request_for(http_method, uri, headers: headers, body: body)
134
130
  execute(uri, request, &block)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Net
4
4
  module Hippie
5
- VERSION = '0.3.0'
5
+ VERSION = '0.3.1'
6
6
  end
7
7
  end
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.required_ruby_version = '~> 2.4'
25
25
 
26
26
  spec.add_development_dependency 'minitest', '~> 5.0'
27
- spec.add_development_dependency 'rake', '~> 10.0'
27
+ spec.add_development_dependency 'rake', '~> 13.0'
28
28
  spec.add_development_dependency 'rubocop', '~> 0.55'
29
29
  spec.add_development_dependency 'vcr', '~> 4.0'
30
30
  spec.add_development_dependency 'webmock', '~> 3.4'
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.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - mo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-13 00:00:00.000000000 Z
11
+ date: 2020-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rubocop
43
43
  requirement: !ruby/object:Gem::Requirement