class Finnegans::Client
Attributes
access_token[R]
api_catalog_path[R]
base_url[R]
client_id[R]
client_secret[R]
namespace[R]
Public Class Methods
new(client_id:, client_secret:, base_url:, access_token: nil, api_catalog_path: Finnegans.api_catalog_path, namespace: Finnegans.resources_namespace)
click to toggle source
# File lib/finnegans/client.rb, line 11 def initialize(client_id:, client_secret:, base_url:, access_token: nil, api_catalog_path: Finnegans.api_catalog_path, namespace: Finnegans.resources_namespace) @client_id = client_id.to_s @client_secret = client_secret.to_s @base_url = base_url.to_s.gsub(/\/+$/, '') @access_token = access_token @api_catalog_path = api_catalog_path namespace = namespace.to_s @namespace = (namespace.empty? ? nil : namespace) self end
Public Instance Methods
catalog_detail(id)
click to toggle source
# File lib/finnegans/client.rb, line 53 def catalog_detail(id) request("/#{@api_catalog_path}/#{id}") end
initialize_namespaced_resources(refresh: false)
click to toggle source
# File lib/finnegans/client.rb, line 28 def initialize_namespaced_resources(refresh: false) remove_previous_resources if refresh _namespaced_catalog = namespaced_catalog(refresh: refresh) _namespaced_catalog.each do |catalog_item| define_resource(catalog_item) end end
inspect()
click to toggle source
# File lib/finnegans/client.rb, line 24 def inspect self end
request(resource, request_params = {})
click to toggle source
# File lib/finnegans/client.rb, line 38 def request(resource, request_params = {}) unless request_params.is_a?(Hash) raise ArgumentError, 'The second argument in the :request must be a Hash ({}) ' \ 'or nil. Definition -> request(resource, request_params = {})' end authenticated_request do request_params[:params] = (request_params[:params] || {}).merge(authenticated_param) response = request_call(resource, request_params) body = json_load(response.body) response.success? ? body : (raise RequestError.new(body), body['error']) end end
Private Instance Methods
access_token=(value)
click to toggle source
# File lib/finnegans/client.rb, line 61 def access_token=(value) @access_token = value end
authenticate()
click to toggle source
# File lib/finnegans/client.rb, line 65 def authenticate begin authenticate! rescue Finnegans::AuthenticationError => e nil end end
authenticate!()
click to toggle source
# File lib/finnegans/client.rb, line 73 def authenticate! return if ready? (self.access_token = get_access_token) && nil end
authenticated_request() { || ... }
click to toggle source
# File lib/finnegans/client.rb, line 97 def authenticated_request(&block) authenticate! unless ready? begin yield rescue Finnegans::RequestError => error if error.message =~ /(invalid_token)/i ready? ? refresh_authentication! : authenticate! retry else raise error end end end
catalog(refresh: false)
click to toggle source
# File lib/finnegans/client.rb, line 83 def catalog(refresh: false) return @_catalog if defined?(@_catalog) && !refresh @_catalog = request("/#{@api_catalog_path}/list") end
define_resource(data)
click to toggle source
# File lib/finnegans/client.rb, line 134 def define_resource(data) resource_code = data['codigo'] resource_name = Support.snakecase(resource_code.gsub(/#{namespace}/, '')) resource_active = data['activo'] resource = Resource.new(code: resource_code, active: resource_active, client: self) instance_variable_set("@_#{resource_name}", resource) (class << self; self; end).class_eval do define_method :"#{resource_name}" do instance_variable_get("@_#{resource_name}") end end defined_resources << resource_name.to_sym end
defined_resources()
click to toggle source
# File lib/finnegans/client.rb, line 116 def defined_resources @_defined_resources ||= [] end
namespaced_catalog(refresh: false)
click to toggle source
# File lib/finnegans/client.rb, line 89 def namespaced_catalog(refresh: false) return @_namespaced_catalog if defined?(@_namespaced_catalog) && !refresh @_namespaced_catalog = catalog(refresh: refresh).select do |catalog_item| namespace.nil? || catalog_item['codigo'] =~ /#{namespace}/i end end
ready?()
click to toggle source
# File lib/finnegans/client.rb, line 79 def ready? !!access_token end
refresh_authentication!()
click to toggle source
# File lib/finnegans/client.rb, line 112 def refresh_authentication! self.access_token = refresh_access_token end
remove_previous_resources()
click to toggle source
# File lib/finnegans/client.rb, line 120 def remove_previous_resources defined_resources.delete_if do |resource_name| if respond_to?(resource_name.to_sym) (class << self; self; end).class_eval do remove_method resource_name.to_sym end end if instance_variable_defined?("@_#{resource_name}") send(:remove_instance_variable, :"@_#{resource_name}") end true end end