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