require "json" require_relative '../error' require 'httparty' require_relative './endpoints' class Base attr_reader :petra_object # method to initialize this class def initialize(petra_object=nil) unless !petra_object.nil? raise ArgumentError, "PetraSdk Africa Object is required!!!" end @petra_object = petra_object end def get_request(endpoint) # headers = { # "Authorization" => "Bearer #{petra_object.secret_key}" # } begin response = HTTParty.get(endpoint, :headers => { "Authorization" => "Bearer #{petra_object.secret_key}" }) unless (response.code == 200 || response.code == 201) raise PetraServerError.new(response), "HTTP Code #{response.code}: #{response.body}" end return response unless(response.code != 0 ) raise PetraServerError.new(response), "Server Message: #{response.message}" end rescue JSON::ParserError => jsonerr raise PetraServerError.new(response) , "Invalid result data. Could not parse JSON response body \n #{jsonerr.message}" return response end end # method to make a post request def post_request(endpoint, data) begin response = HTTParty.post(endpoint, { body: data, headers: { "Content-Type" => "application/json", "Authorization" => "Bearer #{petra_object.secret_key}" } }) unless (response.code == 200 || response.code == 201) raise PetraServerError.new(response), "HTTP Code #{response.code}: #{response.body}" end return response end end # method to make a put request def put_request(endpoint, data) begin response = HTTParty.put(endpoint, { body: data, headers: { "Content-Type" => "application/json", "Authorization" => "Bearer #{petra_object.secret_key}" } }) unless (response.code == 200 || response.code == 201) raise PetraServerError.new(response), "HTTP Code #{response.code}: #{response.body}" end return response end end # method to make a delete request def delete_request(endpoint, data) begin response = HTTParty.delete(endpoint, { body: data, headers: { "Content-Type" => "application/json", "Authorization" => "Bearer #{petra_object.secret_key}" } }) unless (response.code == 200 || response.code == 201) raise PetraServerError.new(response), "HTTP Code #{response.code}: #{response.body}" end return response end end # method to check if the passed parameters is equal to the expected parameters def check_passed_parameters(required_params, passed_params) # This is used to check if the passed authorization parameters matches the required parameters required_params.each do |k, v| if !passed_params.key?(k) raise IncompleteParameterError, "Parameters Incomplete, Missing Parameter: #{k}, Please pass in the complete parameter." end end end end