class Ponominalu::Middleware
Faraday middleware for a passing the session param to the request and config data to the response under the hood. Also it handles errors
Public Class Methods
new(app)
click to toggle source
Passes the session param @param [Hash] env Request data.
Calls superclass method
# File lib/ponominalu/middleware.rb, line 8 def initialize(app) super(app) @session = Ponominalu.session @logger = Ponominalu.logger end
Public Instance Methods
call(env)
click to toggle source
Calls superclass method
# File lib/ponominalu/middleware.rb, line 14 def call(env) # Parse the params and the method name from request body @method_name = env.url.to_s.split('/').last @params = Helpers.parse_params(env.body) if Ponominalu.log_requests? @logger.debug "Ponominalu: #{@method_name.upcase} #{env.url.to_s}" @logger.debug "session: #{@session} params: #{@params}" end # Add the session to the user request params env.body << "&session=#{@session}" super end
on_complete(env)
click to toggle source
Passes the user params and handle request errors @param [Hash] env Response
data.
# File lib/ponominalu/middleware.rb, line 31 def on_complete(env) if env.status != 200 @logger.error "Request failed with status code #{env.status}." raise "Request failed with status code #{env.status}." end config_data = { method_name: @method_name, params: @params, session: @session } env.body = Hashie::Mash.new(Oj.load(env.body).merge(config_data)) if env.body.code.zero? && !Ponominalu.empty_strict @logger.warn 'Nothing was found. Result is empty.' elsif env.body.code < 1 @logger.error "#{env.body.code}: #{env.body.message}." raise Ponominalu::Error.new(env.body) else @logger.debug "body: #{env.body}" if Ponominalu.log_responses? end end