class Katinguele::Request
Constants
- ACCESSORS
- DEFAULT
Public Class Methods
new(options = {})
click to toggle source
# File lib/katinguele/request.rb, line 30 def initialize(options = {}) setup!(options) end
Public Instance Methods
after!(*params)
click to toggle source
# File lib/katinguele/request.rb, line 46 def after!(*params) hook!(:after, params) end
attributes()
click to toggle source
# File lib/katinguele/request.rb, line 38 def attributes ACCESSORS.each_with_object({}) { |accessor, obj| obj[accessor] = send(accessor) } end
before!(*params)
click to toggle source
# File lib/katinguele/request.rb, line 42 def before!(*params) hook!(:before, params) end
log()
click to toggle source
# File lib/katinguele/request.rb, line 34 def log Katinguele::Logger.request(self, @method.to_s.upcase) end
Private Instance Methods
accessors!(params)
click to toggle source
# File lib/katinguele/request.rb, line 70 def accessors!(params) params.slice(*ACCESSORS) .each { |k, v| instance_variable_set("@#{k}", v) } end
build_urn!()
click to toggle source
# File lib/katinguele/request.rb, line 75 def build_urn! @uri = [@protocol, [@url, @path].compact.join('/')].compact.join('://') end
handle_query_params!()
click to toggle source
# File lib/katinguele/request.rb, line 87 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/katinguele/request.rb, line 79 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_-]+/, '') } end
hook!(hook, params)
click to toggle source
# File lib/katinguele/request.rb, line 60 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/katinguele/request.rb, line 52 def setup!(options = {}) accessors!(DEFAULT.merge(options || {})) validate! build_urn! handle_query_params! handle_urn_params! end
validate!()
click to toggle source
# File lib/katinguele/request.rb, line 66 def validate! raise Katinguele::RequiredFieldError.new(self.class, :url) unless @url end