54 lines
1.1 KiB
Ruby
54 lines
1.1 KiB
Ruby
require 'base64'
|
|
require 'json'
|
|
|
|
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(Excon.get(url, headers: 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
|