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.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/CHANGELOG.md +30 -0
- data/fog.gemspec +6 -4
- data/lib/fog/ovirt/compute.rb +2 -0
- data/lib/fog/ovirt/models/compute/server.rb +7 -2
- data/lib/fog/ovirt/requests/compute/activate_volume.rb +22 -0
- data/lib/fog/ovirt/requests/compute/deactivate_volume.rb +22 -0
- data/lib/fog/version.rb +1 -1
- data/lib/tasks/changelog_task.rb +2 -1
- data/tests/compute/helper.rb +0 -3
- data/tests/helpers/mock_helper.rb +0 -2
- data/tests/storage/helper.rb +0 -3
- metadata +49 -224
- data/lib/fog/bin/internet_archive.rb +0 -32
- data/lib/fog/bin/joyent.rb +0 -33
- data/lib/fog/internet_archive.rb +0 -1
- data/lib/fog/internet_archive/core.rb +0 -291
- data/lib/fog/internet_archive/models/storage/directories.rb +0 -39
- data/lib/fog/internet_archive/models/storage/directory.rb +0 -105
- data/lib/fog/internet_archive/models/storage/file.rb +0 -254
- data/lib/fog/internet_archive/models/storage/files.rb +0 -119
- data/lib/fog/internet_archive/models/storage/ia_attributes.rb +0 -36
- data/lib/fog/internet_archive/parsers/storage/access_control_list.rb +0 -42
- data/lib/fog/internet_archive/parsers/storage/complete_multipart_upload.rb +0 -20
- data/lib/fog/internet_archive/parsers/storage/copy_object.rb +0 -18
- data/lib/fog/internet_archive/parsers/storage/cors_configuration.rb +0 -38
- data/lib/fog/internet_archive/parsers/storage/delete_multiple_objects.rb +0 -45
- data/lib/fog/internet_archive/parsers/storage/get_bucket.rb +0 -58
- data/lib/fog/internet_archive/parsers/storage/get_bucket_lifecycle.rb +0 -64
- data/lib/fog/internet_archive/parsers/storage/get_bucket_location.rb +0 -16
- data/lib/fog/internet_archive/parsers/storage/get_bucket_logging.rb +0 -36
- data/lib/fog/internet_archive/parsers/storage/get_bucket_website.rb +0 -22
- data/lib/fog/internet_archive/parsers/storage/get_request_payment.rb +0 -16
- data/lib/fog/internet_archive/parsers/storage/get_service.rb +0 -28
- data/lib/fog/internet_archive/parsers/storage/initiate_multipart_upload.rb +0 -20
- data/lib/fog/internet_archive/parsers/storage/list_multipart_uploads.rb +0 -52
- data/lib/fog/internet_archive/parsers/storage/list_parts.rb +0 -36
- data/lib/fog/internet_archive/requests/storage/abort_multipart_upload.rb +0 -27
- data/lib/fog/internet_archive/requests/storage/acl_utils.rb +0 -60
- data/lib/fog/internet_archive/requests/storage/complete_multipart_upload.rb +0 -46
- data/lib/fog/internet_archive/requests/storage/copy_object.rb +0 -77
- data/lib/fog/internet_archive/requests/storage/cors_utils.rb +0 -39
- data/lib/fog/internet_archive/requests/storage/delete_bucket.rb +0 -42
- data/lib/fog/internet_archive/requests/storage/delete_bucket_cors.rb +0 -26
- data/lib/fog/internet_archive/requests/storage/delete_bucket_lifecycle.rb +0 -26
- data/lib/fog/internet_archive/requests/storage/delete_bucket_policy.rb +0 -26
- data/lib/fog/internet_archive/requests/storage/delete_bucket_website.rb +0 -26
- data/lib/fog/internet_archive/requests/storage/delete_multiple_objects.rb +0 -88
- data/lib/fog/internet_archive/requests/storage/delete_object.rb +0 -46
- data/lib/fog/internet_archive/requests/storage/get_bucket.rb +0 -108
- data/lib/fog/internet_archive/requests/storage/get_bucket_acl.rb +0 -65
- data/lib/fog/internet_archive/requests/storage/get_bucket_cors.rb +0 -61
- data/lib/fog/internet_archive/requests/storage/get_bucket_lifecycle.rb +0 -35
- data/lib/fog/internet_archive/requests/storage/get_bucket_location.rb +0 -54
- data/lib/fog/internet_archive/requests/storage/get_bucket_logging.rb +0 -45
- data/lib/fog/internet_archive/requests/storage/get_bucket_policy.rb +0 -31
- data/lib/fog/internet_archive/requests/storage/get_bucket_website.rb +0 -38
- data/lib/fog/internet_archive/requests/storage/get_object.rb +0 -163
- data/lib/fog/internet_archive/requests/storage/get_object_acl.rb +0 -72
- data/lib/fog/internet_archive/requests/storage/get_object_http_url.rb +0 -48
- data/lib/fog/internet_archive/requests/storage/get_object_https_url.rb +0 -30
- data/lib/fog/internet_archive/requests/storage/get_object_torrent.rb +0 -45
- data/lib/fog/internet_archive/requests/storage/get_object_url.rb +0 -49
- data/lib/fog/internet_archive/requests/storage/get_request_payment.rb +0 -45
- data/lib/fog/internet_archive/requests/storage/get_service.rb +0 -50
- data/lib/fog/internet_archive/requests/storage/head_object.rb +0 -57
- data/lib/fog/internet_archive/requests/storage/initiate_multipart_upload.rb +0 -42
- data/lib/fog/internet_archive/requests/storage/list_multipart_uploads.rb +0 -52
- data/lib/fog/internet_archive/requests/storage/list_parts.rb +0 -53
- data/lib/fog/internet_archive/requests/storage/post_object_hidden_fields.rb +0 -36
- data/lib/fog/internet_archive/requests/storage/put_bucket.rb +0 -70
- data/lib/fog/internet_archive/requests/storage/put_bucket_acl.rb +0 -69
- data/lib/fog/internet_archive/requests/storage/put_bucket_cors.rb +0 -47
- data/lib/fog/internet_archive/requests/storage/put_bucket_lifecycle.rb +0 -76
- data/lib/fog/internet_archive/requests/storage/put_bucket_logging.rb +0 -79
- data/lib/fog/internet_archive/requests/storage/put_bucket_policy.rb +0 -25
- data/lib/fog/internet_archive/requests/storage/put_bucket_website.rb +0 -59
- data/lib/fog/internet_archive/requests/storage/put_object.rb +0 -94
- data/lib/fog/internet_archive/requests/storage/put_object_acl.rb +0 -73
- data/lib/fog/internet_archive/requests/storage/put_object_url.rb +0 -43
- data/lib/fog/internet_archive/requests/storage/put_request_payment.rb +0 -45
- data/lib/fog/internet_archive/requests/storage/sync_clock.rb +0 -24
- data/lib/fog/internet_archive/requests/storage/upload_part.rb +0 -39
- data/lib/fog/internet_archive/signaturev4.rb +0 -71
- data/lib/fog/internet_archive/storage.rb +0 -381
- data/lib/fog/joyent.rb +0 -12
- data/lib/fog/joyent/analytics.rb +0 -310
- data/lib/fog/joyent/compute.rb +0 -272
- data/lib/fog/joyent/core.rb +0 -10
- data/lib/fog/joyent/errors.rb +0 -91
- data/lib/fog/joyent/models/analytics/field.rb +0 -13
- data/lib/fog/joyent/models/analytics/fields.rb +0 -24
- data/lib/fog/joyent/models/analytics/instrumentation.rb +0 -82
- data/lib/fog/joyent/models/analytics/instrumentations.rb +0 -23
- data/lib/fog/joyent/models/analytics/joyent_module.rb +0 -13
- data/lib/fog/joyent/models/analytics/joyent_modules.rb +0 -24
- data/lib/fog/joyent/models/analytics/metric.rb +0 -17
- data/lib/fog/joyent/models/analytics/metrics.rb +0 -16
- data/lib/fog/joyent/models/analytics/transformation.rb +0 -13
- data/lib/fog/joyent/models/analytics/transformations.rb +0 -24
- data/lib/fog/joyent/models/analytics/type.rb +0 -16
- data/lib/fog/joyent/models/analytics/types.rb +0 -24
- data/lib/fog/joyent/models/analytics/value.rb +0 -20
- data/lib/fog/joyent/models/compute/datacenter.rb +0 -11
- data/lib/fog/joyent/models/compute/datacenters.rb +0 -21
- data/lib/fog/joyent/models/compute/flavor.rb +0 -19
- data/lib/fog/joyent/models/compute/flavors.rb +0 -21
- data/lib/fog/joyent/models/compute/image.rb +0 -26
- data/lib/fog/joyent/models/compute/images.rb +0 -30
- data/lib/fog/joyent/models/compute/key.rb +0 -19
- data/lib/fog/joyent/models/compute/keys.rb +0 -32
- data/lib/fog/joyent/models/compute/network.rb +0 -12
- data/lib/fog/joyent/models/compute/networks.rb +0 -14
- data/lib/fog/joyent/models/compute/server.rb +0 -124
- data/lib/fog/joyent/models/compute/servers.rb +0 -35
- data/lib/fog/joyent/models/compute/snapshot.rb +0 -44
- data/lib/fog/joyent/models/compute/snapshots.rb +0 -35
- data/lib/fog/joyent/requests/analytics/create_instrumentation.rb +0 -25
- data/lib/fog/joyent/requests/analytics/delete_instrumentation.rb +0 -23
- data/lib/fog/joyent/requests/analytics/describe_analytics.rb +0 -26
- data/lib/fog/joyent/requests/analytics/get_instrumentation.rb +0 -26
- data/lib/fog/joyent/requests/analytics/get_instrumentation_value.rb +0 -30
- data/lib/fog/joyent/requests/analytics/list_instrumentations.rb +0 -25
- data/lib/fog/joyent/requests/compute/add_machine_tags.rb +0 -19
- data/lib/fog/joyent/requests/compute/create_key.rb +0 -54
- data/lib/fog/joyent/requests/compute/create_machine.rb +0 -16
- data/lib/fog/joyent/requests/compute/create_machine_snapshot.rb +0 -16
- data/lib/fog/joyent/requests/compute/delete_all_machine_metadata.rb +0 -16
- data/lib/fog/joyent/requests/compute/delete_all_machine_tags.rb +0 -15
- data/lib/fog/joyent/requests/compute/delete_key.rb +0 -27
- data/lib/fog/joyent/requests/compute/delete_machine.rb +0 -15
- data/lib/fog/joyent/requests/compute/delete_machine_metadata.rb +0 -16
- data/lib/fog/joyent/requests/compute/delete_machine_snapshot.rb +0 -18
- data/lib/fog/joyent/requests/compute/delete_machine_tag.rb +0 -15
- data/lib/fog/joyent/requests/compute/get_dataset.rb +0 -27
- data/lib/fog/joyent/requests/compute/get_image.rb +0 -28
- data/lib/fog/joyent/requests/compute/get_key.rb +0 -29
- data/lib/fog/joyent/requests/compute/get_machine.rb +0 -29
- data/lib/fog/joyent/requests/compute/get_machine_metadata.rb +0 -24
- data/lib/fog/joyent/requests/compute/get_machine_snapshot.rb +0 -15
- data/lib/fog/joyent/requests/compute/get_machine_tag.rb +0 -18
- data/lib/fog/joyent/requests/compute/get_package.rb +0 -32
- data/lib/fog/joyent/requests/compute/list_datacenters.rb +0 -16
- data/lib/fog/joyent/requests/compute/list_datasets.rb +0 -24
- data/lib/fog/joyent/requests/compute/list_images.rb +0 -25
- data/lib/fog/joyent/requests/compute/list_keys.rb +0 -25
- data/lib/fog/joyent/requests/compute/list_machine_snapshots.rb +0 -15
- data/lib/fog/joyent/requests/compute/list_machine_tags.rb +0 -20
- data/lib/fog/joyent/requests/compute/list_machines.rb +0 -26
- data/lib/fog/joyent/requests/compute/list_networks.rb +0 -26
- data/lib/fog/joyent/requests/compute/list_packages.rb +0 -34
- data/lib/fog/joyent/requests/compute/reboot_machine.rb +0 -15
- data/lib/fog/joyent/requests/compute/resize_machine.rb +0 -16
- data/lib/fog/joyent/requests/compute/start_machine.rb +0 -16
- data/lib/fog/joyent/requests/compute/start_machine_from_snapshot.rb +0 -15
- data/lib/fog/joyent/requests/compute/stop_machine.rb +0 -16
- data/lib/fog/joyent/requests/compute/update_machine_metadata.rb +0 -15
- data/spec/fog/bin/internetarchive_spec.rb +0 -10
- data/tests/internet_archive/models/storage/directory_tests.rb +0 -42
- data/tests/internet_archive/models/storage/file_tests.rb +0 -61
- data/tests/internet_archive/models/storage/files_tests.rb +0 -58
- data/tests/internet_archive/models/storage/url_tests.rb +0 -28
- data/tests/internet_archive/requests/storage/acl_utils_tests.rb +0 -209
- data/tests/internet_archive/requests/storage/bucket_tests.rb +0 -324
- data/tests/internet_archive/requests/storage/cors_utils_tests.rb +0 -108
- data/tests/internet_archive/requests/storage/multipart_upload_tests.rb +0 -132
- data/tests/internet_archive/requests/storage/object_tests.rb +0 -166
- data/tests/internet_archive/signaturev4_tests.rb +0 -41
- data/tests/internet_archive/signed_params_tests.rb +0 -5
- data/tests/joyent/models/analytics/field_tests.rb +0 -10
- data/tests/joyent/models/analytics/fields_tests.rb +0 -13
- data/tests/joyent/models/analytics/instrumentation_tests.rb +0 -13
- data/tests/joyent/models/analytics/instrumentations_tests.rb +0 -3
- data/tests/joyent/models/analytics/joyent_module_tests.rb +0 -10
- data/tests/joyent/models/analytics/joyent_modules_tests.rb +0 -13
- data/tests/joyent/models/analytics/metric_tests.rb +0 -10
- data/tests/joyent/models/analytics/metrics_tests.rb +0 -20
- data/tests/joyent/models/analytics/transformation_tests.rb +0 -10
- data/tests/joyent/models/analytics/transformations_tests.rb +0 -13
- data/tests/joyent/models/analytics/type_tests.rb +0 -10
- data/tests/joyent/models/analytics/types_tests.rb +0 -13
- data/tests/joyent/requests/analytics/instrumentation_tests.rb +0 -44
- data/tests/joyent/requests/compute/datasets_tests.rb +0 -58
- data/tests/joyent/requests/compute/keys_tests.rb +0 -47
- data/tests/joyent/requests/compute/machines_tests.rb +0 -66
- data/tests/joyent/requests/compute/networks_tests.rb +0 -39
- data/tests/joyent/requests/compute/packages_tests.rb +0 -68
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
class Real
|
|
5
|
-
require 'fog/internet_archive/requests/storage/cors_utils'
|
|
6
|
-
|
|
7
|
-
# Sets the cors configuration for your bucket. If the configuration exists, Amazon S3 replaces it.
|
|
8
|
-
#
|
|
9
|
-
# @param bucket_name [String] name of bucket to modify
|
|
10
|
-
# @param cors [Hash]
|
|
11
|
-
# * CORSConfiguration [Array]:
|
|
12
|
-
# * ID [String]: A unique identifier for the rule.
|
|
13
|
-
# * AllowedMethod [String]: An HTTP method that you want to allow the origin to execute.
|
|
14
|
-
# * AllowedOrigin [String]: An origin that you want to allow cross-domain requests from.
|
|
15
|
-
# * AllowedHeader [String]: Specifies which headers are allowed in a pre-flight OPTIONS request via the Access-Control-Request-Headers header.
|
|
16
|
-
# * MaxAgeSeconds [String]: The time in seconds that your browser is to cache the preflight response for the specified resource.
|
|
17
|
-
# * ExposeHeader [String]: One or more headers in the response that you want customers to be able to access from their applications.
|
|
18
|
-
#
|
|
19
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTcors.html
|
|
20
|
-
|
|
21
|
-
def put_bucket_cors(bucket_name, cors)
|
|
22
|
-
data = Fog::Storage::InternetArchive.hash_to_cors(cors)
|
|
23
|
-
|
|
24
|
-
headers = {}
|
|
25
|
-
headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).strip
|
|
26
|
-
headers['Content-Type'] = 'application/json'
|
|
27
|
-
headers['Date'] = Fog::Time.now.to_date_header
|
|
28
|
-
|
|
29
|
-
request({
|
|
30
|
-
:body => data,
|
|
31
|
-
:expects => 200,
|
|
32
|
-
:headers => headers,
|
|
33
|
-
:host => "#{bucket_name}.#{@host}",
|
|
34
|
-
:method => 'PUT',
|
|
35
|
-
:query => {'cors' => nil}
|
|
36
|
-
})
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
class Mock
|
|
41
|
-
def put_bucket_cors(bucket_name, cors)
|
|
42
|
-
self.data[:cors][:bucket][bucket_name] = Fog::Storage::InternetArchive.hash_to_cors(cors)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
class Real
|
|
5
|
-
# Change lifecycle configuration for an S3 bucket
|
|
6
|
-
#
|
|
7
|
-
# @param bucket_name [String] name of bucket to set lifecycle configuration for
|
|
8
|
-
# * lifecycle [Hash]:
|
|
9
|
-
# * Rules [Array] object expire rules
|
|
10
|
-
# * ID [String] Unique identifier for the rule
|
|
11
|
-
# * Prefix [String] Prefix identifying one or more objects to which the rule applies
|
|
12
|
-
# * Enabled [Boolean] if rule is currently being applied
|
|
13
|
-
# * Expiration [Hash] Container for the object expiration rule.
|
|
14
|
-
# * Days [Integer] lifetime, in days, of the objects that are subject to the rule
|
|
15
|
-
# * Date [Date] Indicates when the specific rule take effect.
|
|
16
|
-
# The date value must conform to the ISO 8601 format. The time is always midnight UTC.
|
|
17
|
-
# * Transition [Hash] Container for the transition rule that describes when objects transition
|
|
18
|
-
# to the Glacier storage class
|
|
19
|
-
# * Days [Integer] lifetime, in days, of the objects that are subject to the rule
|
|
20
|
-
# * Date [Date] Indicates when the specific rule take effect.
|
|
21
|
-
# The date value must conform to the ISO 8601 format. The time is always midnight UTC.
|
|
22
|
-
# * StorageClass [String] Indicates the Amazon S3 storage class to which you want the object
|
|
23
|
-
# to transition to.
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html
|
|
27
|
-
#
|
|
28
|
-
def put_bucket_lifecycle(bucket_name, lifecycle)
|
|
29
|
-
builder = Nokogiri::XML::Builder.new do
|
|
30
|
-
LifecycleConfiguration {
|
|
31
|
-
lifecycle['Rules'].each do |rule|
|
|
32
|
-
Rule {
|
|
33
|
-
ID rule['ID']
|
|
34
|
-
Prefix rule['Prefix']
|
|
35
|
-
Status rule['Enabled'] ? 'Enabled' : 'Disabled'
|
|
36
|
-
unless (rule['Expiration'] or rule['Transition'])
|
|
37
|
-
Expiration { Days rule['Days'] }
|
|
38
|
-
else
|
|
39
|
-
if rule['Expiration']
|
|
40
|
-
if rule['Expiration']['Days']
|
|
41
|
-
Expiration { Days rule['Expiration']['Days'] }
|
|
42
|
-
elsif rule['Expiration']['Date']
|
|
43
|
-
Expiration { Date rule['Expiration']['Date'].is_a?(Time) ? rule['Expiration']['Date'].utc.iso8601 : Time.parse(rule['Expiration']['Date']).utc.iso8601 }
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
if rule['Transition']
|
|
47
|
-
Transition {
|
|
48
|
-
if rule['Transition']['Days']
|
|
49
|
-
Days rule['Transition']['Days']
|
|
50
|
-
elsif rule['Transition']['Date']
|
|
51
|
-
Date rule['Transition']['Date'].is_a?(Time) ? time.utc.iso8601 : Time.parse(time).utc.iso8601
|
|
52
|
-
end
|
|
53
|
-
StorageClass rule['Transition']['StorageClass'].nil? ? 'GLACIER' : rule['Transition']['StorageClass']
|
|
54
|
-
}
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
}
|
|
58
|
-
end
|
|
59
|
-
}
|
|
60
|
-
end
|
|
61
|
-
body = builder.to_xml
|
|
62
|
-
body.gsub! /<([^<>]+)\/>/, '<\1></\1>'
|
|
63
|
-
request({
|
|
64
|
-
:body => body,
|
|
65
|
-
:expects => 200,
|
|
66
|
-
:headers => {'Content-MD5' => Base64.encode64(Digest::MD5.digest(body)).chomp!,
|
|
67
|
-
'Content-Type' => 'application/xml'},
|
|
68
|
-
:host => "#{bucket_name}.#{@host}",
|
|
69
|
-
:method => 'PUT',
|
|
70
|
-
:query => {'lifecycle' => nil}
|
|
71
|
-
})
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
class Real
|
|
5
|
-
# Change logging status for an S3 bucket
|
|
6
|
-
#
|
|
7
|
-
# @param bucket_name [String] name of bucket to modify
|
|
8
|
-
# @param logging_status [Hash]:
|
|
9
|
-
# * Owner [Hash]:
|
|
10
|
-
# * ID [String]: id of owner
|
|
11
|
-
# * DisplayName [String]: display name of owner
|
|
12
|
-
# * AccessControlList [Array]:
|
|
13
|
-
# * Grantee [Hash]:
|
|
14
|
-
# * DisplayName [String] Display name of grantee
|
|
15
|
-
# * ID [String] Id of grantee
|
|
16
|
-
# or
|
|
17
|
-
# * EmailAddress [String] Email address of grantee
|
|
18
|
-
# or
|
|
19
|
-
# * URI [String] URI of group to grant access for
|
|
20
|
-
# * Permission [String] Permission, in [FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP]
|
|
21
|
-
#
|
|
22
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTlogging.html
|
|
23
|
-
|
|
24
|
-
def put_bucket_logging(bucket_name, logging_status)
|
|
25
|
-
if logging_status['LoggingEnabled'].empty?
|
|
26
|
-
data =
|
|
27
|
-
<<-DATA
|
|
28
|
-
<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01" />
|
|
29
|
-
DATA
|
|
30
|
-
else
|
|
31
|
-
data =
|
|
32
|
-
<<-DATA
|
|
33
|
-
<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
|
|
34
|
-
<LoggingEnabled>
|
|
35
|
-
<TargetBucket>#{logging_status['LoggingEnabled']['TargetBucket']}</TargetBucket>
|
|
36
|
-
<TargetPrefix>#{logging_status['LoggingEnabled']['TargetBucket']}</TargetPrefix>
|
|
37
|
-
<TargetGrants>
|
|
38
|
-
DATA
|
|
39
|
-
|
|
40
|
-
acl['AccessControlList'].each do |grant|
|
|
41
|
-
data << " <Grant>"
|
|
42
|
-
type = case grant['Grantee'].keys.sort
|
|
43
|
-
when ['DisplayName', 'ID']
|
|
44
|
-
'CanonicalUser'
|
|
45
|
-
when ['EmailAddress']
|
|
46
|
-
'AmazonCustomerByEmail'
|
|
47
|
-
when ['URI']
|
|
48
|
-
'Group'
|
|
49
|
-
end
|
|
50
|
-
data << " <Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"#{type}\">"
|
|
51
|
-
for key, value in grant['Grantee']
|
|
52
|
-
data << " <#{key}>#{value}</#{key}>"
|
|
53
|
-
end
|
|
54
|
-
data << " </Grantee>"
|
|
55
|
-
data << " <Permission>#{grant['Permission']}</Permission>"
|
|
56
|
-
data << " </Grant>"
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
data <<
|
|
60
|
-
<<-DATA
|
|
61
|
-
</TargetGrants>
|
|
62
|
-
</LoggingEnabled>
|
|
63
|
-
</BucketLoggingStatus>
|
|
64
|
-
DATA
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
request({
|
|
68
|
-
:body => data,
|
|
69
|
-
:expects => 200,
|
|
70
|
-
:headers => {},
|
|
71
|
-
:host => "#{bucket_name}.#{@host}",
|
|
72
|
-
:method => 'PUT',
|
|
73
|
-
:query => {'logging' => nil}
|
|
74
|
-
})
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
class Real
|
|
5
|
-
# Change bucket policy for an S3 bucket
|
|
6
|
-
#
|
|
7
|
-
# @param bucket_name [String] name of bucket to modify
|
|
8
|
-
# @param policy [Hash] policy document
|
|
9
|
-
#
|
|
10
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTpolicy.html
|
|
11
|
-
|
|
12
|
-
def put_bucket_policy(bucket_name, policy)
|
|
13
|
-
request({
|
|
14
|
-
:body => Fog::JSON.encode(policy),
|
|
15
|
-
:expects => 204,
|
|
16
|
-
:headers => {},
|
|
17
|
-
:host => "#{bucket_name}.#{@host}",
|
|
18
|
-
:method => 'PUT',
|
|
19
|
-
:query => {'policy' => nil}
|
|
20
|
-
})
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
class Real
|
|
5
|
-
# Change website configuration for an S3 bucket
|
|
6
|
-
#
|
|
7
|
-
# @param bucket_name [String] name of bucket to modify
|
|
8
|
-
# @param suffix [String] suffix to append to requests for the bucket
|
|
9
|
-
# @param options [Hash]
|
|
10
|
-
# @option options key [String] key to use for 4XX class errors
|
|
11
|
-
#
|
|
12
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html
|
|
13
|
-
|
|
14
|
-
def put_bucket_website(bucket_name, suffix, options = {})
|
|
15
|
-
data =
|
|
16
|
-
<<-DATA
|
|
17
|
-
<WebsiteConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
18
|
-
<IndexDocument>
|
|
19
|
-
<Suffix>#{suffix}</Suffix>
|
|
20
|
-
</IndexDocument>
|
|
21
|
-
DATA
|
|
22
|
-
|
|
23
|
-
if options[:key]
|
|
24
|
-
data <<
|
|
25
|
-
<<-DATA
|
|
26
|
-
<ErrorDocument>
|
|
27
|
-
<Key>#{options[:key]}</Key>
|
|
28
|
-
</ErrorDocument>
|
|
29
|
-
DATA
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
data << '</WebsiteConfiguration>'
|
|
33
|
-
request({
|
|
34
|
-
:body => data,
|
|
35
|
-
:expects => 200,
|
|
36
|
-
:headers => {},
|
|
37
|
-
:host => "#{bucket_name}.#{@host}",
|
|
38
|
-
:method => 'PUT',
|
|
39
|
-
:query => {'website' => nil}
|
|
40
|
-
})
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
class Mock # :nodoc:all
|
|
45
|
-
def put_bucket_website(bucket_name, suffix, options = {})
|
|
46
|
-
response = Excon::Response.new
|
|
47
|
-
if self.data[:buckets][bucket_name]
|
|
48
|
-
response.status = 200
|
|
49
|
-
else
|
|
50
|
-
response.status = 404
|
|
51
|
-
raise(Excon::Errors.status_error({:expects => 200}, response))
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
response
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
class Real
|
|
5
|
-
# Create an object in an S3 bucket
|
|
6
|
-
#
|
|
7
|
-
# @param bucket_name [String] Name of bucket to create object in
|
|
8
|
-
# @param object_name [String] Name of object to create
|
|
9
|
-
# @param data [File||String] File or String to create object from
|
|
10
|
-
# @param options [Hash]
|
|
11
|
-
# @option options Cache-Control [String] Caching behaviour
|
|
12
|
-
# @option options Content-Disposition [String] Presentational information for the object
|
|
13
|
-
# @option options Content-Encoding [String] Encoding of object data
|
|
14
|
-
# @option options Content-Length [String] Size of object in bytes (defaults to object.read.length)
|
|
15
|
-
# @option options Content-MD5 [String] Base64 encoded 128-bit MD5 digest of message
|
|
16
|
-
# @option options Content-Type [String] Standard MIME type describing contents (defaults to MIME::Types.of.first)
|
|
17
|
-
# @option options Expires [String] Cache expiry
|
|
18
|
-
# @option options x-amz-acl [String] Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']
|
|
19
|
-
# @option options x-amz-storage-class [String] Default is 'STANDARD', set to 'REDUCED_REDUNDANCY' for non-critical, reproducable data
|
|
20
|
-
# @option options x-amz-meta-#{name} Headers to be returned with object, note total size of request without body must be less than 8 KB.
|
|
21
|
-
#
|
|
22
|
-
# @return [Excon::Response] response:
|
|
23
|
-
# * headers [Hash]:
|
|
24
|
-
# * ETag [String] etag of new object
|
|
25
|
-
#
|
|
26
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUT.html
|
|
27
|
-
|
|
28
|
-
def put_object(bucket_name, object_name, data, options = {})
|
|
29
|
-
data = Fog::Storage.parse_data(data)
|
|
30
|
-
headers = data[:headers].merge!(options)
|
|
31
|
-
request({
|
|
32
|
-
:body => data[:body],
|
|
33
|
-
:expects => 200,
|
|
34
|
-
:headers => headers,
|
|
35
|
-
:host => "#{bucket_name}.#{@host}",
|
|
36
|
-
:idempotent => true,
|
|
37
|
-
:method => 'PUT',
|
|
38
|
-
:path => CGI.escape(object_name)
|
|
39
|
-
})
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
class Mock # :nodoc:all
|
|
44
|
-
def put_object(bucket_name, object_name, data, options = {})
|
|
45
|
-
acl = options['x-amz-acl'] || 'private'
|
|
46
|
-
if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
|
|
47
|
-
raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
|
|
48
|
-
else
|
|
49
|
-
self.data[:acls][:object][bucket_name] ||= {}
|
|
50
|
-
self.data[:acls][:object][bucket_name][object_name] = self.class.acls(acl)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
data = Fog::Storage.parse_data(data)
|
|
54
|
-
unless data[:body].is_a?(String)
|
|
55
|
-
data[:body] = data[:body].read
|
|
56
|
-
end
|
|
57
|
-
response = Excon::Response.new
|
|
58
|
-
if (bucket = self.data[:buckets][bucket_name])
|
|
59
|
-
response.status = 200
|
|
60
|
-
object = {
|
|
61
|
-
:body => data[:body],
|
|
62
|
-
'Content-Type' => options['Content-Type'] || data[:headers]['Content-Type'],
|
|
63
|
-
'ETag' => Digest::MD5.hexdigest(data[:body]),
|
|
64
|
-
'Key' => object_name,
|
|
65
|
-
'Last-Modified' => Fog::Time.now.to_date_header,
|
|
66
|
-
'Content-Length' => options['Content-Length'] || data[:headers]['Content-Length'],
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
for key, value in options
|
|
70
|
-
case key
|
|
71
|
-
when 'Cache-Control', 'Content-Disposition', 'Content-Encoding', 'Content-MD5', 'Expires', /^x-amz-meta-/, /^x-archive-/
|
|
72
|
-
object[key] = value
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
bucket[:objects][object_name] = [object]
|
|
77
|
-
|
|
78
|
-
response.headers = {
|
|
79
|
-
'Content-Length' => object['Content-Length'],
|
|
80
|
-
'Content-Type' => object['Content-Type'],
|
|
81
|
-
'ETag' => object['ETag'],
|
|
82
|
-
'Last-Modified' => object['Last-Modified'],
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
else
|
|
86
|
-
response.status = 404
|
|
87
|
-
raise(Excon::Errors.status_error({:expects => 200}, response))
|
|
88
|
-
end
|
|
89
|
-
response
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
class Real
|
|
5
|
-
require 'fog/internet_archive/requests/storage/acl_utils'
|
|
6
|
-
|
|
7
|
-
# Change access control list for an S3 object
|
|
8
|
-
#
|
|
9
|
-
# @param bucket_name [String] name of bucket to modify
|
|
10
|
-
# @param object_name [String] name of object to get access control list for
|
|
11
|
-
# @param acl [Hash]:
|
|
12
|
-
# * Owner [Hash]
|
|
13
|
-
# * ID [String] id of owner
|
|
14
|
-
# * DisplayName [String] display name of owner
|
|
15
|
-
# * AccessControlList [Array]
|
|
16
|
-
# * Grantee [Hash]
|
|
17
|
-
# * DisplayName [String] Display name of grantee
|
|
18
|
-
# * ID [String] Id of grantee
|
|
19
|
-
# or
|
|
20
|
-
# * EmailAddress [String] Email address of grantee
|
|
21
|
-
# or
|
|
22
|
-
# * URI [String] URI of group to grant access for
|
|
23
|
-
# * Permission [String] Permission, in [FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP]
|
|
24
|
-
# @param acl [String] Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']
|
|
25
|
-
# @param options [Hash]
|
|
26
|
-
#
|
|
27
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUTacl.html
|
|
28
|
-
|
|
29
|
-
def put_object_acl(bucket_name, object_name, acl, options = {})
|
|
30
|
-
query = {'acl' => nil}
|
|
31
|
-
data = ""
|
|
32
|
-
headers = {}
|
|
33
|
-
|
|
34
|
-
if acl.is_a?(Hash)
|
|
35
|
-
data = Fog::Storage::InternetArchive.hash_to_acl(acl)
|
|
36
|
-
else
|
|
37
|
-
if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
|
|
38
|
-
raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
|
|
39
|
-
end
|
|
40
|
-
headers['x-amz-acl'] = acl
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).strip
|
|
44
|
-
headers['Content-Type'] = 'application/json'
|
|
45
|
-
headers['Date'] = Fog::Time.now.to_date_header
|
|
46
|
-
|
|
47
|
-
request({
|
|
48
|
-
:body => data,
|
|
49
|
-
:expects => 200,
|
|
50
|
-
:headers => headers,
|
|
51
|
-
:host => "#{bucket_name}.#{@host}",
|
|
52
|
-
:method => 'PUT',
|
|
53
|
-
:path => CGI.escape(object_name),
|
|
54
|
-
:query => query
|
|
55
|
-
})
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
class Mock
|
|
60
|
-
def put_object_acl(bucket_name, object_name, acl, options = {})
|
|
61
|
-
if acl.is_a?(Hash)
|
|
62
|
-
self.data[:acls][:object][bucket_name][object_name] = Fog::Storage::InternetArchive.hash_to_acl(acl)
|
|
63
|
-
else
|
|
64
|
-
if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
|
|
65
|
-
raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
|
|
66
|
-
end
|
|
67
|
-
self.data[:acls][:object][bucket_name][object_name] = acl
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|