Module: Request
- Included in:
- Basuco, Basuco::Api, Basuco::Search, Basuco::Trans
- Defined in:
- lib/basuco/request.rb
Defined Under Namespace
Classes: AttributeNotFound, PropertyNotFound, ReadError, ResourceNotFound, TopicNotFound, ViewNotFound
Constant Summary collapse
- SERVICES =
{ :mqlread => '/api/service/mqlread', :mqlwrite => '/api/service/mqlwrite', :blurb => '/api/trans/blurb/guid/', :raw => '/api/trans/raw/guid/', :login => '/api/account/login', #not done :logout => '/api/account/logout', #not done :upload => '/api/service/upload', :topic => '/experimental/topic', :search => '/api/service/search', :status => '/api/status', #not done :thumb => 'api/trans/image_thumb' }
Instance Method Summary collapse
-
#get_query_response(query, cursor = nil) ⇒ Object
returns parsed json response from freebase mqlread service.
-
#handle_read_error(inner) ⇒ Object
raise an error if the inner response envelope is encoded as an error.
-
#http_request(url, parameters = {}) ⇒ Object
does the dirty work.
-
#params_to_string(parameters) ⇒ Object
encode parameters.
- #service_url(svc) ⇒ Object
Instance Method Details
#get_query_response(query, cursor = nil) ⇒ Object
returns parsed json response from freebase mqlread service
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/basuco/request.rb', line 57 def get_query_response(query, cursor=nil) envelope = { :qname => {:query => query, :escape => false }} envelope[:qname][:cursor] = cursor if cursor response = http_request mqlread_service_url, :queries => envelope.to_json result = JSON.parse response inner = result['qname'] handle_read_error(inner) inner end |
#handle_read_error(inner) ⇒ Object
raise an error if the inner response envelope is encoded as an error
49 50 51 52 53 54 |
# File 'lib/basuco/request.rb', line 49 def handle_read_error(inner) unless inner['code'][0, '/api/status/ok'.length] == '/api/status/ok' error = inner['messages'][0] raise ReadError.new(error['code'], error['message']) end end |
#http_request(url, parameters = {}) ⇒ Object
does the dirty work
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/basuco/request.rb', line 74 def http_request(url, parameters = {}) params = params_to_string(parameters) url << '?'+params unless params !~ /\S/ return Net::HTTP.get_response(::URI.parse(url)).body fname = "#{MD5.md5(params)}.mql" open(fname,"w") do |f| f << response end end |
#params_to_string(parameters) ⇒ Object
encode parameters
69 70 71 |
# File 'lib/basuco/request.rb', line 69 def params_to_string(parameters) parameters.keys.map {|k| "#{URI.encode(k.to_s)}=#{URI.encode(parameters[k].to_s)}" }.join('&') end |
#service_url(svc) ⇒ Object
18 19 20 |
# File 'lib/basuco/request.rb', line 18 def service_url(svc) "#{@host}#{SERVICES[svc]}" end |