Sha256: 13e9f29f285b5ada693f4fc8b9cd98e4fa410a5f2c25ea54229326eecaaa2395

Contents?: true

Size: 1.11 KB

Versions: 7

Compression:

Stored size: 1.11 KB

Contents

module Eligible
  class APIResource < EligibleObject
    def self.class_name
      name.split('::').last
    end

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

    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

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

    def self.send_request(method, url, api_key, params, required_param_name = nil)
      unless required_param_name.nil?
        required_param = Util.value(params, required_param_name)
        require_param(required_param, required_param_name)
      end
      response, api_key = Eligible.request(method, url, api_key, params)
      Util.convert_to_eligible_object(response, api_key)
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
eligible-2.8.2 lib/eligible/api_resource.rb
eligible-2.8.1 lib/eligible/api_resource.rb
eligible-2.8.0 lib/eligible/api_resource.rb
eligible-2.7.0 lib/eligible/api_resource.rb
eligible-2.6.3 lib/eligible/api_resource.rb
eligible-2.6.2 lib/eligible/api_resource.rb
eligible-2.6.1 lib/eligible/api_resource.rb