shrine-url 1.0.1 → 1.0.2

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
  SHA1:
3
- metadata.gz: f4f3a92060828b60ded518a3b4b1413c3682851d
4
- data.tar.gz: 756dcbadd24b79466452c81a3c226b0212505ed5
3
+ metadata.gz: 8884463934019ade14512eb3c9c77de112f794f1
4
+ data.tar.gz: e5168e1c97e08633de01f5fec999a7f30fd37772
5
5
  SHA512:
6
- metadata.gz: 6b80cf29c41b9072e6aae47d3845edf7910b1b6eba8ad71b1182318520eacc4c94c5007587bf056d7fd09cebe07b29bdf8312072315026420470e5ebbc2e5444
7
- data.tar.gz: c06953325cc2c20bd4d4bed5e2641ab1b2d6739d07989fc8a925c0dc9cdbdfc5785ce54488f942a1b6142c6af61333c09f30982e42fc018470fa5f26fe81bb4b
6
+ metadata.gz: 5a2e51d82d4a5bfe0270941ddd7b742328ece218ca87de90c8e0a332a7fec634398bc7ec8b0f0a14be99e20dcdf9b78b798fe35ec8ad029f0ce06df43fa9c48e
7
+ data.tar.gz: 107dda6adb5afe73affed0f441b26a981bfa4782d9b4e4e7c8d9d011c180d938e9d4a34f59b6327f6887c9dac69d75789d2123e10ff0e7eb1cc8fbd48e0e0506
@@ -1,5 +1,6 @@
1
1
  require "shrine"
2
2
  require "net/https"
3
+ require "uri"
3
4
 
4
5
  class Shrine
5
6
  module Storage
@@ -30,7 +31,7 @@ class Shrine
30
31
 
31
32
  def exists?(id)
32
33
  response = request(:head, id)
33
- (200..299).cover?(response.code.to_i)
34
+ (200..399).cover?(response.code.to_i)
34
35
  end
35
36
 
36
37
  def url(id, **options)
@@ -43,15 +44,24 @@ class Shrine
43
44
 
44
45
  private
45
46
 
46
- def request(method, url)
47
+ def request(verb, url, follows_remaining: 2)
47
48
  uri = URI.parse(url)
48
49
  use_ssl = uri.is_a?(URI::HTTPS)
49
50
 
50
- Net::HTTP.start(uri.host, uri.port, use_ssl: use_ssl) do |http|
51
- request = Net::HTTP.const_get(method.to_s.capitalize).new(uri.request_uri)
51
+ response = Net::HTTP.start(uri.host, uri.port, use_ssl: use_ssl) do |http|
52
+ request = Net::HTTP.const_get(verb.capitalize).new(uri.request_uri)
52
53
  yield request if block_given?
53
54
  http.request(request)
54
55
  end
56
+
57
+ if response.is_a?(Net::HTTPRedirection) && follows_remaining > 0
58
+ location = URI.parse(response["Location"])
59
+ location = uri + location if location.relative?
60
+
61
+ response = request(verb, location.to_s, follows_remaining: follows_remaining - 1)
62
+ end
63
+
64
+ response
55
65
  end
56
66
  end
57
67
  end
data/shrine-url.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "shrine-url"
3
- gem.version = "1.0.1"
3
+ gem.version = "1.0.2"
4
4
 
5
5
  gem.required_ruby_version = ">= 2.1"
6
6
 
@@ -19,7 +19,7 @@ Gem::Specification.new do |gem|
19
19
  gem.add_development_dependency "rake"
20
20
  gem.add_development_dependency "minitest"
21
21
  gem.add_development_dependency "docker-api"
22
- gem.add_development_dependency "http", "~> 2.2"
22
+ gem.add_development_dependency "http", "~> 3.0"
23
23
  gem.add_development_dependency "posix-spawn" unless RUBY_ENGINE == "jruby"
24
24
  gem.add_development_dependency "http_parser.rb"
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shrine-url
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Janko Marohnić
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-18 00:00:00.000000000 Z
11
+ date: 2017-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: shrine
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '2.2'
89
+ version: '3.0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '2.2'
96
+ version: '3.0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: posix-spawn
99
99
  requirement: !ruby/object:Gem::Requirement