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

authorize() click to toggle source
# File lib/basic_api_client.rb, line 22
def authorize
  @headers = {}
  params = { cn: @cn, password: @password }
  Curl.post(@auth_url, params, &method(:setup_request))
  last_return
end
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