def add_part(data_or_options, options = {})
if data_or_options.kind_of?(Hash)
part_options = base_opts.merge(data_or_options)
else
part_options = base_opts.merge(:data => data_or_options)
end
part_options.merge!(options)
unless part_options[:part_number]
@increment_mutex.synchronize do
part_options[:part_number] = (@last_part += 1)
end
end
part_number = part_options[:part_number]
resp = client.upload_part(part_options)
@completed_mutex.synchronize do
@completed_parts[part_number] = {
:part_number => part_number,
:etag => resp.etag
}
end
UploadedPart.new(self, part_number)
end