Class: Giddy::Image

Inherits:
Object
  • Object
show all
Defined in:
lib/giddy/image.rb

Instance Method Summary collapse

Constructor Details

#initialize(attrs, mediator) ⇒ Image

Returns a new instance of Image.



5
6
7
8
# File 'lib/giddy/image.rb', line 5

def initialize(attrs, mediator)
  @attrs = Utils.rubified_hash(attrs)
  @mediator = mediator
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



10
11
12
# File 'lib/giddy/image.rb', line 10

def method_missing(method, *args, &block)
  @attrs.fetch(method, nil)
end

Instance Method Details

#date_createdObject



47
48
49
# File 'lib/giddy/image.rb', line 47

def date_created
  parse_date @attrs[:date_created]
end

#date_submittedObject



51
52
53
# File 'lib/giddy/image.rb', line 51

def 
  parse_date @attrs[:date_submitted]
end

#download(size) ⇒ Object

Raises:



23
24
25
26
27
28
29
# File 'lib/giddy/image.rb', line 23

def download(size)
  sizekey = size[:size_key]
  result = downloader.get_image_download_authorizations(@attrs[:image_id], [sizekey])
  auths = result[sizekey][:authorizations]
  raise ImageDownloadError, "No authorizations available." if auths.length == 0
  download_request auths.first[:download_token]
end

#download_largestObject



41
42
43
44
45
# File 'lib/giddy/image.rb', line 41

def download_largest
  authorizations = largest_available[:authorizations]
  return nil if authorizations.length == 0
  download_request authorizations.first[:download_token]
end

#download_request(token) ⇒ Object



36
37
38
39
# File 'lib/giddy/image.rb', line 36

def download_request(token)
  result = downloader.create_download_request(token)
  result[@attrs[:image_id]]
end

#downloaderObject



14
15
16
# File 'lib/giddy/image.rb', line 14

def downloader
  @downloader ||= Download.new(@mediator)
end

#largest_availableObject



31
32
33
34
# File 'lib/giddy/image.rb', line 31

def largest_available
  result = downloader.get_largest_image_download_authorizations(@attrs[:image_id])
  result[@attrs[:image_id]]
end

#sizesObject

return sorted sizes, smallest to largest



19
20
21
# File 'lib/giddy/image.rb', line 19

def sizes
  sizes_downloadable_images.sort { |a,b| a[:file_size_in_bytes] <=> b[:file_size_in_bytes] }
end

#to_sObject



55
56
57
58
# File 'lib/giddy/image.rb', line 55

def to_s
  as = @attrs.map { |k,v| "#{k}=#{v}" }.join(", ")
  "<Image #{as}>" 
end