Class: DirectWave::Uploader::Versions::Version

Inherits:
Object
  • Object
show all
Defined in:
lib/directwave/uploader/versions.rb

Instance Method Summary collapse

Constructor Details

#initialize(uploader, name) ⇒ Version

Returns a new instance of Version.



6
7
8
9
# File 'lib/directwave/uploader/versions.rb', line 6

def initialize(uploader, name)
  @uploader = uploader
  @name     = name
end

Instance Method Details

#deleteObject



41
42
43
# File 'lib/directwave/uploader/versions.rb', line 41

def delete
  file.delete if file.exists?
end

#fileObject



29
30
31
# File 'lib/directwave/uploader/versions.rb', line 29

def file
  @file ||= @uploader.class.s3_directory.objects[key]
end

#filenameObject



11
12
13
# File 'lib/directwave/uploader/versions.rb', line 11

def filename
  @filename ||= [extract(:guid), [extract(:basename), @name].join("-") << extract(:extname)].join("/")
end

#keyObject



25
26
27
# File 'lib/directwave/uploader/versions.rb', line 25

def key
  @key ||= File.join([@uploader.store_dir, filename].compact)
end

#processObject



33
34
35
36
37
38
39
# File 'lib/directwave/uploader/versions.rb', line 33

def process
  @file     = nil
  @filename = nil
  @url      = nil
  @key      = nil
  @date     = nil
end

#retrieveObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/directwave/uploader/versions.rb', line 45

def retrieve
  Dir.mkdir(@uploader.cache_dir) unless File.exists?(@uploader.cache_dir)

  @data ||= file.read
  begin
    temp_file = Tempfile.new([extract(:basename), extract(:extname)], @uploader.cache_dir)
    temp_file.binmode
    temp_file.write(@data)
    temp_file.flush
    yield(temp_file)
  ensure
    temp_file.close
    temp_file.unlink
  end
end

#urlObject



15
16
17
18
19
20
21
22
23
# File 'lib/directwave/uploader/versions.rb', line 15

def url
  @url ||= begin
    if @uploader.s3_access_policy != :public_read
      file.url_for(:get, { expires: @uploader.s3_authentication_timeout }).to_s
    else
      file.public_url.to_s
    end
  end
end