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,38 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
class Real
|
|
5
|
-
require 'fog/internet_archive/parsers/storage/get_bucket_website'
|
|
6
|
-
|
|
7
|
-
# Get website configuration for an S3 bucket
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
# @param bucket_name [String] name of bucket to get website configuration for
|
|
11
|
-
#
|
|
12
|
-
# @return [Excon::Response] response:
|
|
13
|
-
# * body [Hash]:
|
|
14
|
-
# * IndexDocument [Hash]:
|
|
15
|
-
# * Suffix [String] - Suffix appended when directory is requested
|
|
16
|
-
# * ErrorDocument [Hash]:
|
|
17
|
-
# * Key [String] - Object key to return for 4XX class errors
|
|
18
|
-
#
|
|
19
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETwebsite.html
|
|
20
|
-
|
|
21
|
-
def get_bucket_website(bucket_name)
|
|
22
|
-
unless bucket_name
|
|
23
|
-
raise ArgumentError.new('bucket_name is required')
|
|
24
|
-
end
|
|
25
|
-
request({
|
|
26
|
-
:expects => 200,
|
|
27
|
-
:headers => {},
|
|
28
|
-
:host => "#{bucket_name}.#{@host}",
|
|
29
|
-
:idempotent => true,
|
|
30
|
-
:method => 'GET',
|
|
31
|
-
:parser => Fog::Parsers::Storage::InternetArchive::GetBucketWebsite.new,
|
|
32
|
-
:query => {'website' => nil}
|
|
33
|
-
})
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
class Real
|
|
5
|
-
# Get an object from S3
|
|
6
|
-
#
|
|
7
|
-
# @param bucket_name [String] Name of bucket to read from
|
|
8
|
-
# @param object_name [String] Name of object to read
|
|
9
|
-
# @param options [Hash]
|
|
10
|
-
# @option options If-Match [String] Returns object only if its etag matches this value, otherwise returns 412 (Precondition Failed).
|
|
11
|
-
# @option options If-Modified-Since [Time] Returns object only if it has been modified since this time, otherwise returns 304 (Not Modified).
|
|
12
|
-
# @option options If-None-Match [String] Returns object only if its etag differs from this value, otherwise returns 304 (Not Modified)
|
|
13
|
-
# @option options If-Unmodified-Since [Time] Returns object only if it has not been modified since this time, otherwise returns 412 (Precodition Failed).
|
|
14
|
-
# @option options Range [String] Range of object to download
|
|
15
|
-
#
|
|
16
|
-
# @return [Excon::Response] response:
|
|
17
|
-
# * body [String]- Contents of object
|
|
18
|
-
# * headers [Hash]:
|
|
19
|
-
# * Content-Length [String] - Size of object contents
|
|
20
|
-
# * Content-Type [String] - MIME type of object
|
|
21
|
-
# * ETag [String] - Etag of object
|
|
22
|
-
# * Last-Modified [String] - Last modified timestamp for object
|
|
23
|
-
#
|
|
24
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGET.html
|
|
25
|
-
|
|
26
|
-
def get_object(bucket_name, object_name, options = {}, &block)
|
|
27
|
-
unless bucket_name
|
|
28
|
-
raise ArgumentError.new('bucket_name is required')
|
|
29
|
-
end
|
|
30
|
-
unless object_name
|
|
31
|
-
raise ArgumentError.new('object_name is required')
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
params = { :headers => {} }
|
|
35
|
-
params[:headers].merge!(options)
|
|
36
|
-
if options['If-Modified-Since']
|
|
37
|
-
params[:headers]['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header
|
|
38
|
-
end
|
|
39
|
-
if options['If-Unmodified-Since']
|
|
40
|
-
params[:headers]['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
if block_given?
|
|
44
|
-
params[:response_block] = Proc.new
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
request(params.merge!({
|
|
48
|
-
:expects => [ 200, 206 ],
|
|
49
|
-
:host => "#{bucket_name}.#{@host}",
|
|
50
|
-
:idempotent => true,
|
|
51
|
-
:method => 'GET',
|
|
52
|
-
:path => CGI.escape(object_name),
|
|
53
|
-
}))
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
class Mock # :nodoc:all
|
|
58
|
-
def get_object(bucket_name, object_name, options = {}, &block)
|
|
59
|
-
unless bucket_name
|
|
60
|
-
raise ArgumentError.new('bucket_name is required')
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
unless object_name
|
|
64
|
-
raise ArgumentError.new('object_name is required')
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
response = Excon::Response.new
|
|
68
|
-
if (bucket = self.data[:buckets][bucket_name])
|
|
69
|
-
object = nil
|
|
70
|
-
if bucket[:objects].key?(object_name)
|
|
71
|
-
object = bucket[:objects][object_name].first
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
if (object && !object[:delete_marker])
|
|
75
|
-
if options['If-Match'] && options['If-Match'] != object['ETag']
|
|
76
|
-
response.status = 412
|
|
77
|
-
elsif options['If-Modified-Since'] && options['If-Modified-Since'] >= Time.parse(object['Last-Modified'])
|
|
78
|
-
response.status = 304
|
|
79
|
-
elsif options['If-None-Match'] && options['If-None-Match'] == object['ETag']
|
|
80
|
-
response.status = 304
|
|
81
|
-
elsif options['If-Unmodified-Since'] && options['If-Unmodified-Since'] < Time.parse(object['Last-Modified'])
|
|
82
|
-
response.status = 412
|
|
83
|
-
else
|
|
84
|
-
response.status = 200
|
|
85
|
-
for key, value in object
|
|
86
|
-
case key
|
|
87
|
-
when 'Cache-Control', 'Content-Disposition', 'Content-Encoding', 'Content-Length', 'Content-MD5', 'Content-Type', 'ETag', 'Expires', 'Last-Modified', /^x-amz-meta-/
|
|
88
|
-
response.headers[key] = value
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
body = object[:body]
|
|
93
|
-
if options['Range']
|
|
94
|
-
# since AWS S3 itself does not support multiple range headers, we will use only the first
|
|
95
|
-
ranges = byte_ranges(options['Range'], body.size)
|
|
96
|
-
unless ranges.nil? || ranges.empty?
|
|
97
|
-
response.status = 206
|
|
98
|
-
body = body[ranges.first]
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
unless block_given?
|
|
103
|
-
response.body = body
|
|
104
|
-
else
|
|
105
|
-
data = StringIO.new(body)
|
|
106
|
-
remaining = data.length
|
|
107
|
-
while remaining > 0
|
|
108
|
-
chunk = data.read([remaining, Excon::CHUNK_SIZE].min)
|
|
109
|
-
block.call(chunk)
|
|
110
|
-
remaining -= Excon::CHUNK_SIZE
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
else
|
|
115
|
-
response.status = 404
|
|
116
|
-
response.body = "...<Code>NoSuchKey<\/Code>..."
|
|
117
|
-
raise(Excon::Errors.status_error({:expects => 200}, response))
|
|
118
|
-
end
|
|
119
|
-
else
|
|
120
|
-
response.status = 404
|
|
121
|
-
response.body = "...<Code>NoSuchBucket</Code>..."
|
|
122
|
-
raise(Excon::Errors.status_error({:expects => 200}, response))
|
|
123
|
-
end
|
|
124
|
-
response
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
private
|
|
128
|
-
|
|
129
|
-
# === Borrowed from rack
|
|
130
|
-
# Parses the "Range:" header, if present, into an array of Range objects.
|
|
131
|
-
# Returns nil if the header is missing or syntactically invalid.
|
|
132
|
-
# Returns an empty array if none of the ranges are satisfiable.
|
|
133
|
-
def byte_ranges(http_range, size)
|
|
134
|
-
# See <http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35>
|
|
135
|
-
return nil unless http_range
|
|
136
|
-
ranges = []
|
|
137
|
-
http_range.split(/,\s*/).each do |range_spec|
|
|
138
|
-
matches = range_spec.match(/bytes=(\d*)-(\d*)/)
|
|
139
|
-
return nil unless matches
|
|
140
|
-
r0,r1 = matches[1], matches[2]
|
|
141
|
-
if r0.empty?
|
|
142
|
-
return nil if r1.empty?
|
|
143
|
-
# suffix-byte-range-spec, represents trailing suffix of file
|
|
144
|
-
r0 = [size - r1.to_i, 0].max
|
|
145
|
-
r1 = size - 1
|
|
146
|
-
else
|
|
147
|
-
r0 = r0.to_i
|
|
148
|
-
if r1.empty?
|
|
149
|
-
r1 = size - 1
|
|
150
|
-
else
|
|
151
|
-
r1 = r1.to_i
|
|
152
|
-
return nil if r1 < r0 # backwards range is syntactically invalid
|
|
153
|
-
r1 = size-1 if r1 >= size
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
ranges << (r0..r1) if r0 <= r1
|
|
157
|
-
end
|
|
158
|
-
ranges
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
end
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
class Real
|
|
5
|
-
require 'fog/internet_archive/parsers/storage/access_control_list'
|
|
6
|
-
|
|
7
|
-
# Get access control list for an S3 object
|
|
8
|
-
#
|
|
9
|
-
# @param bucket_name [String] name of bucket containing object
|
|
10
|
-
# @param object_name [String] name of object to get access control list for
|
|
11
|
-
# @param options [Hash]
|
|
12
|
-
#
|
|
13
|
-
# @return [Excon::Response] response:
|
|
14
|
-
# * body [Hash]:
|
|
15
|
-
# * [AccessControlPolicy [Hash]:
|
|
16
|
-
# * Owner [Hash]:
|
|
17
|
-
# * DisplayName [String] - Display name of object owner
|
|
18
|
-
# * ID [String] - Id of object owner
|
|
19
|
-
# * AccessControlList [Array]:
|
|
20
|
-
# * Grant [Hash]:
|
|
21
|
-
# * Grantee [Hash]:
|
|
22
|
-
# * DisplayName [String] - Display name of grantee
|
|
23
|
-
# * ID [String] - Id of grantee
|
|
24
|
-
# or
|
|
25
|
-
# * URI [String] - URI of group to grant access for
|
|
26
|
-
# * Permission [String] - Permission, in [FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP]
|
|
27
|
-
#
|
|
28
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGETacl.html
|
|
29
|
-
|
|
30
|
-
def get_object_acl(bucket_name, object_name, options = {})
|
|
31
|
-
unless bucket_name
|
|
32
|
-
raise ArgumentError.new('bucket_name is required')
|
|
33
|
-
end
|
|
34
|
-
unless object_name
|
|
35
|
-
raise ArgumentError.new('object_name is required')
|
|
36
|
-
end
|
|
37
|
-
query = {'acl' => nil}
|
|
38
|
-
request({
|
|
39
|
-
:expects => 200,
|
|
40
|
-
:headers => {},
|
|
41
|
-
:host => "#{bucket_name}.#{@host}",
|
|
42
|
-
:idempotent => true,
|
|
43
|
-
:method => 'GET',
|
|
44
|
-
:parser => Fog::Parsers::Storage::InternetArchive::AccessControlList.new,
|
|
45
|
-
:path => CGI.escape(object_name),
|
|
46
|
-
:query => query
|
|
47
|
-
})
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
class Mock # :nodoc:all
|
|
52
|
-
require 'fog/internet_archive/requests/storage/acl_utils'
|
|
53
|
-
|
|
54
|
-
def get_object_acl(bucket_name, object_name, options = {})
|
|
55
|
-
response = Excon::Response.new
|
|
56
|
-
if acl = self.data[:acls][:object][bucket_name] && self.data[:acls][:object][bucket_name][object_name]
|
|
57
|
-
response.status = 200
|
|
58
|
-
if acl.is_a?(String)
|
|
59
|
-
response.body = Fog::Storage::InternetArchive.acl_to_hash(acl)
|
|
60
|
-
else
|
|
61
|
-
response.body = acl
|
|
62
|
-
end
|
|
63
|
-
else
|
|
64
|
-
response.status = 404
|
|
65
|
-
raise(Excon::Errors.status_error({:expects => 200}, response))
|
|
66
|
-
end
|
|
67
|
-
response
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
module GetObjectHttpUrl
|
|
5
|
-
def get_object_http_url(bucket_name, object_name, expires, options = {})
|
|
6
|
-
unless bucket_name
|
|
7
|
-
raise ArgumentError.new('bucket_name is required')
|
|
8
|
-
end
|
|
9
|
-
unless object_name
|
|
10
|
-
raise ArgumentError.new('object_name is required')
|
|
11
|
-
end
|
|
12
|
-
host, path = if bucket_name =~ /^(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
|
|
13
|
-
["#{bucket_name}.#{@host}", object_name]
|
|
14
|
-
else
|
|
15
|
-
[@host, "#{bucket_name}/#{object_name}"]
|
|
16
|
-
end
|
|
17
|
-
http_url({
|
|
18
|
-
:headers => {},
|
|
19
|
-
:host => host,
|
|
20
|
-
:port => @port,
|
|
21
|
-
:method => 'GET',
|
|
22
|
-
:path => path,
|
|
23
|
-
:query => options[:query]
|
|
24
|
-
}, expires)
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
class Real
|
|
29
|
-
# Get an expiring object http url from S3
|
|
30
|
-
#
|
|
31
|
-
# @param bucket_name [String] Name of bucket containing object
|
|
32
|
-
# @param object_name [String] Name of object to get expiring url for
|
|
33
|
-
# @param expires [Time] An expiry time for this url
|
|
34
|
-
#
|
|
35
|
-
# @return [Excon::Response] response:
|
|
36
|
-
# * body [String] - url for object
|
|
37
|
-
#
|
|
38
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_QSAuth.html
|
|
39
|
-
|
|
40
|
-
include GetObjectHttpUrl
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
class Mock # :nodoc:all
|
|
44
|
-
include GetObjectHttpUrl
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
module GetObjectHttpsUrl
|
|
5
|
-
def get_object_https_url(bucket_name, object_name, expires, options = {})
|
|
6
|
-
get_object_url(bucket_name, object_name, expires, options.merge(:scheme => 'https'))
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
class Real
|
|
11
|
-
# Get an expiring object https url from S3
|
|
12
|
-
#
|
|
13
|
-
# @param bucket_name [String] Name of bucket containing object
|
|
14
|
-
# @param object_name [String] Name of object to get expiring url for
|
|
15
|
-
# @param expires [Time] An expiry time for this url
|
|
16
|
-
#
|
|
17
|
-
# @return [Excon::Response] response:
|
|
18
|
-
# * body [String] - url for object
|
|
19
|
-
#
|
|
20
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_QSAuth.html
|
|
21
|
-
|
|
22
|
-
include GetObjectHttpsUrl
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
class Mock # :nodoc:all
|
|
26
|
-
include GetObjectHttpsUrl
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
class Real
|
|
5
|
-
# Get torrent for an S3 object
|
|
6
|
-
#
|
|
7
|
-
# @param bucket_name [String] name of bucket containing object
|
|
8
|
-
# @param object_name [String] name of object to get torrent for
|
|
9
|
-
#
|
|
10
|
-
# @return [Excon::Response] response:
|
|
11
|
-
# * body [Hash]:
|
|
12
|
-
# * AccessControlPolicy [Hash:
|
|
13
|
-
# * Owner [Hash]:
|
|
14
|
-
# * DisplayName [String] - Display name of object owner
|
|
15
|
-
# * ID [String] - Id of object owner
|
|
16
|
-
# * AccessControlList [Array]:
|
|
17
|
-
# * Grant [Hash]:
|
|
18
|
-
# * Grantee [Hash]:
|
|
19
|
-
# * DisplayName [String] - Display name of grantee
|
|
20
|
-
# * ID [String] - Id of grantee
|
|
21
|
-
# * Permission [String] - Permission, in [FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP]
|
|
22
|
-
#
|
|
23
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGETtorrent.html
|
|
24
|
-
|
|
25
|
-
def get_object_torrent(bucket_name, object_name)
|
|
26
|
-
unless bucket_name
|
|
27
|
-
raise ArgumentError.new('bucket_name is required')
|
|
28
|
-
end
|
|
29
|
-
unless object_name
|
|
30
|
-
raise ArgumentError.new('object_name is required')
|
|
31
|
-
end
|
|
32
|
-
request({
|
|
33
|
-
:expects => 200,
|
|
34
|
-
:headers => {},
|
|
35
|
-
:host => "#{bucket_name}.#{@host}",
|
|
36
|
-
:idempotent => true,
|
|
37
|
-
:method => 'GET',
|
|
38
|
-
:path => CGI.escape(object_name),
|
|
39
|
-
:query => {'torrent' => nil}
|
|
40
|
-
})
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Storage
|
|
3
|
-
class InternetArchive
|
|
4
|
-
module GetObjectUrl
|
|
5
|
-
def get_object_url(bucket_name, object_name, expires, options = {})
|
|
6
|
-
unless bucket_name
|
|
7
|
-
raise ArgumentError.new('bucket_name is required')
|
|
8
|
-
end
|
|
9
|
-
unless object_name
|
|
10
|
-
raise ArgumentError.new('object_name is required')
|
|
11
|
-
end
|
|
12
|
-
host, path = if bucket_name =~ Fog::InternetArchive::COMPLIANT_BUCKET_NAMES
|
|
13
|
-
["#{bucket_name}.#{@host}", object_name]
|
|
14
|
-
else
|
|
15
|
-
[@host, "#{bucket_name}/#{object_name}"]
|
|
16
|
-
end
|
|
17
|
-
scheme_host_path_query({
|
|
18
|
-
:scheme => options[:scheme],
|
|
19
|
-
:headers => {},
|
|
20
|
-
:host => host,
|
|
21
|
-
:port => @port,
|
|
22
|
-
:method => 'GET',
|
|
23
|
-
:path => path,
|
|
24
|
-
:query => options[:query]
|
|
25
|
-
}, expires)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
class Real
|
|
30
|
-
# Get an expiring object url from S3
|
|
31
|
-
#
|
|
32
|
-
# @param bucket_name [String] Name of bucket containing object
|
|
33
|
-
# @param object_name [String] Name of object to get expiring url for
|
|
34
|
-
# @param expires [Time] An expiry time for this url
|
|
35
|
-
#
|
|
36
|
-
# @return [Excon::Response] response:
|
|
37
|
-
# * body [String] - url for object
|
|
38
|
-
#
|
|
39
|
-
# @see http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_QSAuth.html
|
|
40
|
-
|
|
41
|
-
include GetObjectUrl
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
class Mock # :nodoc:all
|
|
45
|
-
include GetObjectUrl
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|