Class: Attach::Backends::Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/attach/backends/abstract.rb

Direct Known Subclasses

Database, FileSystem

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ Abstract

Returns a new instance of Abstract.



5
6
7
# File 'lib/attach/backends/abstract.rb', line 5

def initialize(config = {})
  @config = config
end

Instance Method Details

#bytesize(binary) ⇒ Object

Return the bytesize of a given binary



64
65
66
67
68
69
70
# File 'lib/attach/backends/abstract.rb', line 64

def bytesize(binary)
  if binary.respond_to?(:path)
    ::File.size(binary.path)
  else
    binary.bytesize
  end
end

#delete(attachment) ⇒ Object

 Delete the data for the given attachment



24
25
# File 'lib/attach/backends/abstract.rb', line 24

def delete(attachment)
end

#digest(binary) ⇒ Object

Return the SHA1 digest of a given binary



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/attach/backends/abstract.rb', line 47

def digest(binary)
  if binary.respond_to?(:path)
    sha1 = Digest::SHA1.new
    binary.binmode
    binary.rewind
    while chunk = binary.read(1024 * 1024)
      sha1.update(chunk)
    end
    sha1.hexdigest
  else
    Digest::SHA1.hexdigest(binary)
  end
end

#read(attachment) ⇒ Object

 Return the data for the given attachment



12
13
# File 'lib/attach/backends/abstract.rb', line 12

def read(attachment)
end

#read_multi(attachments) ⇒ Object

 Return binaries for a set of files. They should be returned as a hash consisting of the attachment ID followed by the data



38
39
40
41
42
# File 'lib/attach/backends/abstract.rb', line 38

def read_multi(attachments)
  attachments.compact.each_with_object({}) do |attachment, hash|
    hash[attachment] = read(attachment)
  end
end

#url(attachment) ⇒ Object

Return the URL that this attachment can be accessed at



30
31
32
# File 'lib/attach/backends/abstract.rb', line 30

def url(attachment)
  "#{Attach.asset_host}/attachment/#{attachment.token}/#{attachment.file_name}"
end

#write(attachment, data) ⇒ Object

 Write data for the given attachment



18
19
# File 'lib/attach/backends/abstract.rb', line 18

def write(attachment, data)
end