fog 0.0.93 → 0.0.94

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.
Files changed (58) hide show
  1. data/Gemfile +2 -1
  2. data/Gemfile.lock +13 -7
  3. data/bin/fog +6 -0
  4. data/fog.gemspec +40 -3
  5. data/lib/fog.rb +2 -1
  6. data/lib/fog/aws.rb +12 -8
  7. data/lib/fog/aws/parsers/s3/get_bucket_logging.rb +40 -0
  8. data/lib/fog/aws/parsers/s3/get_bucket_object_versions.rb +88 -0
  9. data/lib/fog/aws/parsers/s3/get_bucket_versioning.rb +24 -0
  10. data/lib/fog/aws/requests/ec2/associate_address.rb +3 -0
  11. data/lib/fog/aws/requests/ec2/describe_instances.rb +4 -3
  12. data/lib/fog/aws/requests/ec2/disassociate_address.rb +4 -0
  13. data/lib/fog/aws/requests/s3/get_bucket.rb +6 -5
  14. data/lib/fog/aws/requests/s3/get_bucket_logging.rb +53 -0
  15. data/lib/fog/aws/requests/s3/get_bucket_object_versions.rb +83 -0
  16. data/lib/fog/aws/requests/s3/get_bucket_versioning.rb +43 -0
  17. data/lib/fog/aws/requests/s3/get_object.rb +6 -1
  18. data/lib/fog/aws/requests/s3/get_object_acl.rb +8 -2
  19. data/lib/fog/aws/requests/s3/head_object.rb +4 -1
  20. data/lib/fog/aws/requests/s3/put_bucket_acl.rb +1 -1
  21. data/lib/fog/aws/requests/s3/put_bucket_logging.rb +87 -0
  22. data/lib/fog/aws/requests/s3/put_bucket_versioning.rb +40 -0
  23. data/lib/fog/aws/s3.rb +9 -1
  24. data/lib/fog/bin.rb +1 -1
  25. data/lib/fog/credentials.rb +6 -2
  26. data/lib/fog/vcloud.rb +288 -0
  27. data/lib/fog/vcloud/bin.rb +57 -0
  28. data/lib/fog/vcloud/parser.rb +34 -0
  29. data/lib/fog/vcloud/parsers/get_organization.rb +37 -0
  30. data/lib/fog/vcloud/parsers/get_vdc.rb +37 -0
  31. data/lib/fog/vcloud/parsers/get_versions.rb +46 -0
  32. data/lib/fog/vcloud/parsers/login.rb +40 -0
  33. data/lib/fog/vcloud/requests/get_organization.rb +55 -0
  34. data/lib/fog/vcloud/requests/get_vdc.rb +59 -0
  35. data/lib/fog/vcloud/requests/get_versions.rb +43 -0
  36. data/lib/fog/vcloud/requests/login.rb +46 -0
  37. data/lib/fog/vcloud/terremark/all.rb +9 -0
  38. data/lib/fog/vcloud/terremark/ecloud.rb +47 -0
  39. data/lib/fog/vcloud/terremark/ecloud/parsers/get_vdc.rb +59 -0
  40. data/lib/fog/vcloud/terremark/ecloud/requests/get_vdc.rb +94 -0
  41. data/lib/fog/vcloud/terremark/ecloud/requests/login.rb +27 -0
  42. data/lib/fog/vcloud/terremark/vcloud.rb +43 -0
  43. data/lib/fog/vcloud/terremark/vcloud/parsers/get_vdc.rb +34 -0
  44. data/lib/fog/vcloud/terremark/vcloud/requests/get_vdc.rb +65 -0
  45. data/spec/aws/requests/ec2/describe_instances_spec.rb +4 -4
  46. data/spec/spec_helper.rb +3 -1
  47. data/spec/vcloud/bin_spec.rb +31 -0
  48. data/spec/vcloud/requests/get_organization_spec.rb +46 -0
  49. data/spec/vcloud/requests/get_vdc_spec.rb +50 -0
  50. data/spec/vcloud/requests/get_versions_spec.rb +28 -0
  51. data/spec/vcloud/requests/login_spec.rb +8 -0
  52. data/spec/vcloud/spec_helper.rb +184 -0
  53. data/spec/vcloud/terremark/ecloud/requests/get_vdc_spec.rb +135 -0
  54. data/spec/vcloud/terremark/ecloud/requests/login_spec.rb +7 -0
  55. data/spec/vcloud/terremark/vcloud/requests/get_vdc_spec.rb +74 -0
  56. data/spec/vcloud/vcloud_spec.rb +17 -0
  57. data/tests/aws/requests/ec2/address_tests.rb +3 -0
  58. metadata +42 -5
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source 'http://gemcutter.org'
2
2
 
3
3
  gem 'rake'
4
- gem 'excon', '>= 0.0.22'
4
+ gem 'excon', '>= 0.0.24'
5
5
  gem 'formatador', ">= 0.0.10"
6
6
  gem 'json', ">= 0"
7
7
  gem 'mime-types', ">= 0"
@@ -10,3 +10,4 @@ gem 'nokogiri', ">= 0"
10
10
  gem 'ruby-hmac', ">= 0"
11
11
  gem 'rspec', '>= 0'
12
12
  gem 'shindo', '>= 0'
13
+ gem 'builder', '>= 0'
@@ -8,7 +8,7 @@ dependencies:
8
8
  group:
9
9
  - :default
10
10
  version: ">= 0"
11
- ruby-hmac:
11
+ rspec:
12
12
  group:
13
13
  - :default
14
14
  version: ">= 0"
@@ -16,22 +16,26 @@ dependencies:
16
16
  group:
17
17
  - :default
18
18
  version: ">= 0"
19
- rspec:
19
+ ruby-hmac:
20
20
  group:
21
21
  - :default
22
22
  version: ">= 0"
23
- net-ssh:
23
+ json:
24
24
  group:
25
25
  - :default
26
26
  version: ">= 0"
27
- json:
27
+ net-ssh:
28
28
  group:
29
29
  - :default
30
30
  version: ">= 0"
31
31
  excon:
32
32
  group:
33
33
  - :default
34
- version: ">= 0.0.22"
34
+ version: ">= 0.0.24"
35
+ builder:
36
+ group:
37
+ - :default
38
+ version: ">= 0"
35
39
  shindo:
36
40
  group:
37
41
  - :default
@@ -43,8 +47,10 @@ dependencies:
43
47
  specs:
44
48
  - rake:
45
49
  version: 0.8.7
50
+ - builder:
51
+ version: 2.1.2
46
52
  - excon:
47
- version: 0.0.22
53
+ version: 0.0.24
48
54
  - formatador:
49
55
  version: 0.0.14
50
56
  - gestalt:
@@ -63,7 +69,7 @@ specs:
63
69
  version: 0.4.0
64
70
  - shindo:
65
71
  version: 0.0.18
66
- hash: a39d842433b002231eebfd269d32fe72b489b62f
72
+ hash: 9a6ccfd107913e3f8ca98af1fe437f5d2b7b112a
67
73
  sources:
68
74
  - Rubygems:
69
75
  uri: http://gemcutter.org
data/bin/fog CHANGED
@@ -15,6 +15,7 @@ require 'fog/local/bin'
15
15
  require 'fog/rackspace/bin'
16
16
  require 'fog/slicehost/bin'
17
17
  require 'fog/terremark/bin'
18
+ require 'fog/vcloud/bin'
18
19
 
19
20
  if ARGV.length > 1
20
21
  print(instance_eval(ARGV[1..-1].join(' ')).to_json)
@@ -37,6 +38,11 @@ else
37
38
  end
38
39
  print "Welcome to fog interactive!\n"
39
40
  print "Your '#{Fog.credential.to_s}' configuration provides access to #{available_services}.\n"
41
+ Fog.services.each do |service|
42
+ if service.respond_to?(:startup_notice)
43
+ service.send(:startup_notice)
44
+ end
45
+ end
40
46
 
41
47
  catch(:IRB_EXIT) { @irb.eval_input }
42
48
 
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
7
7
  ## If your rubyforge_project name is different, then edit it and comment out
8
8
  ## the sub! line in the Rakefile
9
9
  s.name = 'fog'
10
- s.version = '0.0.93'
11
- s.date = '2010-05-10'
10
+ s.version = '0.0.94'
11
+ s.date = '2010-05-13'
12
12
  s.rubyforge_project = 'fog'
13
13
 
14
14
  ## Make sure your summary is short. The description may be as long
@@ -42,7 +42,7 @@ Gem::Specification.new do |s|
42
42
 
43
43
  ## List your runtime dependencies here. Runtime dependencies are those
44
44
  ## that are needed for an end user to actually USE your code.
45
- s.add_dependency('excon', '>=0.0.23')
45
+ s.add_dependency('excon', '>=0.0.24')
46
46
  s.add_dependency('formatador', '>=0.0.10')
47
47
  s.add_dependency('json')
48
48
  s.add_dependency('mime-types')
@@ -126,6 +126,9 @@ Gem::Specification.new do |s|
126
126
  lib/fog/aws/parsers/s3/copy_object.rb
127
127
  lib/fog/aws/parsers/s3/get_bucket.rb
128
128
  lib/fog/aws/parsers/s3/get_bucket_location.rb
129
+ lib/fog/aws/parsers/s3/get_bucket_logging.rb
130
+ lib/fog/aws/parsers/s3/get_bucket_object_versions.rb
131
+ lib/fog/aws/parsers/s3/get_bucket_versioning.rb
129
132
  lib/fog/aws/parsers/s3/get_request_payment.rb
130
133
  lib/fog/aws/parsers/s3/get_service.rb
131
134
  lib/fog/aws/parsers/simpledb/basic.rb
@@ -178,6 +181,9 @@ Gem::Specification.new do |s|
178
181
  lib/fog/aws/requests/s3/get_bucket.rb
179
182
  lib/fog/aws/requests/s3/get_bucket_acl.rb
180
183
  lib/fog/aws/requests/s3/get_bucket_location.rb
184
+ lib/fog/aws/requests/s3/get_bucket_logging.rb
185
+ lib/fog/aws/requests/s3/get_bucket_object_versions.rb
186
+ lib/fog/aws/requests/s3/get_bucket_versioning.rb
181
187
  lib/fog/aws/requests/s3/get_object.rb
182
188
  lib/fog/aws/requests/s3/get_object_acl.rb
183
189
  lib/fog/aws/requests/s3/get_object_torrent.rb
@@ -187,6 +193,8 @@ Gem::Specification.new do |s|
187
193
  lib/fog/aws/requests/s3/head_object.rb
188
194
  lib/fog/aws/requests/s3/put_bucket.rb
189
195
  lib/fog/aws/requests/s3/put_bucket_acl.rb
196
+ lib/fog/aws/requests/s3/put_bucket_logging.rb
197
+ lib/fog/aws/requests/s3/put_bucket_versioning.rb
190
198
  lib/fog/aws/requests/s3/put_object.rb
191
199
  lib/fog/aws/requests/s3/put_request_payment.rb
192
200
  lib/fog/aws/requests/simpledb/batch_put_attributes.rb
@@ -344,6 +352,25 @@ Gem::Specification.new do |s|
344
352
  lib/fog/terremark/requests/shared/power_shutdown.rb
345
353
  lib/fog/terremark/shared.rb
346
354
  lib/fog/terremark/vcloud.rb
355
+ lib/fog/vcloud.rb
356
+ lib/fog/vcloud/bin.rb
357
+ lib/fog/vcloud/parser.rb
358
+ lib/fog/vcloud/parsers/get_organization.rb
359
+ lib/fog/vcloud/parsers/get_vdc.rb
360
+ lib/fog/vcloud/parsers/get_versions.rb
361
+ lib/fog/vcloud/parsers/login.rb
362
+ lib/fog/vcloud/requests/get_organization.rb
363
+ lib/fog/vcloud/requests/get_vdc.rb
364
+ lib/fog/vcloud/requests/get_versions.rb
365
+ lib/fog/vcloud/requests/login.rb
366
+ lib/fog/vcloud/terremark/all.rb
367
+ lib/fog/vcloud/terremark/ecloud.rb
368
+ lib/fog/vcloud/terremark/ecloud/parsers/get_vdc.rb
369
+ lib/fog/vcloud/terremark/ecloud/requests/get_vdc.rb
370
+ lib/fog/vcloud/terremark/ecloud/requests/login.rb
371
+ lib/fog/vcloud/terremark/vcloud.rb
372
+ lib/fog/vcloud/terremark/vcloud/parsers/get_vdc.rb
373
+ lib/fog/vcloud/terremark/vcloud/requests/get_vdc.rb
347
374
  spec/aws/models/ec2/address_spec.rb
348
375
  spec/aws/models/ec2/addresses_spec.rb
349
376
  spec/aws/models/ec2/flavors_spec.rb
@@ -420,6 +447,16 @@ Gem::Specification.new do |s|
420
447
  spec/slicehost/models/server_spec.rb
421
448
  spec/slicehost/models/servers_spec.rb
422
449
  spec/spec_helper.rb
450
+ spec/vcloud/bin_spec.rb
451
+ spec/vcloud/requests/get_organization_spec.rb
452
+ spec/vcloud/requests/get_vdc_spec.rb
453
+ spec/vcloud/requests/get_versions_spec.rb
454
+ spec/vcloud/requests/login_spec.rb
455
+ spec/vcloud/spec_helper.rb
456
+ spec/vcloud/terremark/ecloud/requests/get_vdc_spec.rb
457
+ spec/vcloud/terremark/ecloud/requests/login_spec.rb
458
+ spec/vcloud/terremark/vcloud/requests/get_vdc_spec.rb
459
+ spec/vcloud/vcloud_spec.rb
423
460
  tests/aws/helper.rb
424
461
  tests/aws/requests/ec2/address_tests.rb
425
462
  tests/aws/requests/ec2/snapshot_tests.rb
data/lib/fog.rb CHANGED
@@ -30,11 +30,12 @@ require 'fog/local'
30
30
  require 'fog/rackspace'
31
31
  require 'fog/slicehost'
32
32
  require 'fog/terremark'
33
+ require 'fog/vcloud'
33
34
 
34
35
  module Fog
35
36
 
36
37
  unless const_defined?(:VERSION)
37
- VERSION = '0.0.93'
38
+ VERSION = '0.0.94'
38
39
  end
39
40
 
40
41
  module Mock
@@ -46,6 +46,14 @@ module Fog
46
46
  sprintf("%0.10f", rand / 100).to_f
47
47
  end
48
48
 
49
+ def self.dns_name_for(ip_address)
50
+ "ec2-#{ip_address.gsub('.','-')}.compute-1.amazonaws.com"
51
+ end
52
+
53
+ def self.private_dns_name_for(ip_address)
54
+ "ip-#{ip_address.gsub('.','-')}.ec2.internal"
55
+ end
56
+
49
57
  def self.console_output
50
58
  'This is my console. There are many like it, but this one is mine. My console is my best friend. It is my life. I must master it as I master my life. My console, without me, is useless. Without my console, I am useless.'
51
59
  end
@@ -164,17 +172,13 @@ module Fog
164
172
  end
165
173
 
166
174
  def self.numbers(length)
167
- random_selection(
168
- '0123456789',
169
- length
170
- )
175
+ max = ('9' * length).to_i
176
+ rand(max).to_s
171
177
  end
172
178
 
173
179
  def self.hex(length)
174
- random_selection(
175
- '0123456789abcdef',
176
- length
177
- )
180
+ max = ('f' * length).to_i(16)
181
+ rand(max).to_s(16)
178
182
  end
179
183
 
180
184
  def self.base64(length)
@@ -0,0 +1,40 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module S3
5
+
6
+ class AccessControlList < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @grant = { 'Grantee' => {} }
10
+ @response = { 'BucketLoggingStatus' => {} }
11
+ end
12
+
13
+ def end_element(name)
14
+ case name
15
+ when 'DisplayName', 'ID'
16
+ if @in_access_control_list
17
+ @grant['Grantee'][name] = @value
18
+ else
19
+ @response['Owner'][name] = @value
20
+ end
21
+ when 'Grant'
22
+ @response['BucketLoggingStatus']['LoggingEnabled']['TargetGrants'] << @grant
23
+ @grant = { 'Grantee' => {} }
24
+ when 'LoggingEnabled'
25
+ @response['BucketLoggingStatus']['LoggingEnabled'] = { 'TargetGrants' => [] }
26
+ when 'Permission'
27
+ @grant[name] = @value
28
+ when 'TargetBucket', 'TargetPrefix'
29
+ @response['BucketLoggingStatus'][name] = @value
30
+ when 'URI'
31
+ @grant['Grantee'][name] = @value
32
+ end
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,88 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module S3
5
+
6
+ class GetBucketObjectVersions < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @delete_marker = { 'Owner' => {} }
10
+ @version = { 'Owner' => {} }
11
+
12
+ @in_delete_marke = false
13
+ @in_version = false
14
+
15
+ @response = { 'Versions' => [] }
16
+ end
17
+
18
+ def start_element(name, attrs = [])
19
+ super
20
+ case name
21
+ when 'DeleteMarker'
22
+ @in_delete_marker = true
23
+ when 'Version'
24
+ @in_version = true
25
+ end
26
+ end
27
+
28
+ def end_element(name)
29
+ case name
30
+ when 'DeleteMarker'
31
+ @response['Versions'] << {'DeleteMarker' => @delete_marker }
32
+ @delete_marker = { 'Owner' => {} }
33
+ @in_delete_marker = false
34
+ when 'Version'
35
+ @response['Versions'] << {'Version' => @version }
36
+ @version = { 'Owner' => {} }
37
+ @in_version = false
38
+ when 'DisplayName', 'ID'
39
+ if @in_delete_marker
40
+ @delete_marker
41
+ elsif @in_version
42
+ @version
43
+ end['Owner'][name] = @value
44
+ when 'ETag'
45
+ @version[name] = @value.gsub('"', '')
46
+ when 'IsLatest'
47
+ if @in_delete_marker
48
+ @delete_marker
49
+ elsif @in_version
50
+ @version
51
+ end['IsLatest'] = if @value == 'true'
52
+ true
53
+ else
54
+ false
55
+ end
56
+ when 'IsTruncated'
57
+ if @value == 'true'
58
+ @response['IsTruncated'] = true
59
+ else
60
+ @response['IsTruncated'] = false
61
+ end
62
+ when 'LastModified'
63
+ if @in_delete_marker
64
+ @delete_marker
65
+ elsif @in_version
66
+ @version
67
+ end['LastModified'] = Time.parse(@value)
68
+ when 'KeyMarker', 'Name', 'Prefix', 'VersionIdMarker'
69
+ @response[name] = @value
70
+ when 'MaxKeys'
71
+ @response['MaxKeys'] = @value.to_i
72
+ when 'Size'
73
+ @version['Size'] = @value.to_i
74
+ when 'Key', 'Name', 'StorageClass', 'VersionId'
75
+ if @in_delete_marker
76
+ @delete_marker
77
+ elsif @in_version
78
+ @version
79
+ end[name] = @value
80
+ end
81
+ end
82
+
83
+ end
84
+
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module S3
5
+
6
+ class GetBucketVersioning < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = { 'VersioningConfiguration' => {} }
10
+ end
11
+
12
+ def end_element(name)
13
+ case name
14
+ when 'Status'
15
+ @response['VersioningConfiguration'][name] = @value
16
+ end
17
+ end
18
+
19
+ end
20
+
21
+ end
22
+ end
23
+ end
24
+ end
@@ -34,6 +34,9 @@ module Fog
34
34
  address = @data[:addresses][public_ip]
35
35
  if instance && address
36
36
  address['instanceId'] = instance_id
37
+ instance['originalIpAddress'] = instance['ipAddress']
38
+ instance['ipAddress'] = public_ip
39
+ instance['dnsName'] = Fog::AWS::Mock.dns_name_for(public_ip)
37
40
  response.status = 200
38
41
  response.body = {
39
42
  'requestId' => Fog::AWS::Mock.request_id,
@@ -77,9 +77,10 @@ module Fog
77
77
  case instance['instanceState']['name']
78
78
  when 'pending'
79
79
  if Time.now - instance['launchTime'] > Fog::Mock.delay
80
- instance['dnsName'] = "ec2-#{Fog::AWS::Mock.ip_address.gsub('.','-')}.compute-1.amazonaws.com"
80
+ instance['ipAddress'] = Fog::AWS::Mock.ip_address
81
+ instance['dnsName'] = Fog::AWS::Mock.dns_name_for(instance['ipAddress'])
81
82
  instance['privateIpAddress'] = Fog::AWS::Mock.ip_address
82
- instance['privateDnsName'] = "ip-#{instance['privateIpAddress'].gsub('.','-')}.ec2.internal"
83
+ instance['privateDnsName'] = Fog::AWS::Mock.private_dns_name_for(instance['privateIpAddress'])
83
84
  instance['instanceState'] = { 'code' => 16, 'name' => 'running' }
84
85
  end
85
86
  when 'rebooting'
@@ -105,7 +106,7 @@ module Fog
105
106
  'ownerId' => instance['ownerId'],
106
107
  'reservationId' => instance['reservationId']
107
108
  }
108
- reservation_set[instance['reservationId']]['instancesSet'] << instance.reject{|key,value| !['amiLaunchIndex', 'blockDeviceMapping', 'dnsName', 'imageId', 'instanceId', 'instanceState', 'instanceType', 'kernelId', 'keyName', 'launchTime', 'monitoring', 'placement', 'privateDnsName', 'productCodes', 'ramdiskId', 'reason', 'rootDeviceType'].include?(key)}
109
+ reservation_set[instance['reservationId']]['instancesSet'] << instance.reject{|key,value| !['amiLaunchIndex', 'blockDeviceMapping', 'dnsName', 'imageId', 'instanceId', 'instanceState', 'instanceType', 'ipAddress', 'kernelId', 'keyName', 'launchTime', 'monitoring', 'placement', 'privateDnsName', 'privateIpAddress', 'productCodes', 'ramdiskId', 'reason', 'rootDeviceType'].include?(key)}
109
110
  end
110
111
  end
111
112
 
@@ -29,6 +29,10 @@ module Fog
29
29
  response = Excon::Response.new
30
30
  response.status = 200
31
31
  if address = @data[:addresses][public_ip]
32
+ instance_id = address['instanceId']
33
+ instance = @data[:instances][instance_id]
34
+ instance['ipAddress'] = instance['originalIpAddress']
35
+ instance['dnsName'] = Fog::AWS::Mock.dns_name_for(instance['ipAddress'])
32
36
  address['instanceId'] = nil
33
37
  response.status = 200
34
38
  response.body = {
@@ -8,17 +8,18 @@ module Fog
8
8
  # ==== Parameters
9
9
  # * bucket_name<~String> - name of bucket to list object keys from
10
10
  # * options<~Hash> - config arguments for list. Defaults to {}.
11
- # * 'prefix'<~String> - limits object keys to those beginning with its value.
11
+ # * 'delimiter'<~String> - causes keys with the same string between the prefix
12
+ # value and the first occurence of delimiter to be rolled up
12
13
  # * 'marker'<~String> - limits object keys to only those that appear
13
14
  # lexicographically after its value.
14
15
  # * 'max-keys'<~Integer> - limits number of object keys returned
15
- # * 'delimiter'<~String> - causes keys with the same string between the prefix
16
- # value and the first occurence of delimiter to be rolled up
16
+ # * 'prefix'<~String> - limits object keys to those beginning with its value.
17
17
  #
18
18
  # ==== Returns
19
19
  # * response<~Excon::Response>:
20
20
  # * body<~Hash>:
21
21
  # * 'Delimeter'<~String> - Delimiter specified for query
22
+ # * 'IsTruncated'<~Boolean> - Whether or not the listing is truncated
22
23
  # * 'Marker'<~String> - Marker specified for query
23
24
  # * 'MaxKeys'<~Integer> - Maximum number of keys specified for query
24
25
  # * 'Name'<~String> - Name of the bucket
@@ -32,14 +33,14 @@ module Fog
32
33
  # * 'ID'<~String> - Id of object owner
33
34
  # * 'Size'<~Integer> - Size of object
34
35
  # * 'StorageClass'<~String> - Storage class of object
36
+ #
35
37
  def get_bucket(bucket_name, options = {})
36
38
  unless bucket_name
37
39
  raise ArgumentError.new('bucket_name is required')
38
40
  end
39
- options.reject! {|key, value| !['prefix', 'marker', 'max-keys', 'delimiter'].include?(key)}
40
41
  query = ''
41
42
  for key, value in options
42
- query << "#{key}=#{CGI.escape(value.to_s).gsub(/\+/, '%20')};"
43
+ query << "#{key}=#{CGI.escape(value.to_s).gsub(/\+/, '%20')}&"
43
44
  end
44
45
  query.chop!
45
46
  request({