class FlickIt::KeywordsController

Public Class Methods

new() click to toggle source
# File lib/keywords_controller.rb, line 3
def initialize
  @flickr_api = FlickrApi.new
end

Public Instance Methods

get_photos_for_keywords() click to toggle source

Gets keywords from command line and creates an array of images for the keywords. Fills the array with random key word if there are less than 10 words entered or replaces the word if a photo is not found

# File lib/keywords_controller.rb, line 8
def get_photos_for_keywords
  keywords = ARGV.map do |keyword|
    puts "Getting photos for #{keyword}"
    photo_results = @flickr_api.get_flickr_search_result(keyword)
    if photo_results.nil?
      puts "No photos found for #{keyword}"
      photo_results = get_random_keyword_photos
    end
    photo_results.first
  end
  fill_keywords_array(keywords)
end

Private Instance Methods

fill_keywords_array(keywords) click to toggle source

Fills keywords array with random word

# File lib/keywords_controller.rb, line 24
def fill_keywords_array(keywords)
  missing_keywords = 10 - keywords.length
  puts "Filling the keywords array with photos for #{missing_keywords} keywords"
  if missing_keywords != 0
    missing_keywords.times do
      keywords << get_random_keyword_photos.first
    end
  end
  keywords
end
get_random_keyword_photos() click to toggle source

Gets photo for random keyword

# File lib/keywords_controller.rb, line 41
def get_random_keyword_photos
  puts "Finding photos for a random word"
  random_photo_result = @flickr_api.get_flickr_search_result(random_word) until random_photo_result.present? &&
      random_photo_result.first.class == Hash &&
      (['farm', 'server', 'secret'].any? do |key|
        random_photo_result.first.key?(key)
      end)
  random_photo_result
end
random_word() click to toggle source

Picks random word from system dictionary

# File lib/keywords_controller.rb, line 36
def random_word
  open('/usr/share/dict/words').read.split(/\n/).sample
end