class EasyS3

Constants

VERSION

Attributes

dir[R]
fog[R]

Public Class Methods

new(dir_name, options={}) click to toggle source
# File lib/easy-s3.rb, line 11
def initialize(dir_name, options={})
  options[:access_key_id]     ||= Fog.credentials[:aws_access_key_id]
  options[:secret_access_key] ||= Fog.credentials[:aws_secret_access_key]
  options[:region]            ||= Fog.credentials[:region]

  Fog.credentials = {
      aws_access_key_id:      options[:access_key_id],
      aws_secret_access_key:  options[:secret_access_key],
      region:                 options[:region]
  }

  begin
    @fog = Fog::Storage.new(provider: 'AWS')
    @dir = @fog.directories.get(dir_name)
  rescue ArgumentError
    raise MissingOptions, 'access_key_id or secret_access_key'
  rescue Excon::Errors::MovedPermanently, 'Expected(200) <=> Actual(301 Moved Permanently)'
    raise DirectoryDoesNotExist, dir_name
  end
  raise DirectoryDoesNotExist, dir_name if @dir.nil?

  true
end

Public Instance Methods

create_file(file_path, options={}) click to toggle source

Create private or public file into directory

# File lib/easy-s3.rb, line 36
def create_file(file_path, options={})
  options[:digest] ||= false
  options[:public] ||= false

  begin
    file = File.open(file_path)
  rescue
    raise FileNotFound, file_path
  end

  extension = File.extname(file_path)
  filename = File.basename(file_path, extension)
  filename += "_#{Digest::SHA1.hexdigest(File.basename(file_path))}" if options[:digest]
  filename += extension

  file = @dir.files.create(
      key:    filename,
      body:   file,
      public: options[:public]
  )

  return file.public_url if options[:public] && file.public_url

  file.url((Time.now + 3600).to_i) # 1 hour
end
delete_file(url) click to toggle source

Delete file by url

# File lib/easy-s3.rb, line 63
def delete_file(url)
  file_name = get_filename_by_url(url)
  return false unless @dir.files.head(file_name)
  @dir.files.get(file_name).destroy
end
files() click to toggle source

Get all files into directory

# File lib/easy-s3.rb, line 70
def files
  @dir.files.all
end

Private Instance Methods

get_filename_by_url(url) click to toggle source
# File lib/easy-s3.rb, line 76
def get_filename_by_url(url)
  File.basename(URI(url).path)
end