Class: Ken::Session
- Inherits:
-
Object
- Object
- Ken::Session
- Defined in:
- lib/ken/session.rb
Overview
partially taken from chris eppstein’s freebase api github.com/chriseppstein/freebase/tree
Constant Summary collapse
- SERVICES =
{ :mqlread => '/api/service/mqlread', :mqlwrite => '/api/service/mqlwrite', :login => '/api/account/login', :upload => '/api/service/upload' }
Instance Method Summary collapse
-
#handle_read_error(inner) ⇒ Object
raise an error if the inner response envelope is encoded as an error.
-
#initialize(host, username, password) ⇒ Session
constructor
Initialize a new Ken Session Ken::Session.new(hostIO, usernameString, passwordString).
-
#mqlread(query, options = {}) ⇒ Object
perform a mqlread and return the results TODO: should support multiple queries you should be able to pass an array of queries Specify :cursor => true to batch the results of a query, sending multiple requests if necessary.
-
#service_url(svc) ⇒ Object
get the service url for the specified service.
Constructor Details
#initialize(host, username, password) ⇒ Session
Initialize a new Ken Session
Ken::Session.new(host{String, IO}, username{String}, password{String})
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/ken/session.rb', line 35 def initialize(host, username, password) @host = host @username = username @password = password Ken.session = self # TODO: check connection Ken.logger.info("connection established.") end |
Instance Method Details
#handle_read_error(inner) ⇒ Object
raise an error if the inner response envelope is encoded as an error
65 66 67 68 69 70 71 |
# File 'lib/ken/session.rb', line 65 def handle_read_error(inner) unless inner['code'][0, '/api/status/ok'.length] == '/api/status/ok' Ken.logger.error "Read Error #{inner.inspect}" error = inner['messages'][0] raise ReadError.new(error['code'], error['message']) end end |
#mqlread(query, options = {}) ⇒ Object
perform a mqlread and return the results TODO: should support multiple queries
you should be able to pass an array of queries
Specify :cursor => true to batch the results of a query, sending multiple requests if necessary.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/ken/session.rb', line 78 def mqlread(query, = {}) Ken.logger.info ">>> Sending Query: #{query.to_json}" cursor = [:cursor] if cursor query_result = [] while cursor response = get_query_response(query, cursor) query_result += response['result'] cursor = response['cursor'] end else response = get_query_response(query, cursor) cursor = response['cursor'] query_result = response['result'] end query_result end |
#service_url(svc) ⇒ Object
get the service url for the specified service.
54 55 56 |
# File 'lib/ken/session.rb', line 54 def service_url(svc) "#{@host}#{SERVICES[svc]}" end |