Remove Gitlab::Geo::AvatarUploader

parent 916c9e7b
......@@ -15,22 +15,15 @@ module Geo
data = ::Gitlab::Geo::JwtRequestDecoder.new(auth_header).decode
return unless data.present?
begin
uploader_class.new(object_db_id, data).execute
rescue NameError
log("Unknown file type: #{object_type}")
{}
end
uploader_class.new(object_db_id, data).execute
end
private
def uploader_class
"Gitlab::Geo::#{object_type.camelize}Uploader".constantize
end
def log(message)
Rails.logger.info "#{self.class.name}: #{message}"
"Gitlab::Geo::#{object_type.to_s.camelize}Uploader".constantize
rescue NameError
Gitlab::Geo::FileUploader
end
end
end
module Gitlab
module Geo
class AvatarUploader < FileUploader
def execute
upload = Upload.find_by_id(object_db_id)
return error unless upload.present?
return error unless valid?(upload)
unless upload.model.avatar&.exists?
return error("#{upload.model_type} does not have a avatar")
end
success(upload.model.avatar)
end
private
def valid?(upload)
message[:id] == upload.model_id && message[:type] == upload.model_type &&
message[:checksum] == upload.checksum
end
end
end
end
......@@ -9,11 +9,34 @@ module Gitlab
end
def execute
raise NotImplementedError
recorded_file = Upload.find_by_id(object_db_id)
return error unless recorded_file&.exist?
return error unless valid?(recorded_file)
success(CarrierWave::SanitizedFile.new(recorded_file.absolute_path))
end
private
def valid?(recorded_file)
matches_requested_model?(recorded_file) &&
matches_checksum?(recorded_file)
end
def matches_requested_model?(recorded_file)
message[:id] == recorded_file.model_id &&
message[:type] == recorded_file.model_type
end
def matches_checksum?(recorded_file)
message[:checksum] == calculate_checksum(recorded_file.absolute_path)
end
def calculate_checksum(absolute_path)
Digest::SHA256.file(absolute_path).hexdigest
end
def success(file)
{ code: :ok, message: 'Success', file: file }
end
......
......@@ -18,7 +18,7 @@ describe Geo::FileUploadService, services: true do
response = service.execute
expect(response[:code]).to eq(:ok)
expect(response[:file].file.path).to eq(user.avatar.path)
expect(response[:file].path).to eq(user.avatar.path)
end
it 'returns nil if no authorization' do
......@@ -42,7 +42,7 @@ describe Geo::FileUploadService, services: true do
response = service.execute
expect(response[:code]).to eq(:ok)
expect(response[:file].file.path).to eq(group.avatar.path)
expect(response[:file].path).to eq(group.avatar.path)
end
it 'returns nil if no authorization' do
......@@ -66,7 +66,7 @@ describe Geo::FileUploadService, services: true do
response = service.execute
expect(response[:code]).to eq(:ok)
expect(response[:file].file.path).to eq(project.avatar.path)
expect(response[:file].path).to eq(project.avatar.path)
end
it 'returns nil if no authorization' do
......@@ -89,7 +89,7 @@ describe Geo::FileUploadService, services: true do
response = service.execute
expect(response[:code]).to eq(:ok)
expect(response[:file].file.path).to eq(lfs_object.file.path)
expect(response[:file].path).to eq(lfs_object.file.path)
end
it 'returns nil if no authorization' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment