class SmartAdapters::Delegator
Constants
- FORMATS
List of formats supported by
SmartAdapters
Attributes
Public Class Methods
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
Return the action requested by the manager. @return [string]
# File lib/smart_adapters/delegator.rb, line 33 def action request_manager.action_name end
Check if it is an API request @return [Boolean]
# File lib/smart_adapters/delegator.rb, line 59 def api? json? end
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
Return the controller requested. @return [string]
# File lib/smart_adapters/delegator.rb, line 39 def manager request_manager end
Fetch request params @return [Hash]
# File lib/smart_adapters/delegator.rb, line 77 def request_params @params ||= @request.params end
Check if it is a session request @return [Boolean]
# File lib/smart_adapters/delegator.rb, line 65 def session? html? end
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
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
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
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
Fecth request format. @return [Mime::Type]
# File lib/smart_adapters/delegator.rb, line 97 def request_format @format ||= @request.format end
Fetch request manager @return [ActionController]
# File lib/smart_adapters/delegator.rb, line 103 def request_manager @manager end