require 'base64'
require 'json'
require 'rest-client'

class QuandoraApi

  attr_accessor :domain, :username, :password

  def initialize domain, username, password
    @domain = domain
    @username = username
    @password = password
  end

  def base_url domain
    "https://#{domain}.quandora.com/m/json"
  end

  def auth_header username, password
    encoded = Base64.encode64 "#{username}:#{password}"
    {:Authorization => "Basic #{encoded.strip!}"}
  end

  def list_bases_url
    "#{base_url @domain}/kb"
  end

  def list_questions_url kb_id, limit
    url = "#{base_url @domain}/kb/#{kb_id}/list"
    url = "#{url}?l=#{limit}" if limit
    url
  end

  def request url
    JSON.parse(RestClient.get url, auth_header(@username, @password))
  end
  
  def list_bases
    response = request list_bases_url
    response['data']
  end

  def list_questions kb_id, limit = nil
    url = list_questions_url(kb_id, limit)
    response = request url
    response['data']['result']
  end

  def get_question question_id
    url = "#{base_url @domain}/q/#{question_id}"
    response = request url
    response['data']
  end
end