# frozen_string_literal: true require "faraday" require "json" require_relative "../response/api_error" require_relative "../error/api_error" module ONEAccess module API class ApiBase class << self def send_get(method, params = {}) Http::HttpClient.get(api_url(method), params) end def send_post(method, body) Http::HttpClient.post(api_url(method), body, "Content-Type" => "application/json") end def resource_api_path const_get("RESOURCE_API_PATH") rescue StandardError nil end def api_url(method = nil) url = "#{base_url}#{resource_api_path}" return url if method.nil? "#{url}/#{method}" end protected def api_path(path) raise "API path has already been set" if resource_api_path self.resource_api_path = path end private def base_url raise "base_url must be implemented" end def resource_api_path=(path) const_set("RESOURCE_API_PATH", path) end end end end end