class SmartAdapters::Delegator

Constants

FORMATS

List of formats supported by SmartAdapters

Attributes

format[W]
manager[W]
params[W]
request[W]

Public Class Methods

new(manager, request) click to toggle source

Initialise SmartAdapters delegator @param [ActionController] @param [ActionDispatch::Request] @return [SmartAdapters::Adapter::Delegator]

# File lib/smart_adapters/delegator.rb, line 12
def initialize(manager, request)
  @manager = manager
  @request = request
end

Public Instance Methods

action() click to toggle source

Return the action requested by the manager. @return [string]

# File lib/smart_adapters/delegator.rb, line 33
def action
  request_manager.action_name
end
api?() click to toggle source

Check if it is an API request @return [Boolean]

# File lib/smart_adapters/delegator.rb, line 59
def api?
  json?
end
load() click to toggle source

Fetch Adatapter base on request @raise [SmartAdapters::Exceptions::InvalidRequestFormatException] @raise [SmartAdapters::Exceptions::InvalidRequestParamsException] @return [SmartAdapters::<Controller>::<Action>::<Format>Adapter]

# File lib/smart_adapters/delegator.rb, line 21
def load
  unless valid_params?
    raise SmartAdapters::Exceptions::InvalidRequestParamsException
  end
  unless valid_format?
    raise SmartAdapters::Exceptions::InvalidRequestFormatException
  end
  adapter_finder.new(request_manager)
end
manager() click to toggle source

Return the controller requested. @return [string]

# File lib/smart_adapters/delegator.rb, line 39
def manager
  request_manager
end
request_params() click to toggle source

Fetch request params @return [Hash]

# File lib/smart_adapters/delegator.rb, line 77
def request_params
  @params ||= @request.params
end
session?() click to toggle source

Check if it is a session request @return [Boolean]

# File lib/smart_adapters/delegator.rb, line 65
def session?
  html?
end
valid_format?() click to toggle source

Check if the request has a valid format. @return [Boolean]

# File lib/smart_adapters/delegator.rb, line 53
def valid_format?
  FORMATS.map { |format| send("#{format}?") }.any?
end
valid_params?() click to toggle source

Check if the request has a valid params. @return [Boolean]

# File lib/smart_adapters/delegator.rb, line 71
def valid_params?
  request_params.present?
end

Private Instance Methods

adapter_finder() click to toggle source

Find adapter for the given request (resource, action, format) @raise [String]

# File lib/smart_adapters/delegator.rb, line 109
def adapter_finder
  resource = request_detail(key: :controller)
  req_action = request_detail(key: :action)
  req_format = request_format.symbol.to_s.camelize
  "SmartAdapters::#{resource}::#{req_action}::#{req_format}Adapter"
    .constantize
end
request_detail(key:) click to toggle source

Dig into the request params @param [Hash { key: nil }] @return [String]

# File lib/smart_adapters/delegator.rb, line 91
def request_detail(key:)
  request_params.dig(key).to_s.camelize
end
request_format() click to toggle source

Fecth request format. @return [Mime::Type]

# File lib/smart_adapters/delegator.rb, line 97
def request_format
  @format ||= @request.format
end
request_manager() click to toggle source

Fetch request manager @return [ActionController]

# File lib/smart_adapters/delegator.rb, line 103
def request_manager
  @manager
end