fog-internet-archive 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +53 -0
- data/.travis.yml +16 -0
- data/Gemfile +3 -0
- data/README.md +6 -0
- data/Rakefile +19 -0
- data/fog-internet-archive.gemspec +32 -0
- data/lib/fog/bin/internet_archive.rb +32 -0
- data/lib/fog/internet_archive.rb +1 -0
- data/lib/fog/internet_archive/core.rb +291 -0
- data/lib/fog/internet_archive/models/storage/directories.rb +39 -0
- data/lib/fog/internet_archive/models/storage/directory.rb +105 -0
- data/lib/fog/internet_archive/models/storage/file.rb +254 -0
- data/lib/fog/internet_archive/models/storage/files.rb +119 -0
- data/lib/fog/internet_archive/models/storage/ia_attributes.rb +36 -0
- data/lib/fog/internet_archive/parsers/storage/access_control_list.rb +42 -0
- data/lib/fog/internet_archive/parsers/storage/complete_multipart_upload.rb +20 -0
- data/lib/fog/internet_archive/parsers/storage/copy_object.rb +18 -0
- data/lib/fog/internet_archive/parsers/storage/cors_configuration.rb +38 -0
- data/lib/fog/internet_archive/parsers/storage/delete_multiple_objects.rb +45 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket.rb +58 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_lifecycle.rb +64 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_location.rb +16 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_logging.rb +36 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_website.rb +22 -0
- data/lib/fog/internet_archive/parsers/storage/get_request_payment.rb +16 -0
- data/lib/fog/internet_archive/parsers/storage/get_service.rb +28 -0
- data/lib/fog/internet_archive/parsers/storage/initiate_multipart_upload.rb +20 -0
- data/lib/fog/internet_archive/parsers/storage/list_multipart_uploads.rb +52 -0
- data/lib/fog/internet_archive/parsers/storage/list_parts.rb +36 -0
- data/lib/fog/internet_archive/requests/storage/abort_multipart_upload.rb +27 -0
- data/lib/fog/internet_archive/requests/storage/acl_utils.rb +60 -0
- data/lib/fog/internet_archive/requests/storage/complete_multipart_upload.rb +46 -0
- data/lib/fog/internet_archive/requests/storage/copy_object.rb +77 -0
- data/lib/fog/internet_archive/requests/storage/cors_utils.rb +39 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket.rb +42 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_cors.rb +26 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_lifecycle.rb +26 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_policy.rb +26 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_website.rb +26 -0
- data/lib/fog/internet_archive/requests/storage/delete_multiple_objects.rb +88 -0
- data/lib/fog/internet_archive/requests/storage/delete_object.rb +46 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket.rb +108 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_acl.rb +65 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_cors.rb +61 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_lifecycle.rb +35 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_location.rb +54 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_logging.rb +45 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_policy.rb +31 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_website.rb +38 -0
- data/lib/fog/internet_archive/requests/storage/get_object.rb +163 -0
- data/lib/fog/internet_archive/requests/storage/get_object_acl.rb +72 -0
- data/lib/fog/internet_archive/requests/storage/get_object_http_url.rb +48 -0
- data/lib/fog/internet_archive/requests/storage/get_object_https_url.rb +30 -0
- data/lib/fog/internet_archive/requests/storage/get_object_torrent.rb +45 -0
- data/lib/fog/internet_archive/requests/storage/get_object_url.rb +49 -0
- data/lib/fog/internet_archive/requests/storage/get_request_payment.rb +45 -0
- data/lib/fog/internet_archive/requests/storage/get_service.rb +50 -0
- data/lib/fog/internet_archive/requests/storage/head_object.rb +57 -0
- data/lib/fog/internet_archive/requests/storage/initiate_multipart_upload.rb +42 -0
- data/lib/fog/internet_archive/requests/storage/list_multipart_uploads.rb +52 -0
- data/lib/fog/internet_archive/requests/storage/list_parts.rb +53 -0
- data/lib/fog/internet_archive/requests/storage/post_object_hidden_fields.rb +36 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket.rb +70 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_acl.rb +69 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_cors.rb +47 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_lifecycle.rb +76 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_logging.rb +79 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_policy.rb +25 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_website.rb +59 -0
- data/lib/fog/internet_archive/requests/storage/put_object.rb +94 -0
- data/lib/fog/internet_archive/requests/storage/put_object_acl.rb +73 -0
- data/lib/fog/internet_archive/requests/storage/put_object_url.rb +43 -0
- data/lib/fog/internet_archive/requests/storage/put_request_payment.rb +45 -0
- data/lib/fog/internet_archive/requests/storage/sync_clock.rb +24 -0
- data/lib/fog/internet_archive/requests/storage/upload_part.rb +39 -0
- data/lib/fog/internet_archive/signaturev4.rb +71 -0
- data/lib/fog/internet_archive/storage.rb +381 -0
- data/lib/fog/internet_archive/version.rb +5 -0
- data/tasks/bundler.rake +3 -0
- data/tasks/console.rake +17 -0
- data/tasks/lint.rake +3 -0
- data/tasks/test.rake +7 -0
- data/tests/helper.rb +36 -0
- data/tests/helpers/collection_helper.rb +88 -0
- data/tests/helpers/formats_helper.rb +98 -0
- data/tests/helpers/formats_helper_tests.rb +106 -0
- data/tests/helpers/mock_helper.rb +13 -0
- data/tests/helpers/model_helper.rb +29 -0
- data/tests/helpers/responds_to_helper.rb +11 -0
- data/tests/helpers/schema_validator_tests.rb +101 -0
- data/tests/helpers/succeeds_helper.rb +9 -0
- data/tests/internet_archive/models/storage/directory_tests.rb +42 -0
- data/tests/internet_archive/models/storage/file_tests.rb +61 -0
- data/tests/internet_archive/models/storage/files_tests.rb +60 -0
- data/tests/internet_archive/models/storage/url_tests.rb +28 -0
- data/tests/internet_archive/requests/storage/acl_utils_tests.rb +209 -0
- data/tests/internet_archive/requests/storage/bucket_tests.rb +324 -0
- data/tests/internet_archive/requests/storage/cors_utils_tests.rb +108 -0
- data/tests/internet_archive/requests/storage/multipart_upload_tests.rb +132 -0
- data/tests/internet_archive/requests/storage/object_tests.rb +166 -0
- data/tests/internet_archive/signaturev4_tests.rb +41 -0
- data/tests/internet_archive/signed_params_tests.rb +5 -0
- data/tests/lorem.txt +1 -0
- metadata +322 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
module IAAttributes
|
4
|
+
# you can add other x-archive-metadata-* values, but these are standard
|
5
|
+
IA_STANDARD_METADATA_FIELDS = %q[hidden, title, collection, creator, mediatype, description, date, subject, licenseurl, pick, noindex, notes, rights, contributor, language, coverage, credits]
|
6
|
+
|
7
|
+
# for x-archive-metadata-mediatype, these are the valid values
|
8
|
+
IA_VALID_MEDIA_TYPES = %q[audio, data, etree, image, movies, software, texts, web]
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
def ia_metadata_attribute(name)
|
12
|
+
attribute(name, :aliases=>['amz','archive'].map{|p|"x-#{p}-#{name.to_s.tr('_','-')}"})
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
module InstanceMethods
|
17
|
+
# set_metadata_array_headers(:collections, options)
|
18
|
+
def set_metadata_array_headers(array_attribute, options={})
|
19
|
+
attr_values = Array(self.send(array_attribute))
|
20
|
+
opt_values = options.map do |key,value|
|
21
|
+
options.delete(key) if (key.to_s =~ /^x-(amz||archive)-meta(\d*)-#{array_attribute.to_s[0..-2]}/)
|
22
|
+
end
|
23
|
+
values = (attr_values + opt_values).compact.sort.uniq
|
24
|
+
# got the values, now add them back to the options
|
25
|
+
if values.size == 1
|
26
|
+
options["x-archive-meta-#{array_attribute.to_s[0..-2]}"] = values.first
|
27
|
+
elsif values.size > 1
|
28
|
+
values[0,99].each_with_index do |value, i|
|
29
|
+
options["x-archive-meta#{format("%02d", i+1)}-#{array_attribute.to_s[0..-2]}"] = value
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module InternetArchive
|
5
|
+
class AccessControlList < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@in_access_control_list = false
|
8
|
+
@grant = { 'Grantee' => {} }
|
9
|
+
@response = { 'Owner' => {}, 'AccessControlList' => [] }
|
10
|
+
end
|
11
|
+
|
12
|
+
def start_element(name, attrs = [])
|
13
|
+
super
|
14
|
+
if name == 'AccessControlList'
|
15
|
+
@in_access_control_list = true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def end_element(name)
|
20
|
+
case name
|
21
|
+
when 'AccessControlList'
|
22
|
+
@in_access_control_list = false
|
23
|
+
when 'Grant'
|
24
|
+
@response['AccessControlList'] << @grant
|
25
|
+
@grant = { 'Grantee' => {} }
|
26
|
+
when 'DisplayName', 'ID'
|
27
|
+
if @in_access_control_list
|
28
|
+
@grant['Grantee'][name] = value
|
29
|
+
else
|
30
|
+
@response['Owner'][name] = value
|
31
|
+
end
|
32
|
+
when 'Permission'
|
33
|
+
@grant[name] = value
|
34
|
+
when 'URI'
|
35
|
+
@grant['Grantee'][name] = value
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module InternetArchive
|
5
|
+
class CompleteMultipartUpload < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@response = {}
|
8
|
+
end
|
9
|
+
|
10
|
+
def end_element(name)
|
11
|
+
case name
|
12
|
+
when 'Bucket', 'ETag', 'Key', 'Location'
|
13
|
+
@response[name] = value
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module InternetArchive
|
5
|
+
class CopyObject < Fog::Parsers::Base
|
6
|
+
def end_element(name)
|
7
|
+
case name
|
8
|
+
when 'ETag'
|
9
|
+
@response[name] = value.gsub('"', '')
|
10
|
+
when 'LastModified'
|
11
|
+
@response[name] = Time.parse(value)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module InternetArchive
|
5
|
+
class CorsConfiguration < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@in_cors_configuration_list = false
|
8
|
+
@cors_rule = {}
|
9
|
+
@response = { 'CORSConfiguration' => [] }
|
10
|
+
end
|
11
|
+
|
12
|
+
def start_element(name, attrs = [])
|
13
|
+
super
|
14
|
+
if name == 'CORSConfiguration'
|
15
|
+
@in_cors_configuration_list = true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def end_element(name)
|
20
|
+
case name
|
21
|
+
when 'CORSConfiguration'
|
22
|
+
@in_cors_configuration_list = false
|
23
|
+
when 'CORSRule'
|
24
|
+
@response['CORSConfiguration'] << @cors_rule
|
25
|
+
@cors_rule = {}
|
26
|
+
when 'MaxAgeSeconds'
|
27
|
+
@cors_rule[name] = value.to_i
|
28
|
+
when 'ID'
|
29
|
+
@cors_rule[name] = value
|
30
|
+
when 'AllowedOrigin', 'AllowedMethod', 'AllowedHeader', 'ExposeHeader'
|
31
|
+
(@cors_rule[name] ||= []) << value
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module InternetArchive
|
5
|
+
class DeleteMultipleObjects < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@deleted = { 'Deleted' => {} }
|
8
|
+
@error = { 'Error' => {} }
|
9
|
+
@response = { 'DeleteResult' => [] }
|
10
|
+
end
|
11
|
+
|
12
|
+
def start_element(name, attrs = [])
|
13
|
+
super
|
14
|
+
case name
|
15
|
+
when 'Deleted'
|
16
|
+
@in_deleted = true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def end_element(name)
|
21
|
+
case name
|
22
|
+
when 'Deleted'
|
23
|
+
@response['DeleteResult'] << @deleted
|
24
|
+
@deleted = { 'Deleted' => {} }
|
25
|
+
@in_deleted = false
|
26
|
+
when 'Error'
|
27
|
+
@response['DeleteResult'] << @error
|
28
|
+
@error = { 'Error' => {} }
|
29
|
+
when 'Key', 'VersionId'
|
30
|
+
if @in_deleted
|
31
|
+
@deleted['Deleted'][name] = value
|
32
|
+
else
|
33
|
+
@error['Error'][name] = value
|
34
|
+
end
|
35
|
+
when 'DeleteMarker', 'DeletemarkerVersionId'
|
36
|
+
@deleted['Deleted'][name] = value
|
37
|
+
when 'Code', 'Message'
|
38
|
+
@error['Error'][name] = value
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module InternetArchive
|
5
|
+
class GetBucket < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@object = { 'Owner' => {} }
|
8
|
+
@response = { 'Contents' => [], 'CommonPrefixes' => [] }
|
9
|
+
end
|
10
|
+
|
11
|
+
def start_element(name, attrs = [])
|
12
|
+
super
|
13
|
+
case name
|
14
|
+
when 'CommonPrefixes'
|
15
|
+
@in_common_prefixes = true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def end_element(name)
|
20
|
+
case name
|
21
|
+
when 'CommonPrefixes'
|
22
|
+
@in_common_prefixes = false
|
23
|
+
when 'Contents'
|
24
|
+
@response['Contents'] << @object
|
25
|
+
@object = { 'Owner' => {} }
|
26
|
+
when 'DisplayName', 'ID'
|
27
|
+
@object['Owner'][name] = value
|
28
|
+
when 'ETag'
|
29
|
+
@object[name] = value.gsub('"', '')
|
30
|
+
when 'IsTruncated'
|
31
|
+
if value == 'true'
|
32
|
+
@response['IsTruncated'] = true
|
33
|
+
else
|
34
|
+
@response['IsTruncated'] = false
|
35
|
+
end
|
36
|
+
when 'LastModified'
|
37
|
+
@object['LastModified'] = Time.parse(value)
|
38
|
+
when 'Marker', 'Name'
|
39
|
+
@response[name] = value
|
40
|
+
when 'MaxKeys'
|
41
|
+
@response['MaxKeys'] = value.to_i
|
42
|
+
when 'Prefix'
|
43
|
+
if @in_common_prefixes
|
44
|
+
@response['CommonPrefixes'] << value
|
45
|
+
else
|
46
|
+
@response[name] = value
|
47
|
+
end
|
48
|
+
when 'Size'
|
49
|
+
@object['Size'] = value.to_i
|
50
|
+
when 'Delimiter', 'Key', 'StorageClass'
|
51
|
+
@object[name] = value
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module InternetArchive
|
5
|
+
class GetBucketLifecycle < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@expiration = {}
|
8
|
+
@transition = {}
|
9
|
+
@rule = {}
|
10
|
+
@response = { 'Rules' => [] }
|
11
|
+
end
|
12
|
+
|
13
|
+
def start_element(name, attrs=[])
|
14
|
+
super
|
15
|
+
case name
|
16
|
+
when 'Expiration'
|
17
|
+
@in_expiration = true
|
18
|
+
when 'Transition'
|
19
|
+
@in_transition = true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def end_element(name)
|
24
|
+
if @in_expiration
|
25
|
+
case name
|
26
|
+
when 'Days'
|
27
|
+
@expiration[name] = value.to_i
|
28
|
+
when 'Date'
|
29
|
+
@expiration[name] = value
|
30
|
+
when 'Expiration'
|
31
|
+
@rule['Expiration'] = @expiration
|
32
|
+
@in_expiration = false
|
33
|
+
@expiration = {}
|
34
|
+
end
|
35
|
+
elsif @in_transition
|
36
|
+
case name
|
37
|
+
when 'StorageClass',
|
38
|
+
@transition['StorageClass'] = value
|
39
|
+
when 'Date'
|
40
|
+
@transition[name] = value
|
41
|
+
when 'Days'
|
42
|
+
@transition[name] = value.to_i
|
43
|
+
when 'Transition'
|
44
|
+
@rule['Transition'] = @transition
|
45
|
+
@in_transition = false
|
46
|
+
@transition = {}
|
47
|
+
end
|
48
|
+
else
|
49
|
+
case name
|
50
|
+
when 'ID', 'Prefix'
|
51
|
+
@rule[name] = value
|
52
|
+
when 'Status'
|
53
|
+
@rule['Enabled'] = value == 'Enabled'
|
54
|
+
when 'Rule'
|
55
|
+
@response['Rules'] << @rule
|
56
|
+
@rule = {}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module InternetArchive
|
5
|
+
class GetBucketLocation < Fog::Parsers::Base
|
6
|
+
def end_element(name)
|
7
|
+
case name
|
8
|
+
when 'LocationConstraint'
|
9
|
+
@response[name] = value
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module InternetArchive
|
5
|
+
class GetBucketLogging < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@grant = { 'Grantee' => {} }
|
8
|
+
@response = { 'BucketLoggingStatus' => {} }
|
9
|
+
end
|
10
|
+
|
11
|
+
def end_element(name)
|
12
|
+
case name
|
13
|
+
when 'DisplayName', 'ID'
|
14
|
+
if @in_access_control_list
|
15
|
+
@grant['Grantee'][name] = value
|
16
|
+
else
|
17
|
+
@response['Owner'][name] = value
|
18
|
+
end
|
19
|
+
when 'Grant'
|
20
|
+
@response['BucketLoggingStatus']['LoggingEnabled']['TargetGrants'] << @grant
|
21
|
+
@grant = { 'Grantee' => {} }
|
22
|
+
when 'LoggingEnabled'
|
23
|
+
@response['BucketLoggingStatus']['LoggingEnabled'] = { 'TargetGrants' => [] }
|
24
|
+
when 'Permission'
|
25
|
+
@grant[name] = value
|
26
|
+
when 'TargetBucket', 'TargetPrefix'
|
27
|
+
@response['BucketLoggingStatus'][name] = value
|
28
|
+
when 'URI'
|
29
|
+
@grant['Grantee'][name] = value
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module InternetArchive
|
5
|
+
class GetBucketWebsite < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@response = { 'ErrorDocument' => {}, 'IndexDocument' => {} }
|
8
|
+
end
|
9
|
+
|
10
|
+
def end_element(name)
|
11
|
+
case name
|
12
|
+
when 'Key'
|
13
|
+
@response['ErrorDocument'][name] = value
|
14
|
+
when 'Suffix'
|
15
|
+
@response['IndexDocument'][name] = value
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module InternetArchive
|
5
|
+
class GetService < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@bucket = {}
|
8
|
+
@response = { 'Owner' => {}, 'Buckets' => [] }
|
9
|
+
end
|
10
|
+
|
11
|
+
def end_element(name)
|
12
|
+
case name
|
13
|
+
when 'Bucket'
|
14
|
+
@response['Buckets'] << @bucket
|
15
|
+
@bucket = {}
|
16
|
+
when 'CreationDate'
|
17
|
+
@bucket['CreationDate'] = Time.parse(value)
|
18
|
+
when 'DisplayName', 'ID'
|
19
|
+
@response['Owner'][name] = value
|
20
|
+
when 'Name'
|
21
|
+
@bucket[name] = value
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|