3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'app/interactors/spree_cm_commissioner/image_saver.rb', line 3
def call
presigned_url = SpreeCmCommissioner::S3UrlGenerator.s3_presigned_url(context.url)
response = Faraday.get(presigned_url)
if response.success?
io = StringIO.new(response.body)
filename = File.basename(context.url)
image = find_or_initialize_image
image.attachment.attach(io: io, filename: filename)
if image.save
context.result = image
else
context.fail!(message: image.errors.full_messages.join(','))
end
else
context.fail!(message: I18n.t('s3.image.upload.fail'))
end
rescue StandardError => e
context.fail!(message: e.message)
end
|