vagrant-s3auth 1.0.0 → 1.0.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
  SHA1:
3
- metadata.gz: eafb392e95d39afdc9210feb19836e4b128bffba
4
- data.tar.gz: 385dbe4e3449263bfa5ce7071cf9ec615b52b14d
3
+ metadata.gz: 497d147d5fb4636bd0653dcc502062c8ee3ccbc1
4
+ data.tar.gz: e1c85dcd893e04a9a74e65c3c6b709620d31cfde
5
5
  SHA512:
6
- metadata.gz: 3ac40f12b14adaa86f877e27099a1afec61f468b371de35be52ee8a2ea8c18d4fbe519a34d8a698ee3d2a267b33bbf4a9b1bb0449d171ce19ed37f7fa05adbbc
7
- data.tar.gz: aa707d08bc2c4afef554e451bec8e6fad54215e198bbd3c3259d4fbb019ff6cbf7c4885d163755e3ae07c320825b960abbf1995b92e21e075293f982b45b9011
6
+ metadata.gz: 7f6a8b6450e73759490ff0ae77f365283f47fc591f2b3a45e9bde151495aed5e63ef780ec33a794f6e8d92d543f32f1e2327ad50f2f8f43a9dec370997c00e55
7
+ data.tar.gz: df4ba738e97b5eceec09d7e02654b4bf3b2c17e74ada47db61f6507bb9a22d84f2cd241e62deb1dfab548f821cc838709cf6e8f0ad95f1ec671a171333f2c020
data/.rubocop.yml CHANGED
@@ -5,7 +5,7 @@ Metrics/AbcSize:
5
5
  Max: 30
6
6
 
7
7
  Metrics/CyclomaticComplexity:
8
- Max: 10
8
+ Max: 12
9
9
 
10
10
  Metrics/LineLength:
11
11
  Max: 100
@@ -15,7 +15,7 @@ Metrics/MethodLength:
15
15
  Max: 20
16
16
 
17
17
  Metrics/PerceivedComplexity:
18
- Max: 12
18
+ Max: 15
19
19
 
20
20
  Style/AlignParameters:
21
21
  EnforcedStyle: with_fixed_indentation
data/CHANGELOG.md CHANGED
@@ -1,6 +1,19 @@
1
+ ## 1.0.1
2
+
3
+ **21 December 2014**
4
+
5
+ Enhancements:
6
+
7
+ * support bucket-in-host style S3 URLs to simplify usage instructions
8
+
9
+ Fixes:
10
+
11
+ * internal cleanup
12
+ * improved detection of incompatible Vagrant versions
13
+
1
14
  ## 1.0.0
2
15
 
3
- **Unreleased**
16
+ **16 December 2014**
4
17
 
5
18
  Enhancements:
6
19
 
data/Gemfile.lock CHANGED
@@ -23,7 +23,7 @@ GIT
23
23
  PATH
24
24
  remote: .
25
25
  specs:
26
- vagrant-s3auth (1.0.0)
26
+ vagrant-s3auth (1.0.1)
27
27
  aws-sdk (~> 1.59.1)
28
28
 
29
29
  GEM
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # vagrant-s3auth
2
2
 
3
3
  <a href="https://travis-ci.org/WhoopInc/vagrant-s3auth">
4
- <img src="https://travis-ci.org/WhoopInc/vagrant-s3auth.svg?branch=1.0-cleanup"
4
+ <img src="https://travis-ci.org/WhoopInc/vagrant-s3auth.svg?branch=master"
5
5
  align="right">
6
6
  </a>
7
7
 
@@ -62,11 +62,16 @@ ENV['AWS_SECRET_ACCESS_KEY'] = creds[1].chomp
62
62
 
63
63
  #### S3 URLs
64
64
 
65
- Note that your URL must use the path style of specifying the bucket:
65
+ You can use any valid HTTP(S) URL for your object:
66
66
 
67
- ```
67
+ ```bash
68
+ # path style
68
69
  http://s3.amazonaws.com/bucket/resource
69
70
  https://s3.amazonaws.com/bucket/resource
71
+
72
+ # host style
73
+ http://bucket.s3.amazonaws.com/resource
74
+ https://bucket.s3.amazonaws.com/resource
70
75
  ```
71
76
 
72
77
  Or the S3 protocol shorthand
@@ -77,13 +82,6 @@ s3://bucket/resource
77
82
 
78
83
  which expands to the path-style HTTPS URL.
79
84
 
80
- Virtual host-style S3 URLs, where the bucket is specified in the hostname, are
81
- **not detected**!
82
-
83
- ```
84
- https://bucket.s3-region.amazonaws.com/resource # ignored
85
- ```
86
-
87
85
  ##### Non-standard regions
88
86
 
89
87
  If your bucket is not hosted in the US Standard region, you'll need to specify
@@ -91,6 +89,7 @@ the correct region endpoint as part of the URL:
91
89
 
92
90
  ```
93
91
  https://s3-us-west-2.amazonaws.com/bucket/resource
92
+ https://bucket.s3-us-west-2.amazonaws.com/resource
94
93
  ```
95
94
 
96
95
  Or just use the S3 protocol shorthand, which will automatically determine the
@@ -3,18 +3,19 @@ require 'uri'
3
3
  require 'vagrant/util/downloader'
4
4
  require 'vagrant-s3auth/util'
5
5
 
6
+ S3Auth = VagrantPlugins::S3Auth
7
+
6
8
  module Vagrant
7
9
  module Util
8
10
  class Downloader
9
11
  def execute_curl_with_s3(options, subprocess_options, &data_proc)
10
- begin
11
- url = URI.parse(@source)
12
- rescue URI::InvalidURIError
13
- @logger.info("s3auth: Ignoring unparsable URL: #{url}")
14
- end
12
+ # The URL sent to curl is always the last argument. We have to rely
13
+ # on this implementation detail because we need to hook into both
14
+ # HEAD and GET requests.
15
+ url = options.last
15
16
 
16
- if url && (s3_object = VagrantPlugins::S3Auth::Util.s3_object_for(url))
17
- @logger.info("s3auth: Discovered S3 URL: #{url}")
17
+ if s3_object = S3Auth::Util.s3_object_for(url)
18
+ @logger.info("s3auth: Discovered S3 URL: #{@source}")
18
19
  @logger.debug("s3auth: Bucket: #{s3_object.bucket.name.inspect}")
19
20
  @logger.debug("s3auth: Key: #{s3_object.key.inspect}")
20
21
 
@@ -22,8 +23,7 @@ module Vagrant
22
23
 
23
24
  @logger.info("s3auth: Generating signed URL for #{method.upcase}")
24
25
 
25
- options.pop
26
- options << VagrantPlugins::S3Auth::Util.s3_url_for(method, s3_object).to_s
26
+ url.replace(S3Auth::Util.s3_url_for(method, s3_object).to_s)
27
27
  end
28
28
 
29
29
  execute_curl_without_s3(options, subprocess_options, &data_proc)
@@ -4,16 +4,14 @@ rescue LoadError
4
4
  raise 'The Vagrant S3Auth plugin must be run within Vagrant.'
5
5
  end
6
6
 
7
- if Vagrant::VERSION < '1.5.0'
8
- raise 'The Vagrant AWS plugin is only compatible with Vagrant 1.5+'
9
- end
10
-
11
7
  require_relative 'errors'
12
- require_relative 'extensions'
8
+ require_relative 'extension/downloader'
13
9
 
14
10
  module VagrantPlugins
15
11
  module S3Auth
16
- class Plugin < Vagrant.plugin(2)
12
+ class Plugin < Vagrant.plugin('2')
13
+ Vagrant.require_version('>= 1.5.1')
14
+
17
15
  name 's3auth'
18
16
 
19
17
  description <<-DESC
@@ -6,7 +6,7 @@ require 'uri'
6
6
  module VagrantPlugins
7
7
  module S3Auth
8
8
  module Util
9
- S3_HOST_MATCHER = /^s3([[:alnum:]\-\.]+)?\.amazonaws\.com$/
9
+ S3_HOST_MATCHER = /^((?<bucket>[[:alnum:]\-\.]+).)?s3([[:alnum:]\-\.]+)?\.amazonaws\.com$/
10
10
 
11
11
  LOCATION_TO_REGION = Hash.new { |_, key| key }.merge(
12
12
  nil => 'us-east-1',
@@ -20,9 +20,9 @@ module VagrantPlugins
20
20
  bucket = url.host
21
21
  key = url.path[1..-1]
22
22
  raise Errors::MalformedShorthandURLError, url: url unless bucket && key
23
- elsif url.host =~ S3_HOST_MATCHER
23
+ elsif match = S3_HOST_MATCHER.match(url.host)
24
24
  components = url.path.split('/').delete_if(&:empty?)
25
- bucket = components.shift
25
+ bucket = match['bucket'] || components.shift
26
26
  key = components.join('/')
27
27
  end
28
28
 
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module S3Auth
3
- VERSION = '1.0.0'
3
+ VERSION = '1.0.1'
4
4
  end
5
5
  end
data/test/run.bats CHANGED
@@ -31,48 +31,72 @@ teardown() {
31
31
  bundle exec vagrant box add "$ATLAS_USERNAME/$VAGRANT_S3AUTH_ATLAS_BOX_NAME"
32
32
  }
33
33
 
34
- @test "simple box with full standard url" {
34
+ @test "simple box with full path standard url" {
35
35
  bundle exec vagrant box add \
36
36
  --name "$VAGRANT_S3AUTH_BOX_BASE" \
37
37
  "https://s3.amazonaws.com/us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
38
38
  }
39
39
 
40
+ @test "simple box with full host standard url" {
41
+ bundle exec vagrant box add \
42
+ --name "$VAGRANT_S3AUTH_BOX_BASE" \
43
+ "https://us-east-1.$VAGRANT_S3AUTH_BUCKET.s3.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE.box"
44
+ }
45
+
40
46
  @test "simple box with shorthand standard url" {
41
47
  bundle exec vagrant box add \
42
48
  --name "$VAGRANT_S3AUTH_BOX_BASE" \
43
49
  "s3://us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
44
50
  }
45
51
 
46
- @test "simple box with full nonstandard url" {
52
+ @test "simple box with full path nonstandard url" {
47
53
  bundle exec vagrant box add \
48
54
  --name "$VAGRANT_S3AUTH_BOX_BASE" \
49
55
  "https://s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
50
56
  }
51
57
 
58
+ @test "simple box with full host nonstandard url" {
59
+ bundle exec vagrant box add \
60
+ --name "$VAGRANT_S3AUTH_BOX_BASE" \
61
+ "https://$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET.s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE.box"
62
+ }
63
+
52
64
  @test "simple box with shorthand nonstandard url" {
53
65
  bundle exec vagrant box add \
54
66
  --name "$VAGRANT_S3AUTH_BOX_BASE" \
55
67
  "s3://$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
56
68
  }
57
69
 
58
- @test "metadata box with full standard url" {
70
+ @test "metadata box with full path standard url" {
59
71
  bundle exec vagrant box add \
60
72
  --name "vagrant-s3auth/$VAGRANT_S3AUTH_BOX_BASE" \
61
73
  "https://s3.amazonaws.com/us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE"
62
74
  }
63
75
 
76
+ @test "metadata box with full host standard url" {
77
+ bundle exec vagrant box add \
78
+ --name "vagrant-s3auth/$VAGRANT_S3AUTH_BOX_BASE" \
79
+ "https://us-east-1.$VAGRANT_S3AUTH_BUCKET.s3.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE"
80
+ }
81
+
64
82
  @test "metadata box with shorthand standard url" {
65
83
  bundle exec vagrant box add \
66
84
  --name "vagrant-s3auth/$VAGRANT_S3AUTH_BOX_BASE" \
67
85
  "s3://us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE"
68
86
  }
69
87
 
70
- @test "metadata box with full nonstandard url" {
88
+ @test "metadata box with full path nonstandard url" {
71
89
  bundle exec vagrant box add \
72
90
  --name "vagrant-s3auth/$VAGRANT_S3AUTH_BOX_BASE" \
73
91
  "https://s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE"
74
92
  }
75
93
 
94
+ @test "metadata box with full host nonstandard url" {
95
+ bundle exec vagrant box add \
96
+ --name "vagrant-s3auth/$VAGRANT_S3AUTH_BOX_BASE" \
97
+ "https://$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET.s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE"
98
+ }
99
+
76
100
  @test "metadata box with shorthand nonstandard url" {
77
101
  bundle exec vagrant box add \
78
102
  --name "vagrant-s3auth/$VAGRANT_S3AUTH_BOX_BASE" \
@@ -88,6 +112,5 @@ teardown() {
88
112
  @test "garbage full url" {
89
113
  run bundle exec vagrant box add --name "$VAGRANT_S3AUTH_BOX_BASE" https://smoogedydoop
90
114
  [[ "$status" -eq 1 ]]
91
- echo "$output"
92
115
  [[ "$output" == *"error occurred while downloading the remote file"* ]]
93
116
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-s3auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikhil Benesch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-16 00:00:00.000000000 Z
11
+ date: 2014-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -101,8 +101,7 @@ files:
101
101
  - TESTING.md
102
102
  - lib/vagrant-s3auth.rb
103
103
  - lib/vagrant-s3auth/errors.rb
104
- - lib/vagrant-s3auth/extensions.rb
105
- - lib/vagrant-s3auth/extensions/downloader.rb
104
+ - lib/vagrant-s3auth/extension/downloader.rb
106
105
  - lib/vagrant-s3auth/plugin.rb
107
106
  - lib/vagrant-s3auth/util.rb
108
107
  - lib/vagrant-s3auth/version.rb
@@ -1 +0,0 @@
1
- require_relative 'extensions/downloader'