vagrant-s3auth-mfa 1.4.3 → 1.5.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: e70547a0899e6c27aa2c8c6e191417769c5887743b809b2f531fbf69ff60fe3c
4
- data.tar.gz: 64000adb641cbcb0dec50009a79a89d78a6e822c5103ed5e698008ea81c110bb
3
+ metadata.gz: 385cfd66de798618110817e177bfcb948d4169489f7e633ce13ed0efb70f6e46
4
+ data.tar.gz: 5314ea54b96109d51c63d4de07a8dd302555e84d2b3650c48a7aa6cd0e2dce0f
5
5
  SHA512:
6
- metadata.gz: 6dcabed9610f84f1e0a2e6c44cc979446afcc3a470a16588b50870113eacfbe01545f9cf40f2d09af8b550e5e40da67de5b2a3a8cbc705454e9acf1b5bd7d40f
7
- data.tar.gz: d707c5cc73019200330d8be7ff1342e4ae8b5fd42dd23c209b6bb2fa5e2b0fbd93cca633c64a49494b31f9eef3a8f06a708d677316da26de343945fbbe51d3bc
6
+ metadata.gz: 86f059873423512aecb5db98680b77af9306b166709b1488bb82896a53d806fe3e25d834b4a24a3a6bfc963e44716c13ac00a517f6112c550ac1546545e71b1b
7
+ data.tar.gz: 7e9e6605219a684a3ad93f241c783260dd76ee9334cf1dd07b62fa697051a04731adf2a4c0ac71281e47453559e9d6baeea96f12a42314880170ee8a450cdea7
@@ -1,6 +1,15 @@
1
+ ## 1.5.0
2
+
3
+ **29 January 2019**
4
+
5
+ Features:
6
+
7
+ * Removed tests untill fixed
8
+ * Removed unused dependencies
9
+
1
10
  ## 1.4.1
2
11
 
3
- **15 January 2018**
12
+ **15 January 2019**
4
13
 
5
14
  Features:
6
15
 
@@ -8,7 +17,7 @@ Features:
8
17
 
9
18
  ## 1.4.0
10
19
 
11
- **14 January 2018**
20
+ **14 January 2019**
12
21
 
13
22
  Features:
14
23
 
@@ -1,4 +1,4 @@
1
- require 'aws-sdk'
1
+ require 'aws-sdk-s3'
2
2
  require 'log4r'
3
3
  require 'net/http'
4
4
  require 'uri'
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module S3Auth
3
- VERSION = '1.4.3'.freeze
3
+ VERSION = '1.5.0'.freeze
4
4
  end
5
5
  end
@@ -8,14 +8,14 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ['Nikhil Benesch']
9
9
  spec.email = ['benesch@whoop.com']
10
10
  spec.summary = '[VRTDev Fork]Private, versioned Vagrant boxes hosted on Amazon S3.'
11
- spec.homepage = 'https://github.com/vrtdev/vagrant-s3auth-mfa'
11
+ spec.homepage = 'https://github.com/vrtdev/vagrant-s3auth'
12
12
  spec.license = 'MIT'
13
13
 
14
14
  spec.files = `git ls-files -z`.split("\x0")
15
15
  spec.test_files = spec.files.grep(/spec/)
16
16
  spec.require_paths = ['lib']
17
17
 
18
- spec.add_dependency 'aws-sdk', '>= 3.0', '< 4'
18
+ spec.add_dependency 'aws-sdk-s3', '>= 1.30.0', '< 2'
19
19
  spec.add_dependency 'aws_config', '~> 0.1.0'
20
20
 
21
21
  spec.add_development_dependency 'bundler', '~> 1.5'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-s3auth-mfa
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikhil Benesch
@@ -11,25 +11,25 @@ cert_chain: []
11
11
  date: 2019-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: aws-sdk
14
+ name: aws-sdk-s3
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
19
+ version: 1.30.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '4'
22
+ version: '2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '3.0'
29
+ version: 1.30.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '4'
32
+ version: '2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: aws_config
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -116,8 +116,6 @@ files:
116
116
  - Gemfile
117
117
  - LICENSE
118
118
  - README.md
119
- - Rakefile
120
- - TESTING.md
121
119
  - lib/vagrant-s3auth-mfa.rb
122
120
  - lib/vagrant-s3auth-mfa/errors.rb
123
121
  - lib/vagrant-s3auth-mfa/extension/downloader.rb
@@ -126,16 +124,8 @@ files:
126
124
  - lib/vagrant-s3auth-mfa/util.rb
127
125
  - lib/vagrant-s3auth-mfa/version.rb
128
126
  - locales/en.yml
129
- - test/box/minimal
130
- - test/box/minimal.box
131
- - test/box/public-minimal
132
- - test/box/public-minimal.box
133
- - test/cleanup.rb
134
- - test/run.bats
135
- - test/setup.rb
136
- - test/support.rb
137
127
  - vagrant-s3auth-mfa.gemspec
138
- homepage: https://github.com/vrtdev/vagrant-s3auth-mfa
128
+ homepage: https://github.com/vrtdev/vagrant-s3auth
139
129
  licenses:
140
130
  - MIT
141
131
  metadata: {}
data/Rakefile DELETED
@@ -1,15 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
3
- require 'rubocop/rake_task'
4
-
5
- Dir.chdir(File.expand_path('../', __FILE__))
6
-
7
- Bundler::GemHelper.install_tasks
8
-
9
- RuboCop::RakeTask.new(:lint)
10
-
11
- task :test do
12
- sh 'bats test/run.bats'
13
- end
14
-
15
- task default: %w[lint test]
data/TESTING.md DELETED
@@ -1,70 +0,0 @@
1
- # Testing
2
-
3
- No unit testing, since the project is so small. But a full suite of acceptance
4
- tests that run using [Bats: Bash Automated Testing System][bats]! Basically, the
5
- acceptance tests run `vagrant box add S3_URL` with a bunch of S3 URLs and box
6
- types, and assert that everything works!
7
-
8
- See [the .travis.yml CI configuration](.travis.yml) for a working example.
9
-
10
- ## Environment variables
11
-
12
- You'll need to export the below. Recommended values included when not sensitive.
13
-
14
- ```bash
15
- # AWS credentials with permissions to create S3 buckets
16
- export AWS_ACCESS_KEY_ID=
17
- export AWS_SECRET_ACCESS_KEY=
18
-
19
- # Atlas (Vagrant Cloud) API credentials
20
- export ATLAS_USERNAME="vagrant-s3auth"
21
- export ATLAS_TOKEN
22
-
23
- # Base name of bucket. Must be unique.
24
- export VAGRANT_S3AUTH_BUCKET="testing.vagrant-s3auth.com"
25
-
26
- # If specified as 'metadata', will upload 'box/metadata' and 'box/metadata.box'
27
- # to each S3 bucket
28
- export VAGRANT_S3AUTH_BOX_BASE="minimal"
29
-
30
- # Base name of Atlas (Vagrant Cloud) box. Atlas boxes can never re-use a once
31
- # existing name, so include a timestamp or random string in the name.
32
- export VAGRANT_S3AUTH_ATLAS_BOX_NAME="vagrant-s3auth-192458"
33
-
34
- # Additional S3 region to use in testing. US Standard is always used.
35
- export VAGRANT_S3AUTH_REGION_NONSTANDARD="eu-west-1"
36
- ```
37
-
38
- [bats]: https://github.com/sstephenson/bats
39
-
40
- ## Running tests
41
-
42
- You'll need [Bats][bats] installed! Then:
43
-
44
- ```bash
45
- # export env vars as described
46
- $ test/setup.rb
47
- $ rake test
48
- # hack hack hack
49
- $ rake test
50
- $ test/cleanup.rb
51
- ```
52
-
53
- ## Scripts
54
-
55
- ### test/setup.rb
56
-
57
- Creates two S3 buckets—one in US Standard (`us-east-1`) and one in
58
- `$VAGRANT_S3AUTH_REGION_NONSTANDARD`, both with the contents of the box
59
- directory.
60
-
61
- Then creates an Atlas (Vagrant Cloud) box with one version with one VirtualBox
62
- provider that points to one of the S3 boxes at random.
63
-
64
- ### test/cleanup.rb
65
-
66
- Destroys S3 buckets and Atlas box.
67
-
68
- ## run.bats
69
-
70
- Attempts to `vagrant box add` the boxes on S3 in every way possible.
@@ -1,13 +0,0 @@
1
- {
2
- "name": "vagrant-s3auth-mfa/minimal",
3
- "description": "This box contains company secrets.",
4
- "versions": [{
5
- "version": "1.0.1",
6
- "providers": [{
7
- "name": "virtualbox",
8
- "url": "%{box_url}",
9
- "checksum_type": "sha1",
10
- "checksum": "8ea536dd3092cf159f02405edd44ded5b62ba4e6"
11
- }]
12
- }]
13
- }
Binary file
@@ -1,13 +0,0 @@
1
- {
2
- "name": "vagrant-s3auth-mfa/public-minimal",
3
- "description": "This box contains no company secrets.",
4
- "versions": [{
5
- "version": "1.0.1",
6
- "providers": [{
7
- "name": "virtualbox",
8
- "url": "%{box_url}",
9
- "checksum_type": "sha1",
10
- "checksum": "8ea536dd3092cf159f02405edd44ded5b62ba4e6"
11
- }]
12
- }]
13
- }
@@ -1 +0,0 @@
1
- test/box/minimal.box
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'bundler/setup'
4
- require 'aws-sdk'
5
-
6
- require_relative 'support'
7
-
8
- [REGION_STANDARD, REGION_NONSTANDARD].each do |region|
9
- s3 = Aws::S3::Resource.new(region: region)
10
-
11
- buckets = if ARGV.include?('--all')
12
- s3.buckets.select do |b|
13
- b.name.include?('vagrant-s3auth-mfa.com') && b.name.include?(region)
14
- end
15
- else
16
- [s3.bucket("#{region}.#{BUCKET}")]
17
- end
18
-
19
- buckets.each { |b| b.delete! if b.exists? }
20
- end
21
-
22
- atlas = Atlas.new(ATLAS_TOKEN, ATLAS_USERNAME)
23
- atlas.delete_box(ATLAS_BOX_NAME)
@@ -1,147 +0,0 @@
1
- #!/usr/bin/env bats
2
-
3
- missing_vars=()
4
-
5
- require_var() {
6
- [[ "${!1}" ]] || missing_vars+=("$1")
7
- }
8
-
9
- require_var AWS_ACCESS_KEY_ID
10
- require_var AWS_SECRET_ACCESS_KEY
11
- require_var ATLAS_TOKEN
12
- require_var ATLAS_USERNAME
13
- require_var VAGRANT_S3AUTH_BUCKET
14
- require_var VAGRANT_S3AUTH_BOX_BASE
15
- require_var VAGRANT_S3AUTH_ATLAS_BOX_NAME
16
- require_var VAGRANT_S3AUTH_REGION_NONSTANDARD
17
-
18
- if [[ ${#missing_vars[*]} -gt 0 ]]; then
19
- echo "Missing required environment variables:"
20
- printf ' %s\n' "${missing_vars[@]}"
21
- exit 1
22
- fi
23
-
24
- teardown() {
25
- bundle exec vagrant box remove "$VAGRANT_S3AUTH_BOX_BASE" > /dev/null 2>&1 || true
26
- bundle exec vagrant box remove "public-$VAGRANT_S3AUTH_BOX_BASE" > /dev/null 2>&1 || true
27
- bundle exec vagrant box remove "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" > /dev/null 2>&1 || true
28
- bundle exec vagrant box remove "vagrant-s3auth-mfa/public-$VAGRANT_S3AUTH_BOX_BASE" > /dev/null 2>&1 || true
29
- bundle exec vagrant box remove "$ATLAS_USERNAME/$VAGRANT_S3AUTH_ATLAS_BOX_NAME" > /dev/null 2>&1 || true
30
- }
31
-
32
- @test "vagrant cloud" {
33
- bundle exec vagrant box add "$ATLAS_USERNAME/$VAGRANT_S3AUTH_ATLAS_BOX_NAME"
34
- }
35
-
36
- @test "simple box with full path standard url" {
37
- bundle exec vagrant box add \
38
- --name "$VAGRANT_S3AUTH_BOX_BASE" \
39
- "https://s3.amazonaws.com/us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
40
- }
41
-
42
- @test "public simple box with full path standard url without credentials" {
43
- AWS_ACCESS_KEY_ID= \
44
- bundle exec vagrant box add \
45
- --name "$VAGRANT_S3AUTH_BOX_BASE" \
46
- "https://s3.amazonaws.com/us-east-1.$VAGRANT_S3AUTH_BUCKET/public-$VAGRANT_S3AUTH_BOX_BASE.box"
47
- }
48
-
49
- @test "simple box with full host standard url" {
50
- bundle exec vagrant box add \
51
- --name "$VAGRANT_S3AUTH_BOX_BASE" \
52
- "https://us-east-1.$VAGRANT_S3AUTH_BUCKET.s3.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE.box"
53
- }
54
-
55
- @test "simple box with shorthand standard url" {
56
- bundle exec vagrant box add \
57
- --name "$VAGRANT_S3AUTH_BOX_BASE" \
58
- "s3://us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
59
- }
60
-
61
- @test "simple box with full path nonstandard url" {
62
- bundle exec vagrant box add \
63
- --name "$VAGRANT_S3AUTH_BOX_BASE" \
64
- "https://s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
65
- }
66
-
67
- @test "public simple box with full path nonstandard url without credentials" {
68
- AWS_ACCESS_KEY_ID= \
69
- bundle exec vagrant box add \
70
- --name "$VAGRANT_S3AUTH_BOX_BASE" \
71
- "https://s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/public-$VAGRANT_S3AUTH_BOX_BASE.box"
72
- }
73
-
74
- @test "simple box with full host nonstandard url" {
75
- bundle exec vagrant box add \
76
- --name "$VAGRANT_S3AUTH_BOX_BASE" \
77
- "https://$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET.s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE.box"
78
- }
79
-
80
- @test "simple box with shorthand nonstandard url" {
81
- bundle exec vagrant box add \
82
- --name "$VAGRANT_S3AUTH_BOX_BASE" \
83
- "s3://$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
84
- }
85
-
86
- @test "metadata box with full path standard url" {
87
- bundle exec vagrant box add \
88
- --name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
89
- "https://s3.amazonaws.com/us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE"
90
- }
91
-
92
- @test "public metadata box with full path standard url without credentials" {
93
- AWS_ACCESS_KEY_ID= \
94
- bundle exec vagrant box add \
95
- --name "vagrant-s3auth-mfa/public-$VAGRANT_S3AUTH_BOX_BASE" \
96
- "https://s3.amazonaws.com/us-east-1.$VAGRANT_S3AUTH_BUCKET/public-$VAGRANT_S3AUTH_BOX_BASE"
97
- }
98
-
99
- @test "metadata box with full host standard url" {
100
- bundle exec vagrant box add \
101
- --name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
102
- "https://us-east-1.$VAGRANT_S3AUTH_BUCKET.s3.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE"
103
- }
104
-
105
- @test "metadata box with shorthand standard url" {
106
- bundle exec vagrant box add \
107
- --name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
108
- "s3://us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE"
109
- }
110
-
111
- @test "metadata box with full path nonstandard url" {
112
- bundle exec vagrant box add \
113
- --name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
114
- "https://s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE"
115
- }
116
-
117
- @test "public metadata box with full path nonstandard url without credentials" {
118
- AWS_ACCESS_KEY_ID= \
119
- bundle exec vagrant box add \
120
- --name "vagrant-s3auth-mfa/public-$VAGRANT_S3AUTH_BOX_BASE" \
121
- "https://s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/public-$VAGRANT_S3AUTH_BOX_BASE"
122
- }
123
-
124
-
125
- @test "metadata box with full host nonstandard url" {
126
- bundle exec vagrant box add \
127
- --name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
128
- "https://$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET.s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE"
129
- }
130
-
131
- @test "metadata box with shorthand nonstandard url" {
132
- bundle exec vagrant box add \
133
- --name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
134
- "s3://$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE"
135
- }
136
-
137
- @test "garbage shorthand url" {
138
- run bundle exec vagrant box add --name "$VAGRANT_S3AUTH_BOX_BASE" s3://smoogedydoop
139
- [[ "$status" -eq 1 ]]
140
- [[ "$output" == *"Malformed shorthand S3 box URL"* ]]
141
- }
142
-
143
- @test "garbage full url" {
144
- run bundle exec vagrant box add --name "$VAGRANT_S3AUTH_BOX_BASE" https://smoogedydoop
145
- [[ "$status" -eq 1 ]]
146
- [[ "$output" == *"error occurred while downloading the remote file"* ]]
147
- }
@@ -1,34 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'bundler/setup'
4
- require 'aws-sdk'
5
-
6
- require_relative 'support'
7
-
8
- ROOT = Pathname.new(File.dirname(__FILE__))
9
-
10
- box_urls = [REGION_STANDARD, REGION_NONSTANDARD].flat_map do |region|
11
- s3 = Aws::S3::Resource.new(region: region)
12
- bucket = s3.create_bucket(bucket: "#{region}.#{BUCKET}")
13
-
14
- [BOX_BASE, 'public-' + BOX_BASE].flat_map do |box_name|
15
- box = bucket.object("#{box_name}.box")
16
- box.upload_file(ROOT + Pathname.new("box/#{box_name}.box"))
17
- box.acl.put(acl: 'public-read') if box_name.start_with?('public')
18
-
19
- metadata_string = format(File.read(ROOT + Pathname.new("box/#{box_name}")),
20
- box_url: box.public_url)
21
-
22
- metadata = bucket.object(box_name)
23
- metadata.put(body: metadata_string, content_type: 'application/json')
24
- metadata.acl.put(acl: 'public-read') if box_name.start_with?('public')
25
-
26
- box.public_url
27
- end
28
- end
29
-
30
- atlas = Atlas.new(ATLAS_TOKEN, ATLAS_USERNAME)
31
- atlas.create_box(ATLAS_BOX_NAME)
32
- atlas.create_version(ATLAS_BOX_NAME, '1.0.1')
33
- atlas.create_provider(ATLAS_BOX_NAME, '1.0.1', box_urls.sample)
34
- atlas.release_version(ATLAS_BOX_NAME, '1.0.1')
@@ -1,82 +0,0 @@
1
- require 'http'
2
-
3
- BOX_BASE = ENV['VAGRANT_S3AUTH_BOX_BASE'].freeze
4
- BUCKET = ENV['VAGRANT_S3AUTH_BUCKET'].freeze
5
- REGION_STANDARD = 'us-east-1'.freeze
6
- REGION_NONSTANDARD = ENV['VAGRANT_S3AUTH_REGION_NONSTANDARD'].freeze
7
-
8
- ATLAS_TOKEN = ENV['ATLAS_TOKEN'].freeze
9
- ATLAS_USERNAME = ENV['ATLAS_USERNAME'].freeze
10
- ATLAS_BOX_NAME = ENV['VAGRANT_S3AUTH_ATLAS_BOX_NAME'].freeze
11
-
12
- class Atlas
13
- BASE_URL = 'https://app.vagrantup.com/api/v1'.freeze
14
-
15
- BOX_CREATE_URL = "#{BASE_URL}/boxes".freeze
16
- BOX_RESOURCE_URL = "#{BASE_URL}/box/%<username>s/%<box_name>s".freeze
17
-
18
- VERSION_CREATE_URL = "#{BOX_RESOURCE_URL}/versions".freeze
19
- VERSION_RESOURCE_URL = "#{BOX_RESOURCE_URL}/version/%<version>s".freeze
20
- VERSION_RELEASE_URL = "#{VERSION_RESOURCE_URL}/release".freeze
21
-
22
- PROVIDER_CREATE_URL = "#{VERSION_RESOURCE_URL}/providers".freeze
23
- PROVIDER_RESOURCE_URL = "#{VERSION_RESOURCE_URL}/provider/%<provider_name>s".freeze
24
-
25
- attr_accessor :provider
26
-
27
- def initialize(token, username)
28
- raise if !token || token.empty?
29
- raise if !username || username.empty?
30
-
31
- @token = token
32
- @username = username
33
- @provider = 'virtualbox'
34
- end
35
-
36
- def create_box(box_name)
37
- post(BOX_CREATE_URL, data: { box: { name: box_name, is_private: false } })
38
- end
39
-
40
- def delete_box(box_name)
41
- url_params = { box_name: box_name }
42
- delete(BOX_RESOURCE_URL, url_params: url_params)
43
- end
44
-
45
- def create_version(box_name, version)
46
- post(VERSION_CREATE_URL,
47
- data: { version: { version: version } },
48
- url_params: { box_name: box_name })
49
- end
50
-
51
- def release_version(box_name, version)
52
- put(VERSION_RELEASE_URL,
53
- url_params: { box_name: box_name, version: version })
54
- end
55
-
56
- def create_provider(box_name, version, url)
57
- post(PROVIDER_CREATE_URL,
58
- data: { provider: { name: @provider, url: url } },
59
- url_params: { box_name: box_name, version: version })
60
- end
61
-
62
- def request(method, url, options)
63
- url_params = (options[:url_params] || {}).merge(username: @username)
64
- data = (options[:data] || {})
65
-
66
- url = (url % url_params) + "?access_token=#{@token}"
67
- response = HTTP.request(method, url, json: data)
68
- raise response unless response.code >= 200 && response.code < 400
69
- end
70
-
71
- def post(url, options)
72
- request(:post, url, options)
73
- end
74
-
75
- def put(url, options)
76
- request(:put, url, options)
77
- end
78
-
79
- def delete(url, options)
80
- request(:delete, url, options)
81
- end
82
- end