refactor uploads manager

This commit is contained in:
James Lopez 2018-07-11 14:52:48 +02:00
parent 414939c97c
commit 3c31de7520
No known key found for this signature in database
GPG Key ID: 756BF8E9D7C0CF39
3 changed files with 13 additions and 8 deletions

View File

@ -1,12 +1,12 @@
class UploadService
def initialize(model, file, uploader_class = FileUploader)
@model, @file, @uploader_class = model, file, uploader_class
def initialize(model, file, uploader_class = FileUploader, **uploader_context)
@model, @file, @uploader_class, @uploader_context = model, file, uploader_class, uploader_context
end
def execute
return nil unless @file && @file.size <= max_attachment_size
uploader = @uploader_class.new(@model)
uploader = @uploader_class.new(@model, nil, @uploader_context)
uploader.store!(@file)
uploader.to_h

View File

@ -29,10 +29,15 @@ module Gitlab
Dir["#{uploads_export_path}/**/*"].each do |upload|
next if File.directory?(upload)
UploadService.new(@project, File.open(upload, 'r'), FileUploader).execute
end
secret, identifier = upload.split('/').last(2)
true
uploader_context = {
secret: secret,
identifier: identifier
}
UploadService.new(@project, File.open(upload, 'r'), FileUploader, uploader_context).execute
end
rescue => e
@shared.error(e)
false

View File

@ -48,7 +48,7 @@ describe Gitlab::ImportExport::UploadsManager do
stub_uploads_object_storage(FileUploader)
end
it 'downloads the file to include in an archive' do
it 'saves the file' do
fake_uri = double
expect(fake_uri).to receive(:open).and_return(StringIO.new('File content'))
@ -70,7 +70,7 @@ describe Gitlab::ImportExport::UploadsManager do
FileUtils.touch(File.join(shared.export_path, 'uploads/random', "dummy.txt"))
end
it 'downloads the file to include in an archive' do
it 'restores the file' do
manager.restore
expect(project.uploads.size).to eq(1)