def complete(*parts)
parts = parts.flatten
case parts.first
when :remote_parts
complete_opts = get_complete_opts
when :local_parts, nil
complete_opts = base_opts.merge(:parts => completed_parts)
else
part_numbers = parts.map do |part|
case part
when Integer
part
when UploadedPart
raise ArgumentError.new("cannot complete an upload with parts "+
"from a different upload") unless
part.upload == self
part.part_number
else
raise ArgumentError.new("expected number or UploadedPart")
end
end
complete_opts = get_complete_opts(part_numbers)
end
raise EmptyUploadError.new("Unable to complete an empty upload.") if complete_opts[:parts].empty?
resp = client.complete_multipart_upload(complete_opts)
if resp.data[:version_id]
ObjectVersion.new(object, resp.data[:version_id])
else
object
end
end