class Cloudinary::CarrierWave::CloudinaryFile

def delete

def delete
  public_id = @resource_type == "raw" ? self.filename : self.public_id
  Cloudinary::Uploader.destroy(public_id, :type=>self.storage_type, :resource_type=>self.resource_type) if @uploader.delete_remote?
end

def exists?

def exists?
  public_id = @resource_type == "raw" ? self.filename : self.public_id
  Cloudinary::Uploader.exists?(public_id, :version=>self.version, :type=>self.storage_type, :resource_type=>self.resource_type)
end

def initialize(identifier, uploader)

def initialize(identifier, uploader)
  @uploader = uploader
  @identifier = identifier
  if @identifier.match(%r(^(image|raw|video)/(upload|private|authenticated)(?:/v([0-9]+))?/(.*)))
    @resource_type = $1
    @storage_type = $2
    @version = $3.presence
    @filename = $4
  elsif @identifier.match(%r(^v([0-9]+)/(.*)))
    @version = $1
    @filename = $2
  else
    @filename = @identifier
    @version = nil
  end
  @storage_type ||= uploader.class.storage_type
  @resource_type ||= Cloudinary::Utils.resource_type_for_format(@filename)
  @public_id, @format = Cloudinary::PreloadedFile.split_format(@filename)
end

def read(options={})

def read(options={})
  parameters={:type=>self.storage_type, :resource_type=>self.resource_type}.merge(options)
  Cloudinary::Downloader.download(self.identifier, parameters)
end

def storage_identifier

def storage_identifier
  identifier
end