class Fortnox::API::Repository::Base

Constants

HTTP_METHODS

Attributes

headers[RW]
keys_filtered_on_save[R]
mapper[R]

Public Class Methods

new(keys_filtered_on_save: [:url], token_store: :default) click to toggle source
# File lib/fortnox/api/repositories/base.rb, line 46
def initialize(keys_filtered_on_save: [:url], token_store: :default)
  @keys_filtered_on_save = keys_filtered_on_save
  @token_store = token_store
  @mapper = Registry[Mapper::Base.canonical_name_sym(self.class::MODEL)].new
end
set_headers(headers = {}) click to toggle source
# File lib/fortnox/api/repositories/base.rb, line 29
def self.set_headers(headers = {}) # rubocop:disable Naming/AccessorMethodName
  self.headers.merge!(headers)
end

Public Instance Methods

access_tokens() click to toggle source
# File lib/fortnox/api/repositories/base.rb, line 64
def access_tokens
  begin
    tokens = config.token_store.fetch(@token_store)
  rescue KeyError
    token_store_not_found!(@token_store.inspect)
  end

  check_access_tokens!(tokens)
  tokens
end
check_access_tokens!(tokens) click to toggle source
# File lib/fortnox/api/repositories/base.rb, line 57
def check_access_tokens!(tokens)
  tokens_present = !(tokens.nil? || tokens.empty?)
  return if tokens_present
  error_message = "You have not provided any access tokens in token store #{@token_store.inspect}."
  raise MissingConfiguration, error_message
end
next_access_token() click to toggle source
# File lib/fortnox/api/repositories/base.rb, line 52
def next_access_token
  @access_tokens ||= CircularQueue.new(*access_tokens)
  @access_tokens.next
end

Private Instance Methods

base_url() click to toggle source
# File lib/fortnox/api/repositories/base.rb, line 83
def base_url
  base_url = config.base_url
  raise MissingConfiguration, 'You have to provide a base url.' unless base_url
  base_url
end
client_secret() click to toggle source
# File lib/fortnox/api/repositories/base.rb, line 89
def client_secret
  client_secret = config.client_secret
  raise MissingConfiguration, 'You have to provide your client secret.' unless client_secret
  client_secret
end
config() click to toggle source
# File lib/fortnox/api/repositories/base.rb, line 95
def config
  Fortnox::API.config
end
instantiate(hash) click to toggle source
# File lib/fortnox/api/repositories/base.rb, line 77
def instantiate(hash)
  hash[:new] = false
  hash[:unsaved] = false
  self.class::MODEL.new(hash)
end
token_store_not_found!(store_name) click to toggle source
# File lib/fortnox/api/repositories/base.rb, line 99
def token_store_not_found!(store_name)
  raise MissingConfiguration,
        "There is no token store named #{store_name}. Available stores are #{config.token_store.keys}."
end