class Shift::Api::Core::Model

The base class for all shift api models.

Defining a new model is as simple as extending this.

Public Class Methods

reconfigure(config) click to toggle source

Reconfigures the model and all subclasses this is generally called whenever the client is reconfigured on the fly such as in test and development environments. @param [Shift::Api::Core::Config] config The config instance to use

# File lib/shift/api/core/model.rb, line 18
def self.reconfigure(config)
  configure_site(config)
  configure_adapter(config)
  remove_connection_cache
  configure_error_handler
  configure_logger(config)
  configure_inspector(config)
  configure_timeout(config)
  configure_open_timeout(config)
  configure_headers(config)
  reconfigure_subclasses(config)
end

Private Class Methods

configure_adapter(config) click to toggle source
# File lib/shift/api/core/model.rb, line 41
def self.configure_adapter(config)
  adapter = config.adapter
  if adapter == :default
    connection_options.delete(:adapter)
  else
    connection_options.merge!(adapter: adapter)
  end
end
configure_error_handler() click to toggle source
# File lib/shift/api/core/model.rb, line 37
def self.configure_error_handler
  connection.faraday.builder.insert_before(JsonApiClient::Middleware::Status, ::Shift::Api::Core::Middleware::ErrorHandler)
end
configure_headers(config) click to toggle source
# File lib/shift/api/core/model.rb, line 50
def self.configure_headers(config)
  headers = config.headers
  connection.use(::Shift::Api::Core::Middleware::CustomHeaders, headers: headers) unless headers.empty?
end
configure_inspector(config) click to toggle source
# File lib/shift/api/core/model.rb, line 60
def self.configure_inspector(config)
  before_request_handlers = config.before_request_handlers
  after_response_handlers = config.after_response_handlers
  return if before_request_handlers.empty? && after_response_handlers.empty?
  connection.use ::Shift::Api::Core::Middleware::Inspector,
                 before_request_handlers: before_request_handlers,
                 after_response_handlers: after_response_handlers
end
configure_logger(config) click to toggle source
# File lib/shift/api/core/model.rb, line 55
def self.configure_logger(config)
  logger = config.logger
  connection.use(::Shift::Api::Core::Middleware::Logger, logger: logger) unless logger == :disabled
end
configure_open_timeout(config) click to toggle source
# File lib/shift/api/core/model.rb, line 75
def self.configure_open_timeout(config)
  open_timeout = config.open_timeout.to_s
  open_timeout = "0" if open_timeout == "disabled"
  connection.faraday.options.merge!(open_timeout: open_timeout.to_i) unless open_timeout == "default"
end
configure_site(config) click to toggle source
# File lib/shift/api/core/model.rb, line 33
def self.configure_site(config)
  self.site = config.shift_root_url
end
configure_timeout(config) click to toggle source
# File lib/shift/api/core/model.rb, line 69
def self.configure_timeout(config)
  timeout = config.timeout.to_s
  timeout = "0" if timeout == "disabled"
  connection.faraday.options.merge!(timeout: timeout.to_i) unless timeout == "default"
end
reconfigure_subclasses(config) click to toggle source
# File lib/shift/api/core/model.rb, line 81
def self.reconfigure_subclasses(config)
  subclasses.each do |klass|
    klass.reconfigure(config)
  end
end
remove_connection_cache() click to toggle source
# File lib/shift/api/core/model.rb, line 87
def self.remove_connection_cache
  self.connection_object = nil
end