class ActiveCampaignRb::Faraday::Middleware::Request

Gem specific request middleware for Faraday

@author Mikael Henriksson <mikael@mhenrixon.com>

Public Class Methods

new(app, headers) click to toggle source
Calls superclass method
# File lib/active_campaign_rb/faraday/middleware/request.rb, line 18
def initialize(app, headers)
  super(app)
  @headers = headers
end

Public Instance Methods

call(env) click to toggle source
# File lib/active_campaign_rb/faraday/middleware/request.rb, line 23
def call(env)
  case env.method
  when :post, :patch, :put
    normalize_body(env)
  end

  env[:request_headers].merge!(@headers)

  @app.call(env)
end
logger() click to toggle source
# File lib/active_campaign_rb/faraday/middleware/request.rb, line 49
def logger
  @logger ||= Logger.new($stdout)
end
normalize_body(env) click to toggle source
# File lib/active_campaign_rb/faraday/middleware/request.rb, line 34
def normalize_body(env)
  body = env[:request_body]
  if body.is_a?(Array)
    body = transform_array(body.flatten, :camelcase, :lower)
  elsif body.key?(:group)
    logger.debug("Using body as is because group #{body}")
  elsif body.key?(:list)
    logger.debug("Using body as is because list #{body}")
  else
    body = transform_keys(body, :camelcase, :lower)
  end

  env[:request_body] = ::Oj.dump(body, mode: :compat)
end