class RobohashClient

Constants

BASE_URL
BGSET
DEFAULT_DIRECTORY
OPTIONS
SET
SIZE

Attributes

default_dir[RW]

Public Class Methods

get(name, options = {}) click to toggle source
# File lib/robohash_client.rb, line 26
def get(name, options = {})
        return 'Name should be an non-empty String!' if invalid_name(name)
        make_request(name, build_query_string(options))
end
get_many(names, options = {}) click to toggle source
# File lib/robohash_client.rb, line 36
def get_many(names, options = {})
        valid_names = extract_valid_names(names)
        valid_options = build_query_string(options) unless valid_names.empty?
        valid_names.each { |name| make_request(name, valid_options) }
end
get_many_url(names, options = {}) click to toggle source
# File lib/robohash_client.rb, line 42
def get_many_url(names, options = {})
        urls = []
        valid_names = extract_valid_names(names)
        valid_options = build_query_string(options) unless valid_names.empty?
        valid_names.each { |name| urls.push(build_uri(name, valid_options).to_s) }
        urls
end
get_url(name, options = {}) click to toggle source
# File lib/robohash_client.rb, line 31
def get_url(name, options = {})
        return 'Name should be an non-empty String!' if invalid_name(name)
        build_uri(name, build_query_string(options)).to_s
end
reset_default_dir() click to toggle source
# File lib/robohash_client.rb, line 50
def reset_default_dir
        @default_dir = DEFAULT_DIRECTORY
end

Private Class Methods

build_query_string(options) click to toggle source
# File lib/robohash_client.rb, line 65
def build_query_string(options)
        valid_options = extract_valid_options(options)
        return if valid_options.empty?

        '?' + valid_options.collect { |option| option }.join('&')
end
build_uri(name, query_string) click to toggle source
# File lib/robohash_client.rb, line 86
def build_uri(name, query_string)
        URI("#{BASE_URL}/#{name}#{query_string}")
end
extract_valid_names(names) click to toggle source
# File lib/robohash_client.rb, line 56
def extract_valid_names(names)
        return [] unless names.is_a?(Array)
        names.reject { |name| invalid_name(name) }
end
extract_valid_options(options) click to toggle source
# File lib/robohash_client.rb, line 72
def extract_valid_options(options)
        valid_options = []

        if options.is_a?(Hash)
                options.each_pair do |key, value|
                        inner_hash = OPTIONS.fetch(key, nil)
                        option = inner_hash.fetch(value, nil) if inner_hash.is_a?(Hash)
                        valid_options.push(option) if option
                end
        end

        valid_options
end
invalid_name(name) click to toggle source
# File lib/robohash_client.rb, line 61
def invalid_name(name)
        !name.is_a?(String) || name == ''
end
make_request(name, query_string) click to toggle source
# File lib/robohash_client.rb, line 90
      def make_request(name, query_string)
              uri = build_uri(name, query_string)
              save(Net::HTTP.get_response(uri), name)
rescue => e
     puts "Error obtaining image from #{uri}: #{e.message}"
      end
save(image, name) click to toggle source
# File lib/robohash_client.rb, line 97
            def save(image, name)
                    dir = @default_dir || DEFAULT_DIRECTORY
        Dir.mkdir(dir) unless Dir.exists? dir

        open(File.join("#{dir}", "#{name}.png"), 'wb') do |file|
          file.write(image.body)
        end

        puts "Image #{name}.png saved successfully on #{dir}!"
rescue => e
           puts "Error saving image #{name}.png: #{e.message}"
            end