Class: Eligible::APIResource

Inherits:
EligibleObject show all
Defined in:
lib/eligible/api_resource.rb

Instance Attribute Summary

Attributes inherited from EligibleObject

#api_key, #eligible_id

Class Method Summary collapse

Methods inherited from EligibleObject

#[], #[]=, construct_from, #each, #error, #initialize, #keys, #refresh_from, #to_hash, #to_json, #values

Constructor Details

This class inherits a constructor from Eligible::EligibleObject

Class Method Details

.api_url(base, params = nil, param_id = nil) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/eligible/api_resource.rb', line 7

def self.api_url(base, params = nil, param_id = nil)
  if params.nil?
    "/#{base}"
  else
    id = Util.value(params, param_id)
    "/#{base}/#{id}"
  end
end

.class_nameObject



3
4
5
# File 'lib/eligible/api_resource.rb', line 3

def self.class_name
  name.split('::').last
end

.endpoint_nameObject



23
24
25
# File 'lib/eligible/api_resource.rb', line 23

def self.endpoint_name
  self.const_get('ENDPOINT_NAME')
end

.require_param(value, name) ⇒ Object



27
28
29
# File 'lib/eligible/api_resource.rb', line 27

def self.require_param(value, name)
  fail ArgumentError, "#{name} of the #{class_name} is required" if value.nil? || (value.is_a?(String) && value.empty?)
end

.required_param_validation(params:, required_params:) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/eligible/api_resource.rb', line 31

def self.required_param_validation(params:, required_params:)
  return if required_params.nil? || !required_params.is_a?(Array)

  required_params.each do |required_param_name|
    required_param = Util.value(params, required_param_name)
    require_param(required_param, required_param_name)
  end
end

.rest_api_params(id_or_params) ⇒ Object



40
41
42
# File 'lib/eligible/api_resource.rb', line 40

def self.rest_api_params(id_or_params)
  id_or_params.is_a?(Hash) ? id_or_params : { id: id_or_params }
end

.send_request(method, url, params, opts = {}) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/eligible/api_resource.rb', line 44

def self.send_request(method, url, params, opts = {})
  headers = opts.clone
  client_secret = headers.delete(:client_secret)
  api_key = headers.delete(:api_key)
  api_key = client_secret unless client_secret.nil?

  required_param_validation(params: params, required_params: headers.delete(:required_params))

  # Here rest_api_version is related to New REST API Endpoints
  params = self.const_defined?(:REST_API_VERSION) ? params.merge(rest_api_version: self::REST_API_VERSION) : params
  response, api_key = Eligible.request(method, url, api_key, params, **headers)
  Util.convert_to_eligible_object(response, api_key)
end

.urlObject



16
17
18
19
20
21
# File 'lib/eligible/api_resource.rb', line 16

def self.url
  if self == APIResource
    fail NotImplementedError, 'APIResource is an abstract class.  You should perform actions on its subclasses (Plan, Service, etc.)'
  end
  "/#{CGI.escape(class_name.downcase)}/"
end