fog 1.40.0 → 1.41.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.
Files changed (188) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/CHANGELOG.md +30 -0
  4. data/fog.gemspec +6 -4
  5. data/lib/fog/ovirt/compute.rb +2 -0
  6. data/lib/fog/ovirt/models/compute/server.rb +7 -2
  7. data/lib/fog/ovirt/requests/compute/activate_volume.rb +22 -0
  8. data/lib/fog/ovirt/requests/compute/deactivate_volume.rb +22 -0
  9. data/lib/fog/version.rb +1 -1
  10. data/lib/tasks/changelog_task.rb +2 -1
  11. data/tests/compute/helper.rb +0 -3
  12. data/tests/helpers/mock_helper.rb +0 -2
  13. data/tests/storage/helper.rb +0 -3
  14. metadata +49 -224
  15. data/lib/fog/bin/internet_archive.rb +0 -32
  16. data/lib/fog/bin/joyent.rb +0 -33
  17. data/lib/fog/internet_archive.rb +0 -1
  18. data/lib/fog/internet_archive/core.rb +0 -291
  19. data/lib/fog/internet_archive/models/storage/directories.rb +0 -39
  20. data/lib/fog/internet_archive/models/storage/directory.rb +0 -105
  21. data/lib/fog/internet_archive/models/storage/file.rb +0 -254
  22. data/lib/fog/internet_archive/models/storage/files.rb +0 -119
  23. data/lib/fog/internet_archive/models/storage/ia_attributes.rb +0 -36
  24. data/lib/fog/internet_archive/parsers/storage/access_control_list.rb +0 -42
  25. data/lib/fog/internet_archive/parsers/storage/complete_multipart_upload.rb +0 -20
  26. data/lib/fog/internet_archive/parsers/storage/copy_object.rb +0 -18
  27. data/lib/fog/internet_archive/parsers/storage/cors_configuration.rb +0 -38
  28. data/lib/fog/internet_archive/parsers/storage/delete_multiple_objects.rb +0 -45
  29. data/lib/fog/internet_archive/parsers/storage/get_bucket.rb +0 -58
  30. data/lib/fog/internet_archive/parsers/storage/get_bucket_lifecycle.rb +0 -64
  31. data/lib/fog/internet_archive/parsers/storage/get_bucket_location.rb +0 -16
  32. data/lib/fog/internet_archive/parsers/storage/get_bucket_logging.rb +0 -36
  33. data/lib/fog/internet_archive/parsers/storage/get_bucket_website.rb +0 -22
  34. data/lib/fog/internet_archive/parsers/storage/get_request_payment.rb +0 -16
  35. data/lib/fog/internet_archive/parsers/storage/get_service.rb +0 -28
  36. data/lib/fog/internet_archive/parsers/storage/initiate_multipart_upload.rb +0 -20
  37. data/lib/fog/internet_archive/parsers/storage/list_multipart_uploads.rb +0 -52
  38. data/lib/fog/internet_archive/parsers/storage/list_parts.rb +0 -36
  39. data/lib/fog/internet_archive/requests/storage/abort_multipart_upload.rb +0 -27
  40. data/lib/fog/internet_archive/requests/storage/acl_utils.rb +0 -60
  41. data/lib/fog/internet_archive/requests/storage/complete_multipart_upload.rb +0 -46
  42. data/lib/fog/internet_archive/requests/storage/copy_object.rb +0 -77
  43. data/lib/fog/internet_archive/requests/storage/cors_utils.rb +0 -39
  44. data/lib/fog/internet_archive/requests/storage/delete_bucket.rb +0 -42
  45. data/lib/fog/internet_archive/requests/storage/delete_bucket_cors.rb +0 -26
  46. data/lib/fog/internet_archive/requests/storage/delete_bucket_lifecycle.rb +0 -26
  47. data/lib/fog/internet_archive/requests/storage/delete_bucket_policy.rb +0 -26
  48. data/lib/fog/internet_archive/requests/storage/delete_bucket_website.rb +0 -26
  49. data/lib/fog/internet_archive/requests/storage/delete_multiple_objects.rb +0 -88
  50. data/lib/fog/internet_archive/requests/storage/delete_object.rb +0 -46
  51. data/lib/fog/internet_archive/requests/storage/get_bucket.rb +0 -108
  52. data/lib/fog/internet_archive/requests/storage/get_bucket_acl.rb +0 -65
  53. data/lib/fog/internet_archive/requests/storage/get_bucket_cors.rb +0 -61
  54. data/lib/fog/internet_archive/requests/storage/get_bucket_lifecycle.rb +0 -35
  55. data/lib/fog/internet_archive/requests/storage/get_bucket_location.rb +0 -54
  56. data/lib/fog/internet_archive/requests/storage/get_bucket_logging.rb +0 -45
  57. data/lib/fog/internet_archive/requests/storage/get_bucket_policy.rb +0 -31
  58. data/lib/fog/internet_archive/requests/storage/get_bucket_website.rb +0 -38
  59. data/lib/fog/internet_archive/requests/storage/get_object.rb +0 -163
  60. data/lib/fog/internet_archive/requests/storage/get_object_acl.rb +0 -72
  61. data/lib/fog/internet_archive/requests/storage/get_object_http_url.rb +0 -48
  62. data/lib/fog/internet_archive/requests/storage/get_object_https_url.rb +0 -30
  63. data/lib/fog/internet_archive/requests/storage/get_object_torrent.rb +0 -45
  64. data/lib/fog/internet_archive/requests/storage/get_object_url.rb +0 -49
  65. data/lib/fog/internet_archive/requests/storage/get_request_payment.rb +0 -45
  66. data/lib/fog/internet_archive/requests/storage/get_service.rb +0 -50
  67. data/lib/fog/internet_archive/requests/storage/head_object.rb +0 -57
  68. data/lib/fog/internet_archive/requests/storage/initiate_multipart_upload.rb +0 -42
  69. data/lib/fog/internet_archive/requests/storage/list_multipart_uploads.rb +0 -52
  70. data/lib/fog/internet_archive/requests/storage/list_parts.rb +0 -53
  71. data/lib/fog/internet_archive/requests/storage/post_object_hidden_fields.rb +0 -36
  72. data/lib/fog/internet_archive/requests/storage/put_bucket.rb +0 -70
  73. data/lib/fog/internet_archive/requests/storage/put_bucket_acl.rb +0 -69
  74. data/lib/fog/internet_archive/requests/storage/put_bucket_cors.rb +0 -47
  75. data/lib/fog/internet_archive/requests/storage/put_bucket_lifecycle.rb +0 -76
  76. data/lib/fog/internet_archive/requests/storage/put_bucket_logging.rb +0 -79
  77. data/lib/fog/internet_archive/requests/storage/put_bucket_policy.rb +0 -25
  78. data/lib/fog/internet_archive/requests/storage/put_bucket_website.rb +0 -59
  79. data/lib/fog/internet_archive/requests/storage/put_object.rb +0 -94
  80. data/lib/fog/internet_archive/requests/storage/put_object_acl.rb +0 -73
  81. data/lib/fog/internet_archive/requests/storage/put_object_url.rb +0 -43
  82. data/lib/fog/internet_archive/requests/storage/put_request_payment.rb +0 -45
  83. data/lib/fog/internet_archive/requests/storage/sync_clock.rb +0 -24
  84. data/lib/fog/internet_archive/requests/storage/upload_part.rb +0 -39
  85. data/lib/fog/internet_archive/signaturev4.rb +0 -71
  86. data/lib/fog/internet_archive/storage.rb +0 -381
  87. data/lib/fog/joyent.rb +0 -12
  88. data/lib/fog/joyent/analytics.rb +0 -310
  89. data/lib/fog/joyent/compute.rb +0 -272
  90. data/lib/fog/joyent/core.rb +0 -10
  91. data/lib/fog/joyent/errors.rb +0 -91
  92. data/lib/fog/joyent/models/analytics/field.rb +0 -13
  93. data/lib/fog/joyent/models/analytics/fields.rb +0 -24
  94. data/lib/fog/joyent/models/analytics/instrumentation.rb +0 -82
  95. data/lib/fog/joyent/models/analytics/instrumentations.rb +0 -23
  96. data/lib/fog/joyent/models/analytics/joyent_module.rb +0 -13
  97. data/lib/fog/joyent/models/analytics/joyent_modules.rb +0 -24
  98. data/lib/fog/joyent/models/analytics/metric.rb +0 -17
  99. data/lib/fog/joyent/models/analytics/metrics.rb +0 -16
  100. data/lib/fog/joyent/models/analytics/transformation.rb +0 -13
  101. data/lib/fog/joyent/models/analytics/transformations.rb +0 -24
  102. data/lib/fog/joyent/models/analytics/type.rb +0 -16
  103. data/lib/fog/joyent/models/analytics/types.rb +0 -24
  104. data/lib/fog/joyent/models/analytics/value.rb +0 -20
  105. data/lib/fog/joyent/models/compute/datacenter.rb +0 -11
  106. data/lib/fog/joyent/models/compute/datacenters.rb +0 -21
  107. data/lib/fog/joyent/models/compute/flavor.rb +0 -19
  108. data/lib/fog/joyent/models/compute/flavors.rb +0 -21
  109. data/lib/fog/joyent/models/compute/image.rb +0 -26
  110. data/lib/fog/joyent/models/compute/images.rb +0 -30
  111. data/lib/fog/joyent/models/compute/key.rb +0 -19
  112. data/lib/fog/joyent/models/compute/keys.rb +0 -32
  113. data/lib/fog/joyent/models/compute/network.rb +0 -12
  114. data/lib/fog/joyent/models/compute/networks.rb +0 -14
  115. data/lib/fog/joyent/models/compute/server.rb +0 -124
  116. data/lib/fog/joyent/models/compute/servers.rb +0 -35
  117. data/lib/fog/joyent/models/compute/snapshot.rb +0 -44
  118. data/lib/fog/joyent/models/compute/snapshots.rb +0 -35
  119. data/lib/fog/joyent/requests/analytics/create_instrumentation.rb +0 -25
  120. data/lib/fog/joyent/requests/analytics/delete_instrumentation.rb +0 -23
  121. data/lib/fog/joyent/requests/analytics/describe_analytics.rb +0 -26
  122. data/lib/fog/joyent/requests/analytics/get_instrumentation.rb +0 -26
  123. data/lib/fog/joyent/requests/analytics/get_instrumentation_value.rb +0 -30
  124. data/lib/fog/joyent/requests/analytics/list_instrumentations.rb +0 -25
  125. data/lib/fog/joyent/requests/compute/add_machine_tags.rb +0 -19
  126. data/lib/fog/joyent/requests/compute/create_key.rb +0 -54
  127. data/lib/fog/joyent/requests/compute/create_machine.rb +0 -16
  128. data/lib/fog/joyent/requests/compute/create_machine_snapshot.rb +0 -16
  129. data/lib/fog/joyent/requests/compute/delete_all_machine_metadata.rb +0 -16
  130. data/lib/fog/joyent/requests/compute/delete_all_machine_tags.rb +0 -15
  131. data/lib/fog/joyent/requests/compute/delete_key.rb +0 -27
  132. data/lib/fog/joyent/requests/compute/delete_machine.rb +0 -15
  133. data/lib/fog/joyent/requests/compute/delete_machine_metadata.rb +0 -16
  134. data/lib/fog/joyent/requests/compute/delete_machine_snapshot.rb +0 -18
  135. data/lib/fog/joyent/requests/compute/delete_machine_tag.rb +0 -15
  136. data/lib/fog/joyent/requests/compute/get_dataset.rb +0 -27
  137. data/lib/fog/joyent/requests/compute/get_image.rb +0 -28
  138. data/lib/fog/joyent/requests/compute/get_key.rb +0 -29
  139. data/lib/fog/joyent/requests/compute/get_machine.rb +0 -29
  140. data/lib/fog/joyent/requests/compute/get_machine_metadata.rb +0 -24
  141. data/lib/fog/joyent/requests/compute/get_machine_snapshot.rb +0 -15
  142. data/lib/fog/joyent/requests/compute/get_machine_tag.rb +0 -18
  143. data/lib/fog/joyent/requests/compute/get_package.rb +0 -32
  144. data/lib/fog/joyent/requests/compute/list_datacenters.rb +0 -16
  145. data/lib/fog/joyent/requests/compute/list_datasets.rb +0 -24
  146. data/lib/fog/joyent/requests/compute/list_images.rb +0 -25
  147. data/lib/fog/joyent/requests/compute/list_keys.rb +0 -25
  148. data/lib/fog/joyent/requests/compute/list_machine_snapshots.rb +0 -15
  149. data/lib/fog/joyent/requests/compute/list_machine_tags.rb +0 -20
  150. data/lib/fog/joyent/requests/compute/list_machines.rb +0 -26
  151. data/lib/fog/joyent/requests/compute/list_networks.rb +0 -26
  152. data/lib/fog/joyent/requests/compute/list_packages.rb +0 -34
  153. data/lib/fog/joyent/requests/compute/reboot_machine.rb +0 -15
  154. data/lib/fog/joyent/requests/compute/resize_machine.rb +0 -16
  155. data/lib/fog/joyent/requests/compute/start_machine.rb +0 -16
  156. data/lib/fog/joyent/requests/compute/start_machine_from_snapshot.rb +0 -15
  157. data/lib/fog/joyent/requests/compute/stop_machine.rb +0 -16
  158. data/lib/fog/joyent/requests/compute/update_machine_metadata.rb +0 -15
  159. data/spec/fog/bin/internetarchive_spec.rb +0 -10
  160. data/tests/internet_archive/models/storage/directory_tests.rb +0 -42
  161. data/tests/internet_archive/models/storage/file_tests.rb +0 -61
  162. data/tests/internet_archive/models/storage/files_tests.rb +0 -58
  163. data/tests/internet_archive/models/storage/url_tests.rb +0 -28
  164. data/tests/internet_archive/requests/storage/acl_utils_tests.rb +0 -209
  165. data/tests/internet_archive/requests/storage/bucket_tests.rb +0 -324
  166. data/tests/internet_archive/requests/storage/cors_utils_tests.rb +0 -108
  167. data/tests/internet_archive/requests/storage/multipart_upload_tests.rb +0 -132
  168. data/tests/internet_archive/requests/storage/object_tests.rb +0 -166
  169. data/tests/internet_archive/signaturev4_tests.rb +0 -41
  170. data/tests/internet_archive/signed_params_tests.rb +0 -5
  171. data/tests/joyent/models/analytics/field_tests.rb +0 -10
  172. data/tests/joyent/models/analytics/fields_tests.rb +0 -13
  173. data/tests/joyent/models/analytics/instrumentation_tests.rb +0 -13
  174. data/tests/joyent/models/analytics/instrumentations_tests.rb +0 -3
  175. data/tests/joyent/models/analytics/joyent_module_tests.rb +0 -10
  176. data/tests/joyent/models/analytics/joyent_modules_tests.rb +0 -13
  177. data/tests/joyent/models/analytics/metric_tests.rb +0 -10
  178. data/tests/joyent/models/analytics/metrics_tests.rb +0 -20
  179. data/tests/joyent/models/analytics/transformation_tests.rb +0 -10
  180. data/tests/joyent/models/analytics/transformations_tests.rb +0 -13
  181. data/tests/joyent/models/analytics/type_tests.rb +0 -10
  182. data/tests/joyent/models/analytics/types_tests.rb +0 -13
  183. data/tests/joyent/requests/analytics/instrumentation_tests.rb +0 -44
  184. data/tests/joyent/requests/compute/datasets_tests.rb +0 -58
  185. data/tests/joyent/requests/compute/keys_tests.rb +0 -47
  186. data/tests/joyent/requests/compute/machines_tests.rb +0 -66
  187. data/tests/joyent/requests/compute/networks_tests.rb +0 -39
  188. data/tests/joyent/requests/compute/packages_tests.rb +0 -68
@@ -1,36 +0,0 @@
1
- module Fog
2
- module Parsers
3
- module Storage
4
- module InternetArchive
5
- class ListParts < Fog::Parsers::Base
6
- def reset
7
- @part = {}
8
- @response = { 'Initiator' => {}, 'Part' => [] }
9
- end
10
-
11
- def end_element(name)
12
- case name
13
- when 'Bucket', 'Key', 'NextPartNumberMarker', 'PartNumberMarker', 'StorageClass', 'UploadId'
14
- @response[name] = value
15
- when 'DisplayName', 'ID'
16
- @response['Initiator'][name] = value
17
- when 'ETag'
18
- @part[name] = value
19
- when 'IsTruncated'
20
- @response[name] = value == 'true'
21
- when 'LastModified'
22
- @part[name] = Time.parse(value)
23
- when 'MaxParts'
24
- @response[name] = value.to_i
25
- when 'Part'
26
- @response['Part'] << @part
27
- @part = {}
28
- when 'PartNumber', 'Size'
29
- @part[name] = value.to_i
30
- end
31
- end
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,27 +0,0 @@
1
- module Fog
2
- module Storage
3
- class InternetArchive
4
- class Real
5
- #
6
- # Abort a multipart upload
7
- #
8
- # @param [String] bucket_name Name of bucket to abort multipart upload on
9
- # @param [String] object_name Name of object to abort multipart upload on
10
- # @param [String] upload_id Id of upload to add part to
11
- #
12
- # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadAbort.html
13
- #
14
- def abort_multipart_upload(bucket_name, object_name, upload_id)
15
- request({
16
- :expects => 204,
17
- :headers => {},
18
- :host => "#{bucket_name}.#{@host}",
19
- :method => 'DELETE',
20
- :path => CGI.escape(object_name),
21
- :query => {'uploadId' => upload_id}
22
- })
23
- end
24
- end # Real
25
- end # Storage
26
- end # InternetArchive
27
- end # Fog
@@ -1,60 +0,0 @@
1
- module Fog
2
- module Storage
3
- class InternetArchive
4
- require 'fog/internet_archive/parsers/storage/access_control_list'
5
-
6
- private
7
- def self.hash_to_acl(acl)
8
- data = "<AccessControlPolicy>\n"
9
-
10
- if acl['Owner'] && (acl['Owner']['ID'] || acl['Owner']['DisplayName'])
11
- data << " <Owner>\n"
12
- data << " <ID>#{acl['Owner']['ID']}</ID>\n" if acl['Owner']['ID']
13
- data << " <DisplayName>#{acl['Owner']['DisplayName']}</DisplayName>\n" if acl['Owner']['DisplayName']
14
- data << " </Owner>\n"
15
- end
16
-
17
- grants = [acl['AccessControlList']].flatten.compact
18
-
19
- data << " <AccessControlList>\n" if grants.any?
20
- grants.each do |grant|
21
- data << " <Grant>\n"
22
- grantee = grant['Grantee']
23
- type = case
24
- when grantee.key?('ID')
25
- 'CanonicalUser'
26
- when grantee.key?('EmailAddress')
27
- 'AmazonCustomerByEmail'
28
- when grantee.key?('URI')
29
- 'Group'
30
- end
31
-
32
- data << " <Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"#{type}\">\n"
33
- case type
34
- when 'CanonicalUser'
35
- data << " <ID>#{grantee['ID']}</ID>\n" if grantee['ID']
36
- data << " <DisplayName>#{grantee['DisplayName']}</DisplayName>\n" if grantee['DisplayName']
37
- when 'AmazonCustomerByEmail'
38
- data << " <EmailAddress>#{grantee['EmailAddress']}</EmailAddress>\n" if grantee['EmailAddress']
39
- when 'Group'
40
- data << " <URI>#{grantee['URI']}</URI>\n" if grantee['URI']
41
- end
42
- data << " </Grantee>\n"
43
- data << " <Permission>#{grant['Permission']}</Permission>\n"
44
- data << " </Grant>\n"
45
- end
46
- data << " </AccessControlList>\n" if grants.any?
47
-
48
- data << "</AccessControlPolicy>"
49
-
50
- data
51
- end
52
-
53
- def self.acl_to_hash(acl_xml)
54
- parser = Fog::Parsers::Storage::InternetArchive::AccessControlList.new
55
- Nokogiri::XML::SAX::Parser.new(parser).parse(acl_xml)
56
- parser.response
57
- end
58
- end
59
- end
60
- end
@@ -1,46 +0,0 @@
1
- module Fog
2
- module Storage
3
- class InternetArchive
4
- class Real
5
- require 'fog/internet_archive/parsers/storage/complete_multipart_upload'
6
-
7
- # Complete a multipart upload
8
- #
9
- # @param [String] bucket_name Name of bucket to complete multipart upload for
10
- # @param [String] object_name Name of object to complete multipart upload for
11
- # @param [String] upload_id Id of upload to add part to
12
- # @param [Array<String>] parts Array of etags as Strings for parts
13
- #
14
- # @return [Excon::Response]
15
- # * headers [Hash]:
16
- # * Bucket [String] - bucket of new object
17
- # * ETag [String] - etag of new object (will be needed to complete upload)
18
- # * Key [String] - key of new object
19
- # * Location [String] - location of new object
20
- #
21
- # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadComplete.html
22
- #
23
- def complete_multipart_upload(bucket_name, object_name, upload_id, parts)
24
- data = "<CompleteMultipartUpload>"
25
- parts.each_with_index do |part, index|
26
- data << "<Part>"
27
- data << "<PartNumber>#{index + 1}</PartNumber>"
28
- data << "<ETag>#{part}</ETag>"
29
- data << "</Part>"
30
- end
31
- data << "</CompleteMultipartUpload>"
32
- request({
33
- :body => data,
34
- :expects => 200,
35
- :headers => { 'Content-Length' => data.length },
36
- :host => "#{bucket_name}.#{@host}",
37
- :method => 'POST',
38
- :parser => Fog::Parsers::Storage::InternetArchive::CompleteMultipartUpload.new,
39
- :path => CGI.escape(object_name),
40
- :query => {'uploadId' => upload_id}
41
- })
42
- end
43
- end # Real
44
- end # Storage
45
- end # InternetArchive
46
- end # Fog
@@ -1,77 +0,0 @@
1
- module Fog
2
- module Storage
3
- class InternetArchive
4
- class Real
5
- require 'fog/internet_archive/parsers/storage/copy_object'
6
-
7
- # Copy an object from one S3 bucket to another
8
- #
9
- # @param source_bucket_name [String] Name of source bucket
10
- # @param source_object_name [String] Name of source object
11
- # @param target_bucket_name [String] Name of bucket to create copy in
12
- # @param target_object_name [String] Name for new copy of object
13
- #
14
- # @param options [Hash]:
15
- # @option options [String] x-amz-metadata-directive Specifies whether to copy metadata from source or replace with data in request. Must be in ['COPY', 'REPLACE']
16
- # @option options [String] x-amz-copy_source-if-match Copies object if its etag matches this value
17
- # @option options [Time] x-amz-copy_source-if-modified_since Copies object it it has been modified since this time
18
- # @option options [String] x-amz-copy_source-if-none-match Copies object if its etag does not match this value
19
- # @option options [Time] x-amz-copy_source-if-unmodified-since Copies object it it has not been modified since this time
20
- # @option options [String] x-amz-storage-class Default is 'STANDARD', set to 'REDUCED_REDUNDANCY' for non-critical, reproducable data
21
- #
22
- #
23
- # @return [Excon::Response]
24
- # * body [Hash]:
25
- # * ETag [String] - etag of new object
26
- # * LastModified [Time] - date object was last modified
27
- #
28
- # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectCOPY.html
29
- #
30
- def copy_object(source_bucket_name, source_object_name, target_bucket_name, target_object_name, options = {})
31
- headers = { 'x-amz-copy-source' => "/#{source_bucket_name}/#{CGI.escape(source_object_name)}" }.merge!(options)
32
- request({
33
- :expects => 200,
34
- :headers => headers,
35
- :host => "#{target_bucket_name}.#{@host}",
36
- :method => 'PUT',
37
- :parser => Fog::Parsers::Storage::InternetArchive::CopyObject.new,
38
- :path => CGI.escape(target_object_name)
39
- })
40
- end
41
- end
42
-
43
- class Mock # :nodoc:all
44
- def copy_object(source_bucket_name, source_object_name, target_bucket_name, target_object_name, options = {})
45
- response = Excon::Response.new
46
- source_bucket = self.data[:buckets][source_bucket_name]
47
- source_object = source_bucket && source_bucket[:objects][source_object_name] && source_bucket[:objects][source_object_name].first
48
- target_bucket = self.data[:buckets][target_bucket_name]
49
-
50
- acl = options['x-amz-acl'] || 'private'
51
- if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
52
- raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
53
- else
54
- self.data[:acls][:object][target_bucket_name] ||= {}
55
- self.data[:acls][:object][target_bucket_name][target_object_name] = self.class.acls(acl)
56
- end
57
-
58
- if source_object && target_bucket
59
- response.status = 200
60
- target_object = source_object.dup
61
- target_object.merge!({'Key' => target_object_name})
62
- target_bucket[:objects][target_object_name] = [target_object]
63
- response.body = {
64
- 'ETag' => target_object['ETag'],
65
- 'LastModified' => Time.parse(target_object['Last-Modified'])
66
- }
67
- else
68
- response.status = 404
69
- raise(Excon::Errors.status_error({:expects => 200}, response))
70
- end
71
-
72
- response
73
- end
74
- end
75
- end
76
- end
77
- end
@@ -1,39 +0,0 @@
1
- module Fog
2
- module Storage
3
- class InternetArchive
4
- require 'fog/internet_archive/parsers/storage/cors_configuration'
5
-
6
- private
7
-
8
- def self.hash_to_cors(cors)
9
- data = "<CORSConfiguration>\n"
10
-
11
- [cors['CORSConfiguration']].flatten.compact.each do |rule|
12
- data << " <CORSRule>\n"
13
-
14
- ['ID', 'MaxAgeSeconds'].each do |key|
15
- data << " <#{key}>#{rule[key]}</#{key}>\n" if rule[key]
16
- end
17
-
18
- ['AllowedOrigin', 'AllowedMethod', 'AllowedHeader', 'ExposeHeader'].each do |key|
19
- [rule[key]].flatten.compact.each do |value|
20
- data << " <#{key}>#{value}</#{key}>\n"
21
- end
22
- end
23
-
24
- data << " </CORSRule>\n"
25
- end
26
-
27
- data << "</CORSConfiguration>"
28
-
29
- data
30
- end
31
-
32
- def self.cors_to_hash(cors_xml)
33
- parser = Fog::Parsers::Storage::InternetArchive::CorsConfiguration.new
34
- Nokogiri::XML::SAX::Parser.new(parser).parse(cors_xml)
35
- parser.response
36
- end
37
- end
38
- end
39
- end
@@ -1,42 +0,0 @@
1
- module Fog
2
- module Storage
3
- class InternetArchive
4
- class Real
5
- # Delete an S3 bucket
6
- #
7
- # @param bucket_name [String] name of bucket to delete
8
- #
9
- # @return [Excon::Response] response:
10
- # * status [Integer] - 204
11
- #
12
- # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketDELETE.html
13
-
14
- def delete_bucket(bucket_name)
15
- request({
16
- :expects => 204,
17
- :headers => {},
18
- :host => "#{bucket_name}.#{@host}",
19
- :method => 'DELETE'
20
- })
21
- end
22
- end
23
-
24
- class Mock # :nodoc:all
25
- def delete_bucket(bucket_name)
26
- response = Excon::Response.new
27
- if self.data[:buckets][bucket_name].nil?
28
- response.status = 404
29
- raise(Excon::Errors.status_error({:expects => 204}, response))
30
- elsif self.data[:buckets][bucket_name] && !self.data[:buckets][bucket_name][:objects].empty?
31
- response.status = 409
32
- raise(Excon::Errors.status_error({:expects => 204}, response))
33
- else
34
- self.data[:buckets].delete(bucket_name)
35
- response.status = 204
36
- end
37
- response
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,26 +0,0 @@
1
- module Fog
2
- module Storage
3
- class InternetArchive
4
- class Real
5
- # Deletes the cors configuration information set for the bucket.
6
- #
7
- # @param bucket_name [String] name of bucket to delete cors rules from
8
- #
9
- # @return [Excon::Response] response:
10
- # * status [Integer] - 204
11
- #
12
- # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketDELETEcors.html
13
-
14
- def delete_bucket_cors(bucket_name)
15
- request({
16
- :expects => 204,
17
- :headers => {},
18
- :host => "#{bucket_name}.#{@host}",
19
- :method => 'DELETE',
20
- :query => {'cors' => nil}
21
- })
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- module Fog
2
- module Storage
3
- class InternetArchive
4
- class Real
5
- # Delete lifecycle configuration for a bucket
6
- #
7
- # @param bucket_name [String] name of bucket to delete lifecycle configuration from
8
- #
9
- # @return [Excon::Response] response:
10
- # * status [Integer] - 204
11
- #
12
- # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketDELETElifecycle.html
13
-
14
- def delete_bucket_lifecycle(bucket_name)
15
- request({
16
- :expects => 204,
17
- :headers => {},
18
- :host => "#{bucket_name}.#{@host}",
19
- :method => 'DELETE',
20
- :query => {'lifecycle' => nil}
21
- })
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- module Fog
2
- module Storage
3
- class InternetArchive
4
- class Real
5
- # Delete policy for a bucket
6
- #
7
- # @param bucket_name [String] name of bucket to delete policy from
8
- #
9
- # @return [Excon::Response] response:
10
- # * status [Integer] - 204
11
- #
12
- # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketDELETEpolicy.html
13
-
14
- def delete_bucket_policy(bucket_name)
15
- request({
16
- :expects => 204,
17
- :headers => {},
18
- :host => "#{bucket_name}.#{@host}",
19
- :method => 'DELETE',
20
- :query => {'policy' => nil}
21
- })
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- module Fog
2
- module Storage
3
- class InternetArchive
4
- class Real
5
- # Delete website configuration for a bucket
6
- #
7
- # @param bucket_name [String] name of bucket to delete website configuration from
8
- #
9
- # @return [Excon::Response] response:
10
- # * status [Integer] - 204
11
- #
12
- # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketDELETEwebsite.html
13
-
14
- def delete_bucket_website(bucket_name)
15
- request({
16
- :expects => 204,
17
- :headers => {},
18
- :host => "#{bucket_name}.#{@host}",
19
- :method => 'DELETE',
20
- :query => {'website' => nil}
21
- })
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,88 +0,0 @@
1
- module Fog
2
- module Storage
3
- class InternetArchive
4
- class Real
5
- require 'fog/internet_archive/parsers/storage/delete_multiple_objects'
6
-
7
- # Delete multiple objects from S3
8
- # @note For versioned deletes, options should include a version_ids hash, which
9
- # maps from filename to an array of versions.
10
- # The semantics are that for each (object_name, version) tuple, the
11
- # caller must insert the object_name and an associated version (if
12
- # desired), so for n versions, the object must be inserted n times.
13
- #
14
- # @param bucket_name [String] Name of bucket containing object to delete
15
- # @param object_names [Array] Array of object names to delete
16
- #
17
- # @return [Excon::Response] response:
18
- # * body [Hash]:
19
- # * DeleteResult [Array]:
20
- # * Deleted [Hash]:
21
- # * Key [String] - Name of the object that was deleted
22
- # * VersionId [String] - ID for the versioned onject in case of a versioned delete
23
- # * DeleteMarker [Boolean] - Indicates if the request accessed a delete marker
24
- # * DeleteMarkerVersionId [String] - Version ID of the delete marker accessed
25
- # * Error [Hash]:
26
- # * Key [String] - Name of the object that failed to be deleted
27
- # * VersionId [String] - ID of the versioned object that was attempted to be deleted
28
- # * Code [String] - Status code for the result of the failed delete
29
- # * Message [String] - Error description
30
- #
31
- # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/multiobjectdeleteapi.html
32
-
33
- def delete_multiple_objects(bucket_name, object_names, options = {})
34
- data = "<Delete>"
35
- data << "<Quiet>true</Quiet>" if options.delete(:quiet)
36
- object_names.each do |object_name|
37
- data << "<Object>"
38
- data << "<Key>#{CGI.escapeHTML(object_name)}</Key>"
39
- data << "</Object>"
40
- end
41
- data << "</Delete>"
42
-
43
- headers = options
44
- headers['Content-Length'] = data.length
45
- headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).
46
- gsub("\n", '')
47
-
48
- request({
49
- :body => data,
50
- :expects => 200,
51
- :headers => headers,
52
- :host => "#{bucket_name}.#{@host}",
53
- :method => 'POST',
54
- :parser => Fog::Parsers::Storage::InternetArchive::DeleteMultipleObjects.new,
55
- :query => {'delete' => nil}
56
- })
57
- end
58
- end
59
-
60
- class Mock # :nodoc:all
61
- def delete_multiple_objects(bucket_name, object_names, options = {})
62
- response = Excon::Response.new
63
- if bucket = self.data[:buckets][bucket_name]
64
- response.status = 200
65
- response.body = { 'DeleteResult' => [] }
66
- object_names.each do |object_name|
67
- response.body['DeleteResult'] << delete_object_helper(bucket,
68
- object_name)
69
- end
70
- else
71
- response.status = 404
72
- raise(Excon::Errors.status_error({:expects => 200}, response))
73
- end
74
- response
75
- end
76
-
77
- private
78
-
79
- def delete_object_helper(bucket, object_name)
80
- response = { 'Deleted' => {} }
81
- bucket[:objects].delete(object_name)
82
- response['Deleted'] = { 'Key' => object_name }
83
- response
84
- end
85
- end
86
- end
87
- end
88
- end