Sha256: 29a363fb70d4438e14f8df4ca793b179d700d053dfb103279ee8e3aaf60b6773

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

module ImageCollage
  class ImageUrlRequester
    def initialize(keywords, flickr_api, options = {})
      @keywords = keywords || []
      @flickr_api = flickr_api
      @options = options || {}

      @image_url_count = Integer(options[:image_url_count]) || 10
      @keywords_pool = fill_keywords_pool(@keywords)
    end

    def image_urls
      image_urls = []

      while image_urls.length < @image_url_count
        keyword = @keywords_pool.shift || random_keyword

        print "Fetching image (#{image_urls.length + 1}/#{@image_url_count}) for #{keyword}..."

        response = @flickr_api.photos_search(keyword: keyword)
        image_url = @flickr_api.parse_image_url(response.parsed_response)

        if image_url
          image_urls << image_url
          puts 'OK'
        else
          puts 'FAILED'
        end
      end

      image_urls
    end

    private

    def random_keyword
      RandomWordApi.fetch
    end

    def fill_keywords_pool(keywords)
      keywords_pool = Array.new(keywords)

      while keywords_pool.length < @image_url_count
        keywords_pool << random_keyword
      end

      keywords_pool
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
imagecollage-0.1.0 lib/imagecollage/image_url_requester.rb