aws-sdk-resources 2.2.22 → 2.2.23
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a01b622bd2d85e55ec7ccec0a9dc9af44bb0797
|
4
|
+
data.tar.gz: 8205da57ea4f8a925bdb76f892bb88f6d581ab1c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5058fefb5688a6805e4d49adc6f50c5c66049ac872e07967495f908ef46cdf9c5fd2ebbcc57bf9eed350d191716ae3b42adb900ced9f19964febb65c3e108d91
|
7
|
+
data.tar.gz: 2ff596c2648cf4520e94a893453d8f2c4b7c881649549551bd921e66405293d9efedcf65e90dd11378cebdd8633b3355d26d691af43b669d8f31a8994254db9a
|
@@ -5,14 +5,17 @@ module Aws
|
|
5
5
|
alias size content_length
|
6
6
|
|
7
7
|
# Copies another object to this object. Use `multipart_copy: true`
|
8
|
-
# for large objects. This is required for objects that exceed 5GB.
|
8
|
+
# for large objects. This is required for objects that exceed 5GB.
|
9
9
|
#
|
10
|
-
# @param [S3::Object, String, Hash] source
|
11
|
-
# data from. `source` must be one of the following:
|
10
|
+
# @param [S3::Object, S3::ObjectVersion, S3::ObjectSummary, String, Hash] source
|
11
|
+
# Where to copy object data from. `source` must be one of the following:
|
12
12
|
#
|
13
13
|
# * {Aws::S3::Object}
|
14
|
-
# *
|
15
|
-
# *
|
14
|
+
# * {Aws::S3::ObjectSummary}
|
15
|
+
# * {Aws::S3::ObjectVersion}
|
16
|
+
# * Hash - with `:bucket` and `:key` and optional `:version_id`
|
17
|
+
# * String - formatted like `"source-bucket-name/uri-escaped-key"`
|
18
|
+
# or `"source-bucket-name/uri-escaped-key?versionId=version-id"`
|
16
19
|
#
|
17
20
|
# @option options [Boolean] :multipart_copy (false) When `true`,
|
18
21
|
# the object will be copied using the multipart APIs. This is
|
@@ -20,6 +23,20 @@ module Aws
|
|
20
23
|
# performance improvements on large objects. Amazon S3 does
|
21
24
|
# not accept multipart copies for objects smaller than 5MB.
|
22
25
|
#
|
26
|
+
# @options options [Integer] :content_length Only used when
|
27
|
+
# `:multipart_copy` is `true`. Passing this options avoids a HEAD
|
28
|
+
# request to query the source object size.
|
29
|
+
#
|
30
|
+
# @options options [S3::Client] :copy_source_client Only used when
|
31
|
+
# `:multipart_copy` is `true` and the source object is in a
|
32
|
+
# different region. You do not need to specify this option
|
33
|
+
# if you have provided `:content_length`.
|
34
|
+
#
|
35
|
+
# @options options [String] :copy_source_region Only used when
|
36
|
+
# `:multipart_copy` is `true` and the source object is in a
|
37
|
+
# different region. You do not need to specify this option
|
38
|
+
# if you have provided a `:source_client` or a `:content_length`.
|
39
|
+
#
|
23
40
|
# @example Basic object copy
|
24
41
|
#
|
25
42
|
# bucket = Aws::S3::Bucket.new('target-bucket')
|
@@ -15,7 +15,6 @@ module Aws
|
|
15
15
|
copy_object(source, @object, merge_options(source, options))
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
18
|
def copy_to(target, options = {})
|
20
19
|
copy_object(@object, target, merge_options(target, options))
|
21
20
|
end
|
@@ -28,6 +27,7 @@ module Aws
|
|
28
27
|
options[:key] = target_key
|
29
28
|
options[:copy_source] = copy_source(source)
|
30
29
|
if options.delete(:multipart_copy)
|
30
|
+
apply_source_client(source, options)
|
31
31
|
ObjectMultipartCopier.new(@options).copy(options)
|
32
32
|
else
|
33
33
|
@object.client.copy_object(options)
|
@@ -37,8 +37,14 @@ module Aws
|
|
37
37
|
def copy_source(source)
|
38
38
|
case source
|
39
39
|
when String then escape(source)
|
40
|
-
when Hash
|
41
|
-
|
40
|
+
when Hash
|
41
|
+
src = "#{source[:bucket]}/#{escape(source[:key])}"
|
42
|
+
src += "?versionId=#{source[:version_id]}" if source.key?(:version_id)
|
43
|
+
src
|
44
|
+
when S3::Object, S3::ObjectSummary
|
45
|
+
"#{source.bucket_name}/#{escape(source.key)}"
|
46
|
+
when S3::ObjectVersion
|
47
|
+
"#{source.bucket_name}/#{escape(source.object_key)}?versionId=#{source.id}"
|
42
48
|
else
|
43
49
|
msg = "expected source to be an Aws::S3::Object, Hash, or String"
|
44
50
|
raise ArgumentError, msg
|
@@ -59,7 +65,7 @@ module Aws
|
|
59
65
|
def merge_options(source_or_target, options)
|
60
66
|
if Hash === source_or_target
|
61
67
|
source_or_target.inject(options.dup) do |opts, (key, value)|
|
62
|
-
opts[key] = value unless [:bucket, :key].include?(key)
|
68
|
+
opts[key] = value unless [:bucket, :key, :version_id].include?(key)
|
63
69
|
opts
|
64
70
|
end
|
65
71
|
else
|
@@ -67,6 +73,22 @@ module Aws
|
|
67
73
|
end
|
68
74
|
end
|
69
75
|
|
76
|
+
def apply_source_client(source, options)
|
77
|
+
|
78
|
+
if source.respond_to?(:client)
|
79
|
+
options[:copy_source_client] ||= source.client
|
80
|
+
end
|
81
|
+
|
82
|
+
if options[:copy_source_region]
|
83
|
+
options[:copy_source_client] ||= S3::Client.new(
|
84
|
+
@object.client.config.to_h.merge(region: options.delete(:copy_source_region))
|
85
|
+
)
|
86
|
+
end
|
87
|
+
|
88
|
+
options[:copy_source_client] ||= @object.client
|
89
|
+
|
90
|
+
end
|
91
|
+
|
70
92
|
def escape(str)
|
71
93
|
Seahorse::Util.uri_path_escape(str)
|
72
94
|
end
|
@@ -116,12 +116,12 @@ module Aws
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def source_size(options)
|
119
|
-
if options[:content_length]
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
119
|
+
return options.delete(:content_length) if options[:content_length]
|
120
|
+
|
121
|
+
client = options[:copy_source_client] || @client
|
122
|
+
|
123
|
+
bucket, key = options[:copy_source].match(/([^\/]+?)\/(.+)/)[1,2]
|
124
|
+
client.head_object(bucket: bucket, key: key).content_length
|
125
125
|
end
|
126
126
|
|
127
127
|
def default_part_size(source_size)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-sdk-resources
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amazon Web Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-core
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.2.
|
19
|
+
version: 2.2.23
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.2.
|
26
|
+
version: 2.2.23
|
27
27
|
description: Provides resource oriented interfaces and other higher-level abstractions
|
28
28
|
for many AWS services. This gem is part of the official AWS SDK for Ruby.
|
29
29
|
email:
|