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,254 +0,0 @@
1
- require 'fog/core/model'
2
- require 'fog/internet_archive/models/storage/ia_attributes.rb'
3
-
4
- module Fog
5
- module Storage
6
- class InternetArchive
7
- class File < Fog::Model
8
- extend Fog::Storage::IAAttributes::ClassMethods
9
- include Fog::Storage::IAAttributes::InstanceMethods
10
-
11
- # @see AWS Object docs http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectOps.html
12
-
13
- # @note Chunk size to use for multipart uploads.
14
- # Use small chunk sizes to minimize memory. E.g. 5242880 = 5mb
15
- attr_accessor :multipart_chunk_size
16
-
17
- attr_writer :body
18
-
19
- identity :key, :aliases => 'Key'
20
-
21
- attribute :cache_control, :aliases => 'Cache-Control'
22
- attribute :content_disposition, :aliases => 'Content-Disposition'
23
- attribute :content_encoding, :aliases => 'Content-Encoding'
24
- attribute :content_length, :aliases => ['Content-Length', 'Size'], :type => :integer
25
- attribute :content_md5, :aliases => 'Content-MD5'
26
- attribute :content_type, :aliases => 'Content-Type'
27
- attribute :etag, :aliases => ['Etag', 'ETag']
28
- attribute :expires, :aliases => 'Expires'
29
- attribute :last_modified, :aliases => ['Last-Modified', 'LastModified']
30
- attribute :metadata
31
- attribute :owner, :aliases => 'Owner'
32
-
33
- # treat these differently
34
- attribute :collections
35
- attribute :subjects
36
-
37
- ia_metadata_attribute :auto_make_bucket
38
- ia_metadata_attribute :cascade_delete
39
- ia_metadata_attribute :ignore_preexisting_bucket
40
- ia_metadata_attribute :interactive_priority
41
- ia_metadata_attribute :keep_old_version
42
- ia_metadata_attribute :queue_derive
43
- ia_metadata_attribute :size_hint
44
-
45
- # acl for internet archive is always public-read
46
- def acl
47
- 'public-read'
48
- end
49
-
50
- def acl=(new_acl)
51
- 'public-read'
52
- end
53
-
54
- # Get file's body if exists, else ' '.
55
- #
56
- # @return [File]
57
- #
58
- def body
59
- attributes[:body] ||= if last_modified && (file = collection.get(identity))
60
- file.body
61
- else
62
- ''
63
- end
64
- end
65
-
66
- # Set body attribute.
67
- #
68
- # @param [File] new_body
69
- # @return [File] attributes[:body]
70
- #
71
- def body=(new_body)
72
- attributes[:body] = new_body
73
- end
74
-
75
- # Get the file instance's directory.
76
- #
77
- # @return [Fog::InternetArchive::Storage::Directory]
78
- #
79
- def directory
80
- @directory
81
- end
82
-
83
- # Copy object from one bucket to other bucket.
84
- #
85
- # required attributes: directory, key
86
- #
87
- # @param target_directory_key [String]
88
- # @param target_file_key [String]
89
- # @param options [Hash] options for copy_object method
90
- # @return [String] Fog::InternetArchive::Files#head status of directory contents
91
- #
92
- def copy(target_directory_key, target_file_key, options = {})
93
- requires :directory, :key
94
- service.copy_object(directory.key, key, target_directory_key, target_file_key, options)
95
- target_directory = service.directories.new(:key => target_directory_key)
96
- target_directory.files.head(target_file_key)
97
- end
98
-
99
- # Destroy file via http DELETE.
100
- #
101
- # required attributes: directory, key
102
- #
103
- # @param options [Hash]
104
- # @return [Boolean] true if successful
105
- #
106
- def destroy(options = {})
107
- requires :directory, :key
108
- options['x-archive-cascade-delete'] = cascade_delete if cascade_delete
109
- service.delete_object(directory.key, key, options)
110
- true
111
- end
112
-
113
- remove_method :metadata
114
- def metadata
115
- attributes.reject {|key, value| !(key.to_s =~ /^x-(amz||archive)-meta/)}
116
- end
117
-
118
- remove_method :metadata=
119
- def metadata=(new_metadata)
120
- merge_attributes(new_metadata)
121
- end
122
-
123
- remove_method :owner=
124
- def owner=(new_owner)
125
- if new_owner
126
- attributes[:owner] = {
127
- :display_name => new_owner['DisplayName'],
128
- :id => new_owner['ID']
129
- }
130
- end
131
- end
132
-
133
- # Set Access-Control-List permissions.
134
- #
135
- # valid new_publics: public_read, private
136
- #
137
- # @param [String] new_public
138
- # @return [String] new_public
139
- #
140
- def public=(new_public)
141
- 'public-read'
142
- end
143
-
144
- # Get publicly acessible url via http GET.
145
- #
146
- # required attributes: directory, key
147
- #
148
- # @return [String] public url
149
- #
150
- def public_url
151
- requires :directory, :key
152
- "http://#{Fog::InternetArchive::DOMAIN_NAME}/download/#{directory.key}/#{Fog::InternetArchive.escape(key)}".gsub('%2F','/')
153
- end
154
-
155
- # Save file with body as contents to directory.key with name key via http PUT
156
- #
157
- # required attributes: body, directory, key
158
- #
159
- # @param [Hash] options
160
- # @option options [String] cache_control sets Cache-Control header. For example, 'No-cache'
161
- # @option options [String] content_disposition sets Content-Disposition HTTP header. For exampple, 'attachment; filename=testing.txt'
162
- # @option options [String] content_encoding sets Content-Encoding HTTP header. For example, 'x-gzip'
163
- # @option options [String] content_md5 sets Content-MD5. For example, '79054025255fb1a26e4bc422aef54eb4'
164
- # @option options [String] content_type Content-Type. For example, 'text/plain'
165
- # @option options [String] expires sets number of seconds before AWS Object expires.
166
- # @option options [String] storage_class sets x-amz-storage-class HTTP header. Defaults to 'STANDARD'. Or, 'REDUCED_REDUNDANCY'
167
- # @option options [String] encryption sets HTTP encryption header. Set to 'AES256' to encrypt files at rest on S3
168
- # @return [Boolean] true if no errors
169
- #
170
- def save(options = {})
171
- requires :body, :directory, :key
172
- if options != {}
173
- Fog::Logger.deprecation("options param is deprecated [light_black](#{caller.first})[/]")
174
- end
175
- options['Cache-Control'] = cache_control if cache_control
176
- options['Content-Disposition'] = content_disposition if content_disposition
177
- options['Content-Encoding'] = content_encoding if content_encoding
178
- options['Content-MD5'] = content_md5 if content_md5
179
- options['Content-Type'] = content_type if content_type
180
- options['Expires'] = expires if expires
181
- options.merge!(metadata)
182
-
183
- options['x-archive-auto-make-bucket'] = auto_make_bucket if auto_make_bucket
184
- options['x-archive-interactive-priority'] = interactive_priority if interactive_priority
185
- options['x-archive-keep-old-version'] = keep_old_version if keep_old_version
186
- options['x-archive-queue-derive'] = queue_derive if queue_derive
187
- options['x-archive-size-hint'] = size_hint.to_i.to_s if size_hint
188
-
189
- set_metadata_array_headers(:collections, options)
190
- set_metadata_array_headers(:subjects, options)
191
-
192
- if multipart_chunk_size && body.respond_to?(:read)
193
- data = multipart_save(options)
194
- merge_attributes(data.body)
195
- else
196
- data = service.put_object(directory.key, key, body, options)
197
- merge_attributes(data.headers.reject {|key, value| ['Content-Length', 'Content-Type'].include?(key)})
198
- end
199
- self.etag.gsub!('"','') if self.etag
200
- self.content_length = Fog::Storage.get_body_size(body)
201
- self.content_type ||= Fog::Storage.get_content_type(body)
202
- true
203
- end
204
-
205
- # Get a url for file.
206
- #
207
- # required attributes: key
208
- #
209
- # @param expires [String] number of seconds before url expires
210
- # @param options [Hash]
211
- # @return [String] url
212
- #
213
- def url(expires, options = {})
214
- requires :key
215
- collection.get_url(key, expires, options)
216
- end
217
-
218
- private
219
-
220
- def directory=(new_directory)
221
- @directory = new_directory
222
- end
223
-
224
- def multipart_save(options)
225
- # Initiate the upload
226
- res = service.initiate_multipart_upload(directory.key, key, options)
227
- upload_id = res.body["UploadId"]
228
-
229
- # Store ETags of upload parts
230
- part_tags = []
231
-
232
- # Upload each part
233
- # TODO: optionally upload chunks in parallel using threads
234
- # (may cause network performance problems with many small chunks)
235
- # TODO: Support large chunk sizes without reading the chunk into memory
236
- body.rewind if body.respond_to?(:rewind)
237
- while (chunk = body.read(multipart_chunk_size)) do
238
- md5 = Base64.encode64(Digest::MD5.digest(chunk)).strip
239
- part_upload = service.upload_part(directory.key, key, upload_id, part_tags.size + 1, chunk, 'Content-MD5' => md5 )
240
- part_tags << part_upload.headers["ETag"]
241
- end
242
-
243
- rescue
244
- # Abort the upload & reraise
245
- service.abort_multipart_upload(directory.key, key, upload_id) if upload_id
246
- raise
247
- else
248
- # Complete the upload
249
- service.complete_multipart_upload(directory.key, key, upload_id, part_tags)
250
- end
251
- end
252
- end
253
- end
254
- end
@@ -1,119 +0,0 @@
1
- require 'fog/core/collection'
2
- require 'fog/internet_archive/models/storage/file'
3
-
4
- module Fog
5
- module Storage
6
- class InternetArchive
7
- class Files < Fog::Collection
8
- extend Fog::Deprecation
9
- deprecate :get_url, :get_https_url
10
-
11
- attribute :common_prefixes, :aliases => 'CommonPrefixes'
12
- attribute :delimiter, :aliases => 'Delimiter'
13
- attribute :directory
14
- attribute :is_truncated, :aliases => 'IsTruncated'
15
- attribute :marker, :aliases => 'Marker'
16
- attribute :max_keys, :aliases => ['MaxKeys', 'max-keys']
17
- attribute :prefix, :aliases => 'Prefix'
18
-
19
- model Fog::Storage::InternetArchive::File
20
-
21
- def all(options = {})
22
- requires :directory
23
- options = {
24
- 'delimiter' => delimiter,
25
- 'marker' => marker,
26
- 'max-keys' => max_keys,
27
- 'prefix' => prefix
28
- }.merge!(options)
29
- options = options.reject {|key,value| value.nil? || value.to_s.empty?}
30
- merge_attributes(options)
31
- parent = directory.collection.get(
32
- directory.key,
33
- options
34
- )
35
- if parent
36
- merge_attributes(parent.files.attributes)
37
- load(parent.files.map {|file| file.attributes})
38
- else
39
- nil
40
- end
41
- end
42
-
43
- alias_method :each_file_this_page, :each
44
- def each
45
- if !block_given?
46
- self
47
- else
48
- subset = dup.all
49
-
50
- subset.each_file_this_page {|f| yield f}
51
- while subset.is_truncated
52
- subset = subset.all(:marker => subset.last.key)
53
- subset.each_file_this_page {|f| yield f}
54
- end
55
-
56
- self
57
- end
58
- end
59
-
60
- def get(key, options = {}, &block)
61
- requires :directory
62
- data = service.get_object(directory.key, key, options, &block)
63
- normalize_headers(data)
64
- file_data = data.headers.merge({
65
- :body => data.body,
66
- :key => key
67
- })
68
- new(file_data)
69
- rescue Excon::Errors::NotFound => error
70
- case error.response.body
71
- when /<Code>NoSuchKey<\/Code>/
72
- nil
73
- when /<Code>NoSuchBucket<\/Code>/
74
- raise(Fog::Storage::InternetArchive::NotFound.new("Directory #{directory.identity} does not exist."))
75
- else
76
- raise(error)
77
- end
78
- end
79
-
80
- def get_url(key, expires, options = {})
81
- requires :directory
82
- service.get_object_url(directory.key, key, expires, options)
83
- end
84
-
85
- def get_http_url(key, expires, options = {})
86
- requires :directory
87
- service.get_object_http_url(directory.key, key, expires, options)
88
- end
89
-
90
- def get_https_url(key, expires, options = {})
91
- requires :directory
92
- service.get_object_https_url(directory.key, key, expires, options)
93
- end
94
-
95
- def head(key, options = {})
96
- requires :directory
97
- data = service.head_object(directory.key, key, options)
98
- normalize_headers(data)
99
- file_data = data.headers.merge({
100
- :key => key
101
- })
102
- new(file_data)
103
- rescue Excon::Errors::NotFound
104
- nil
105
- end
106
-
107
- def new(attributes = {})
108
- requires :directory
109
- super({ :directory => directory }.merge!(attributes))
110
- end
111
-
112
- def normalize_headers(data)
113
- data.headers['Last-Modified'] = Time.parse(data.get_header('Last-Modified'))
114
- data.headers['ETag'] = data.get_header('ETag').gsub('"','')
115
- end
116
- end
117
- end
118
- end
119
- end
@@ -1,36 +0,0 @@
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
@@ -1,42 +0,0 @@
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