class DLClient
Public Class Methods
new(key, secret, host = nil, port = nil, verify_ssl = true)
click to toggle source
# File lib/datalanche/client.rb, line 12 def initialize(key, secret, host = nil, port = nil, verify_ssl = true) @auth_key = key @auth_secret = secret @url = 'https://api.datalanche.com' @verify_ssl = verify_ssl @verify_mode = OpenSSL::SSL::VERIFY_PEER if host != nil @url = 'https://' + host end if port != nil @url = @url + ':' + port.to_s() end if verify_ssl != true @verify_mode = OpenSSL::SSL::VERIFY_NONE end end
Public Instance Methods
get_debug_info(res,req)
click to toggle source
# File lib/datalanche/client.rb, line 42 def get_debug_info(res,req) info = Hash.new info['request'] = Hash.new info['request']['method'] = req['method'] info['request']['url'] = req['url'] info['request']['headers'] = req['headers'] info['request']['body'] = req['body'] info['response'] = Hash.new info['response']['http_status'] = res.code # r.status_code info['response']['message'] = res.message info['response']['http_version'] = res.http_version return info end
key(key)
click to toggle source
# File lib/datalanche/client.rb, line 34 def key(key) @auth_key = key end
query(q = nil)
click to toggle source
# File lib/datalanche/client.rb, line 59 def query(q = nil) if q == nil raise Exception('query == nil') end url = @url if q.params.has_key?('database') url = url + '/' + q.params['database'] q.params.delete('database') end url = URI.parse(url + '/query') header = { # 'Accept-Encoding'=>'gzip', # will be resumed after method of decompression of gzip found 'Content-Type'=>'application/json', 'User-Agent'=>'Datalanche Ruby Client' } req = Net::HTTP::Post.new(url.path, header) req.basic_auth @auth_key, @auth_secret https = Net::HTTP.new(url.host,url.port) https.use_ssl = true https.verify_mode = @verify_mode https.ssl_version = "SSLv3" req.body = "#{q.params.to_json}" res = https.request(req) result = Hash.new req_info = Hash.new req_info['headers'] = header req_info['url'] = url req_info['method'] = req.method req_info['body'] = JSON.parse(req.body) debug_info = self.get_debug_info(res,req_info) begin result['data'] = JSON.parse(res.body) rescue # in case the server does not return a body result['data'] = nil end result['response'] = debug_info['response'] result['request'] = debug_info['request'] status_code = res.code.to_i if not (200 <= status_code and status_code < 300) raise DLException.new(res.code, result['data'], debug_info),"Http request error: " end return result end
secret(secret)
click to toggle source
# File lib/datalanche/client.rb, line 38 def secret(secret) @auth_secret = secret end