module Khalti::RequestHelper

Handles API calls

Constants

SECRET_KEY

Public Class Methods

get(path) click to toggle source
# File lib/khalti/request_helper.rb, line 8
def get(path)
  validate_secret_key
  uri = URI.parse(path)
  req = Net::HTTP::Get.new(uri)
  req['authorization'] = "Key #{SECRET_KEY}"
  res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
    http.request(req)
  end
  extract_response(res)
end
post(path, params) click to toggle source
# File lib/khalti/request_helper.rb, line 19
def post(path, params)
  validate_secret_key
  uri = URI.parse(path)
  req = Net::HTTP::Post.new(uri)
  req['authorization'] = "Key #{SECRET_KEY}"
  req.set_form_data(params)
  res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
    http.request(req)
  end
  extract_response(res)
end

Private Class Methods

extract_response(res) click to toggle source
# File lib/khalti/request_helper.rb, line 43
def extract_response(res)
  case res
  when Net::HTTPSuccess
    validate_content_type(res['content-type'])
    JSON.parse res.body
  else
    raise Errors::KhaltiError, res.message
  end
end
validate_content_type(content_type) click to toggle source
# File lib/khalti/request_helper.rb, line 38
def validate_content_type(content_type)
  return if content_type == 'application/json'
  raise Errors::InvalidResponseError, 'Content-type is not application/json.'
end
validate_secret_key() click to toggle source
# File lib/khalti/request_helper.rb, line 33
def validate_secret_key
  return unless SECRET_KEY.nil? || SECRET_KEY.strip.empty?
  raise Errors::BlankError, 'Ensure KHALTI_SECRET_KEY is not blank.'
end