Class: SpreeCmCommissioner::ImageSaver

Inherits:
BaseInteractor show all
Defined in:
app/interactors/spree_cm_commissioner/image_saver.rb

Instance Method Summary collapse

Instance Method Details

#callObject



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