lib/frizz/remote.rb in frizz-1.7.0 vs lib/frizz/remote.rb in frizz-2.0.0

- old
+ new

@@ -1,42 +1,59 @@ -require "s3" +require 'aws-sdk' require "mime-types" module Frizz class Remote - def initialize(bucket_name, ignorance) + def initialize(bucket_name, ignorance, options = {}) + @options = options @bucket_name = bucket_name @ignorance = ignorance end def files - @files ||= bucket.objects.reject { |o| ignore?(o) } + @files ||= objects.reject { |o| ignore?(o) } end - def upload(file, key) - bucket.objects.build(key).tap do |obj| - obj.acl = :public_read - obj.content = file - obj.content_type = MIME::Types.type_for(key).first.content_type - end.save + def upload(file, key, options = {}) + object_options = { + bucket: bucket_name, + body: file, + acl: 'public-read', + content_type: MIME::Types.type_for(key).first.content_type, + key: key + } + + object_options[:website_redirect_location] = options[:redirect_to] if options[:redirect_to] + + client.put_object object_options end + def delete(remote_file) + client.delete_object( + bucket: bucket_name, + key: remote_file.key + ) + end + private - attr_reader :bucket_name, :ignorance + attr_reader :bucket_name, :ignorance, :options def ignore?(object) ignorance.ignore?(object.key) end - def bucket - @bucket ||= service.buckets.find(bucket_name) + def objects + client.list_objects(bucket: bucket_name).contents end - def service - @service ||= S3::Service.new( - access_key_id: Frizz.configuration.access_key_id, - secret_access_key: Frizz.configuration.secret_access_key, + def client + @client ||= Aws::S3::Client.new( + region: options[:region], + credentials: Aws::Credentials.new( + Frizz.configuration.access_key_id, + Frizz.configuration.secret_access_key + ) ) end end end