module Payments::Payjunction::Httpable
  require 'net/http'

  def request(method, path, school, options={})
    api_key = Rails.application.secrets.payjunction_api_key
    url = Rails.application.secrets.payjunction_api_url
    username = school.payjunction_credential.username
    password = school.payjunction_credential.decrypted_password

    uri = URI.parse(url)
    uri.path += path

    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    request = ::Net::HTTP.const_get(method).new(uri)
    request.set_form_data(options) unless options.nil?
    request.basic_auth(username, password)
    request['X-PJ-Application-Key'] = api_key
    request['Accept'] = 'application/json'
    response = http.request(request)
    response = JSON.parse(response.body) unless method == 'Delete'
    response
  end
end
