plntr-fakes3 1.0.0.pre.9test8 → 1.0.0.pre.9test9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fakes3/file_store.rb +57 -51
- data/lib/fakes3/server.rb +6 -0
- data/lib/fakes3/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d7d7534e1cb3a29382c746a57c385dcf4c2562398fc9f48ed3080ad1edcf09b
|
4
|
+
data.tar.gz: a1a7eed1674f3b1bc8723ec12d03cc3571f92f0f878c8ab33255aa6bbedd6355
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f40ab027de1f168e10219a4abe8d0b7b2318236f4ea3374f96e85f69edc89ca9d002d6ff9c24caa156220ea8b509c91d59d729398ebeb2115908a9762e3c7b5e
|
7
|
+
data.tar.gz: eb3f2a7b1ec661e48d00002a9a39b724833a0b589af75474676d6b3267c511d11126dc7c2ac2e3ad4a470d9f9703980ac7245a99c33d99582ea0183424707c12
|
data/lib/fakes3/file_store.rb
CHANGED
@@ -110,65 +110,71 @@ module FakeS3
|
|
110
110
|
end
|
111
111
|
|
112
112
|
def copy_object(src_bucket_name, src_name, dst_bucket_name, dst_name, request)
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
File.open(
|
139
|
-
|
113
|
+
begin
|
114
|
+
warn "copy_object:"
|
115
|
+
warn ". root: '#{@root}'"
|
116
|
+
warn ". dst bucket: '#{dst_bucket_name}'"
|
117
|
+
warn ". dst path: '#{dst_name}'"
|
118
|
+
warn ". src bucket: '#{src_bucket_name}'"
|
119
|
+
warn ". src path: '#{src_name}'"
|
120
|
+
src_root = File.join(@root,src_bucket_name,src_name,FAKE_S3_METADATA_DIR)
|
121
|
+
src_metadata_filename = File.join(src_root, "metadata")
|
122
|
+
warn ". src metadata: '#{src_metadata_filename}'"
|
123
|
+
warn ""
|
124
|
+
# src_metadata = YAML.load(File.open(src_metadata_filename, 'rb').read)
|
125
|
+
src_metadata = File.open(src_metadata_filename) { |file| YAML::load(file) }
|
126
|
+
src_content_filename = File.join(src_root, "content")
|
127
|
+
|
128
|
+
dst_filename= File.join(@root,dst_bucket_name,dst_name)
|
129
|
+
FileUtils.mkdir_p(dst_filename)
|
130
|
+
|
131
|
+
metadata_dir = File.join(dst_filename,FAKE_S3_METADATA_DIR)
|
132
|
+
FileUtils.mkdir_p(metadata_dir)
|
133
|
+
|
134
|
+
content = File.join(metadata_dir, "content")
|
135
|
+
metadata = File.join(metadata_dir, "metadata")
|
136
|
+
|
137
|
+
if src_bucket_name != dst_bucket_name || src_name != dst_name
|
138
|
+
File.open(content, 'wb') do |f|
|
139
|
+
File.open(src_content_filename, 'rb') do |input|
|
140
|
+
f << input.read
|
141
|
+
end
|
140
142
|
end
|
141
|
-
end
|
142
143
|
|
143
|
-
|
144
|
-
|
145
|
-
|
144
|
+
File.open(metadata,'w') do |f|
|
145
|
+
File.open(src_metadata_filename,'r') do |input|
|
146
|
+
f << input.read
|
147
|
+
end
|
146
148
|
end
|
147
149
|
end
|
148
|
-
end
|
149
150
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
151
|
+
metadata_directive = request.header["x-amz-metadata-directive"].first
|
152
|
+
if metadata_directive == "REPLACE"
|
153
|
+
metadata_struct = create_metadata(content,request)
|
154
|
+
File.open(metadata,'w') do |f|
|
155
|
+
f << YAML::dump(metadata_struct)
|
156
|
+
end
|
155
157
|
end
|
156
|
-
end
|
157
|
-
|
158
|
-
src_bucket = get_bucket(src_bucket_name) || create_bucket(src_bucket_name)
|
159
|
-
dst_bucket = get_bucket(dst_bucket_name) || create_bucket(dst_bucket_name)
|
160
158
|
|
161
|
-
|
162
|
-
|
163
|
-
obj.md5 = src_metadata[:md5]
|
164
|
-
obj.content_type = src_metadata[:content_type]
|
165
|
-
obj.content_encoding = src_metadata[:content_encoding]
|
166
|
-
obj.size = src_metadata[:size]
|
167
|
-
obj.modified_date = src_metadata[:modified_date]
|
159
|
+
src_bucket = get_bucket(src_bucket_name) || create_bucket(src_bucket_name)
|
160
|
+
dst_bucket = get_bucket(dst_bucket_name) || create_bucket(dst_bucket_name)
|
168
161
|
|
169
|
-
|
170
|
-
|
171
|
-
|
162
|
+
obj = S3Object.new
|
163
|
+
obj.name = dst_name
|
164
|
+
obj.md5 = src_metadata[:md5]
|
165
|
+
obj.content_type = src_metadata[:content_type]
|
166
|
+
obj.content_encoding = src_metadata[:content_encoding]
|
167
|
+
obj.size = src_metadata[:size]
|
168
|
+
obj.modified_date = src_metadata[:modified_date]
|
169
|
+
|
170
|
+
src_bucket.find(src_name)
|
171
|
+
dst_bucket.add(obj)
|
172
|
+
return obj
|
173
|
+
rescue
|
174
|
+
puts $!
|
175
|
+
$!.backtrace.each { |line| puts line }
|
176
|
+
return nil
|
177
|
+
end
|
172
178
|
end
|
173
179
|
|
174
180
|
def store_object(bucket, object_name, request)
|
data/lib/fakes3/server.rb
CHANGED
@@ -188,6 +188,12 @@ module FakeS3
|
|
188
188
|
case s_req.type
|
189
189
|
when Request::COPY
|
190
190
|
object = @store.copy_object(s_req.src_bucket, s_req.src_object, s_req.bucket, s_req.object, request)
|
191
|
+
if !object
|
192
|
+
response.status = 404
|
193
|
+
response.body = XmlAdapter.error_no_such_key(s_req.object)
|
194
|
+
response['Content-Type'] = "application/xml"
|
195
|
+
return
|
196
|
+
end
|
191
197
|
response.body = XmlAdapter.copy_object_result(object)
|
192
198
|
when Request::STORE
|
193
199
|
bucket_obj = @store.get_bucket(s_req.bucket)
|
data/lib/fakes3/version.rb
CHANGED