class ElFinderS3::S3Connector
Public Class Methods
new(server)
click to toggle source
# File lib/el_finder_s3/s3_connector.rb, line 8 def initialize(server) Aws.config.update( { region: server[:region], credentials: Aws::Credentials.new(server[:access_key_id], server[:secret_access_key]) } ) @bucket_name = server[:bucket_name] @s3_client = Aws::S3::Client.new end
Public Instance Methods
exist?(pathname)
click to toggle source
@param [ElFinderS3::Pathname] pathname
# File lib/el_finder_s3/s3_connector.rb, line 53 def exist?(pathname) query = { bucket: @bucket_name, key: pathname.file? ? pathname.to_file_prefix_s : pathname.to_prefix_s } begin @s3_client.head_object(query) true rescue Aws::S3::Errors::NotFound false end end
get(filename)
click to toggle source
# File lib/el_finder_s3/s3_connector.rb, line 91 def get(filename) response = @s3_client.get_object(bucket: @bucket_name, key: filename) return nil unless !response.nil? response.body end
ls_la(pathname)
click to toggle source
# File lib/el_finder_s3/s3_connector.rb, line 19 def ls_la(pathname) prefix = pathname.to_prefix_s query = { bucket: @bucket_name, delimiter: '/', encoding_type: 'url', max_keys: 100, prefix: prefix } response = @s3_client.list_objects(query) result = { :folders => [], :files => [] } #Files response.contents.each { |e| if e.key != prefix e.key = e.key.gsub(prefix, '') result[:files].push(e[:key]) end } #Folders response.common_prefixes.each { |f| if f.prefix != '' && f.prefix != prefix && f.prefix != '/' f.prefix = f.prefix.split('/').last result[:folders].push(f[:prefix]) end } return result end
mkdir(folder_name)
click to toggle source
# File lib/el_finder_s3/s3_connector.rb, line 66 def mkdir(folder_name) begin @s3_client.put_object(bucket: @bucket_name, key: folder_name) true rescue false end end
size(pathname)
click to toggle source
# File lib/el_finder_s3/s3_connector.rb, line 97 def size(pathname) query = { bucket: @bucket_name, key: pathname.file? ? pathname.to_file_prefix_s : pathname.to_prefix_s } begin head = @s3_client.head_object(query) head[:content_length] rescue Aws::S3::Errors::NotFound 0 end end
store(filename, content)
click to toggle source
# File lib/el_finder_s3/s3_connector.rb, line 84 def store(filename, content) if content.is_a?(MiniMagick::Image) @s3_client.put_object(bucket: @bucket_name, key: filename, body: content.to_blob, acl: 'public-read') elsif @s3_client.put_object(bucket: @bucket_name, key: filename, body: content, acl: 'public-read') end end
touch(filename)
click to toggle source
# File lib/el_finder_s3/s3_connector.rb, line 75 def touch(filename) begin @s3_client.put_object(bucket: @bucket_name, key: filename) true rescue false end end