class Dendreo::API

Attributes

api_key[RW]
errors[RW]
result[RW]
url[RW]

Public Class Methods

new(url, api_key) click to toggle source
# File lib/dendreo.rb, line 15
def initialize(url, api_key)
  @url = url # https://pro.dendreo.com/my_company/api
  @api_key = api_key
  @request = Request.new(base_url: @url, api_key: @api_key)
  @errors = @request.errors
  @result = nil
  handle_errors
end

Public Instance Methods

method_missing(method_name, *args) click to toggle source
# File lib/dendreo.rb, line 24
def method_missing(method_name, *args)
  @errors = []
  @result = @request.call(
    http_method: args.first&.dig(:method),
    endpoint: method_name,
    args: args.first,
  )
  handle_errors
  @result
end

Private Instance Methods

handle_errors() click to toggle source
# File lib/dendreo.rb, line 37
def handle_errors
  handle_init_errors
  @errors += @request.errors
  return if @errors.empty?

  raise Requests::Error.new(@errors.map(&:message).uniq.join(', '))
end
handle_init_errors() click to toggle source
# File lib/dendreo.rb, line 45
def handle_init_errors
  errors << Requests::Error.new(
    'Veuillez renseigner une url ex: https://pro.dendreo.com/my_company/api'
  ) if @url.nil? or @url == ''

  errors << Requests::Error.new(
    'Veuillez renseigner une clé API'
  ) if @api_key.nil? or @api_key == ''
end