Class: AvatarGenerator::Avatar

Inherits:
Object
  • Object
show all
Defined in:
lib/avatar_generator/avatar.rb

Instance Method Summary collapse

Constructor Details

#initialize(image, identifier:) ⇒ Avatar

Returns a new instance of Avatar.



5
6
7
8
# File 'lib/avatar_generator/avatar.rb', line 5

def initialize(image, identifier:)
  @image_data = image
  @identifier = identifier
end

Instance Method Details

#base64Object



58
59
60
# File 'lib/avatar_generator/avatar.rb', line 58

def base64
  Base64.strict_encode64(blob)
end

#blobObject



50
51
52
# File 'lib/avatar_generator/avatar.rb', line 50

def blob
  image.to_blob
end

#data_urlObject



62
63
64
# File 'lib/avatar_generator/avatar.rb', line 62

def data_url
  "data:image/png;base64,#{base64}"
end

#filenameObject



46
47
48
# File 'lib/avatar_generator/avatar.rb', line 46

def filename
  "#{identifier_hash}.png"
end

#imageObject



10
11
12
# File 'lib/avatar_generator/avatar.rb', line 10

def image
  @image ||= Renderer.render(@image_data)
end

#ioObject



54
55
56
# File 'lib/avatar_generator/avatar.rb', line 54

def io
  StringIO.new(blob)
end

#pathObject



32
33
34
35
36
37
# File 'lib/avatar_generator/avatar.rb', line 32

def path
  File.join(
    AvatarGenerator.configuration.storage_path,
    filename
  )
end

#save(filename = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/avatar_generator/avatar.rb', line 14

def save(filename = nil)
  filename ||= self.filename
  filename = sanitize_filename(filename)

  file_path = File.join(
    AvatarGenerator.configuration.storage_path,
    filename
  )

  FileUtils.mkdir_p(
    File.dirname(file_path)
  )

  image.save(file_path)

  file_path
end

#urlObject



39
40
41
42
43
44
# File 'lib/avatar_generator/avatar.rb', line 39

def url
  File.join(
    AvatarGenerator.configuration.public_path,
    filename
  )
end