class BasicApiClient
Constants
- AUTH_HEADERS
Attributes
headers[R]
last_response[RW]
last_return[RW]
Public Class Methods
new(cn, password, site, auth_path)
click to toggle source
# File lib/basic_api_client.rb, line 10 def initialize(cn, password, site, auth_path) @cn = cn @password = password @site = site @site.sub!(/\/+$/, '') @auth_url = url_for(auth_path) end
Public Instance Methods
get(path, params = {})
click to toggle source
# File lib/basic_api_client.rb, line 29 def get(path, params = {}) authorize unless auth_headers? url = url_for(path) Curl.get(url, params, &method(:setup_request)) last_return end
post(path, params = {})
click to toggle source
# File lib/basic_api_client.rb, line 37 def post(path, params = {}) authorize unless auth_headers? url = url_for(path) Curl.post(url, params, &method(:setup_request)) last_return end
Private Instance Methods
auth_headers?()
click to toggle source
# File lib/basic_api_client.rb, line 79 def auth_headers? headers.keys.sort == AUTH_HEADERS end
handle_failure(res, code)
click to toggle source
# File lib/basic_api_client.rb, line 65 def handle_failure(res, code) @last_response = res @headers = {} @last_return = nil end
handle_success(res)
click to toggle source
# File lib/basic_api_client.rb, line 58 def handle_success(res) @last_response = res @headers = parse_headers(res).select { |name, _| AUTH_HEADERS.include?(name) } @last_return = JSON.parse(res.body_str) end
parse_headers(res)
click to toggle source
# File lib/basic_api_client.rb, line 71 def parse_headers(res) lines = res.header_str.split("\r\n").drop(1) lines.each_with_object({}) { |line, headers| name, value = line.split(": ") name.downcase! headers[name] = value } end
setup_request(req)
click to toggle source
# File lib/basic_api_client.rb, line 51 def setup_request(req) req.headers = headers req.on_failure &method(:handle_failure) req.on_missing &method(:handle_failure) req.on_success &method(:handle_success) end
url_for(path)
click to toggle source
# File lib/basic_api_client.rb, line 46 def url_for(path) path = path.sub(/^\/+/, '') [@site, path].join('/') end