class Eezee::Request
Constants
- ACCESSORS
- DEFAULT
Public Class Methods
new(options = {})
click to toggle source
# File lib/eezee/request.rb, line 36 def initialize(options = {}) setup!(options) end
Public Instance Methods
after!(*params)
click to toggle source
# File lib/eezee/request.rb, line 52 def after!(*params) hook!(:after, params) end
attributes()
click to toggle source
# File lib/eezee/request.rb, line 44 def attributes ACCESSORS.each_with_object({}) { |accessor, obj| obj[accessor] = send(accessor) } end
before!(*params)
click to toggle source
# File lib/eezee/request.rb, line 48 def before!(*params) hook!(:before, params) end
log()
click to toggle source
# File lib/eezee/request.rb, line 40 def log Eezee::Logger.request(self, @method.to_s.upcase) end
Private Instance Methods
accessors!(params)
click to toggle source
# File lib/eezee/request.rb, line 78 def accessors!(params) params.slice(*ACCESSORS) .each { |k, v| instance_variable_set("@#{k}", v) } end
build_urn!()
click to toggle source
# File lib/eezee/request.rb, line 83 def build_urn! @uri = [@protocol, [@url, @path].compact.join('/')].compact.join('://') end
handle_query_params!()
click to toggle source
# File lib/eezee/request.rb, line 96 def handle_query_params! return unless @params.is_a?(Hash) @params.reject { |k, _v| @uri.include?(":#{k}") } .map { |k, v| "#{k}=#{v}" } .then { |array| array.join('&') } .then { |query| query unless query.empty? } .then { |query| @uri = [@uri, query].compact.join('?') } end
handle_urn_params!()
click to toggle source
# File lib/eezee/request.rb, line 87 def handle_urn_params! return unless @params.is_a?(Hash) @params.filter { |k, _v| @uri.include?(":#{k}") } .each { |k, v| @uri.gsub!(":#{k}", v.to_s) } .then { @uri.gsub!(/:[a-z_-]+/, '') } .then { @uri.gsub!(%r{/$}, '') } end
hook!(hook, params)
click to toggle source
# File lib/eezee/request.rb, line 66 def hook!(hook, params) return unless send(hook)&.is_a?(Proc) send(hook).call(*params[0..(send(hook).parameters.length - 1)]) end
setup!(options = {})
click to toggle source
# File lib/eezee/request.rb, line 58 def setup!(options = {}) accessors!(DEFAULT.merge(options || {})) validate! build_urn! handle_query_params! handle_urn_params! unless @preserve_url_params end
validate!()
click to toggle source
# File lib/eezee/request.rb, line 72 def validate! return if ENV['EEZEE_DISCARD_REQUEST_VALIDATIONS'] raise Eezee::RequiredFieldError.new(self.class, :url) unless @url end