class Rickai::Client
Public Class Methods
new(agent_url, options = {})
click to toggle source
# File lib/rickai/client.rb, line 11 def initialize(agent_url, options = {}) @agent_url = agent_url @base_uri = options[:base_uri] || DEFAULT_BASE_URI @timeout = options[:timeout] || DEFAULT_TIMEOUT end
Public Instance Methods
check(attributes)
click to toggle source
# File lib/rickai/client.rb, line 25 def check(attributes) verify_response(request(url_check, attributes)) end
create(attributes)
click to toggle source
# File lib/rickai/client.rb, line 21 def create(attributes) verify_response(request(url_create, attributes)) end
update(attributes)
click to toggle source
# File lib/rickai/client.rb, line 17 def update(attributes) verify_response(request(url_update, attributes)) end
Private Instance Methods
request(path, body = nil, headers = {})
click to toggle source
# File lib/rickai/client.rb, line 51 def request(path, body = nil, headers = {}) uri = URI.join(@base_uri, path) session = Net::HTTP.new(uri.host, uri.port) session.use_ssl = (uri.scheme == 'https') session.open_timeout = @timeout session.read_timeout = @timeout req = Net::HTTP::Post.new(uri.path) req.initialize_http_header(headers) req.add_field('Content-Type', 'application/json') unless body.nil? attributes = if body.is_a?(Hash) Hash[body.map { |(k, v)| [k.to_sym, v] }] else body.map { |item| Hash[item.map { |(k, v)| [k.to_sym, v] }] } end req.body = MultiJson.dump(attributes) end session.start do |http| http.request(req) end end
url_check()
click to toggle source
# File lib/rickai/client.rb, line 39 def url_check "/transactions/#{@agent_url}/check" end
url_create()
click to toggle source
# File lib/rickai/client.rb, line 31 def url_create "/transactions/#{@agent_url}/create" end
url_update()
click to toggle source
# File lib/rickai/client.rb, line 35 def url_update "/transactions/#{@agent_url}/update" end
verify_response(response)
click to toggle source
# File lib/rickai/client.rb, line 43 def verify_response(response) if response.code.to_i >= 200 && response.code.to_i < 300 response else raise InvalidResponse, "Rick.ai API returned an invalid response: #{response.code} - #{response.message}" end end