class FotoliaRest::Client
Constants
- BASE_URL
Attributes
api_key[R]
password[R]
session_id[R]
username[R]
Public Class Methods
new(api_key, username, password)
click to toggle source
# File lib/fotolia_rest/client.rb, line 10 def initialize(api_key, username, password) @api_key = api_key @username = username @password = password @session_id = nil @logger = defined?(Rails) ? Rails.logger : nil end
Public Instance Methods
download_media(url)
click to toggle source
# File lib/fotolia_rest/client.rb, line 63 def download_media(url) open(url, 'rb', :http_basic_authentication => [ @api_key, @session_id ]) end
execute(method, function, args={}, http_method=:get)
click to toggle source
# File lib/fotolia_rest/client.rb, line 34 def execute(method, function, args={}, http_method=:get) begin uri = URI.parse(compose_uri(method, function)) http = Net::HTTP.new(uri.host, uri.port) http.open_timeout = http.read_timeout = 5 # seconds if http_method == :get uri.query = URI.encode_www_form(fotolia_parameters(args)) request = Net::HTTP::Get.new(uri.request_uri) request.basic_auth api_key, @session_id request['session_id'] = @session_id if logged_in? response = http.request(request) else request = Net::HTTP::Post.new(uri.request_uri) request.basic_auth api_key, @session_id request.set_form_data(args) request['session_id'] = @session_id if logged_in? response = http.request(request) end Result.parse(response) rescue Timeout::Error => e log(:error, "Timeout error with #{method} #{args.inspect}") raise FotoliaRest::FotoliaError.new("Fotolia Communication Error: timeout") rescue => e log(:error, "Fotolia client error with #{method} #{args.inspect} #{e.message}") e.backtrace.each{|line| log(:debug, line)} raise FotoliaRest::FotoliaError.new("Fotolia Communication Error: #{e.message}") end end
log(level, message)
click to toggle source
# File lib/fotolia_rest/client.rb, line 18 def log(level, message) if @logger @logger.send(level.to_sym, message) end end
logged_in?()
click to toggle source
# File lib/fotolia_rest/client.rb, line 30 def logged_in? @session_id && @session_id != '' end
login()
click to toggle source
# File lib/fotolia_rest/client.rb, line 24 def login result = execute('user', 'loginUser', {:login => username, :pass => password}, :post) @session_id = result.response['session_token'] if result.success? return result end
Protected Instance Methods
compose_uri(method, function)
click to toggle source
# File lib/fotolia_rest/client.rb, line 83 def compose_uri(method, function) "http://#{BASE_URL}/Rest/1/#{method}/#{function}" end
fotolia_parameters(args)
click to toggle source
# File lib/fotolia_rest/client.rb, line 69 def fotolia_parameters(args) normalized = {} args.each do |key, value| if value.is_a?(Hash) value.each do |inner_key, inner_value| normalized["#{key}[#{inner_key}]"] = inner_value end else normalized[key] = value end end normalized end