Class: Juknife::Middleware::RequestDSL

Inherits:
Faraday::Middleware
  • Object
show all
Includes:
Request::DSL
Defined in:
lib/juknife/middleware/request_dsl.rb

Overview

A Faraday middleware to interpret Juknife request DSL

Constant Summary

Constants included from Request::DSL

Request::DSL::HTTP_METHODS

Instance Attribute Summary collapse

Attributes included from Request::DSL

#body_builder, #http_method, #query_builder, #url_builder, #user_agent_builder

Instance Method Summary collapse

Methods included from Request::DSL

#body, #query, #user_agent

Constructor Details

#initialize(app, params = {}, &block) ⇒ RequestDSL

Returns a new instance of RequestDSL.



14
15
16
17
18
# File 'lib/juknife/middleware/request_dsl.rb', line 14

def initialize(app, params = {}, &block)
  super(app)
  @params = params
  instance_eval(&block)
end

Instance Attribute Details

#paramsObject (readonly)

Returns the value of attribute params.



12
13
14
# File 'lib/juknife/middleware/request_dsl.rb', line 12

def params
  @params
end

Instance Method Details

#call(env) ⇒ Object

rubocop: disable Metrics/AbcSize



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/juknife/middleware/request_dsl.rb', line 20

def call(env) # rubocop: disable Metrics/AbcSize
  uri = URI.parse(url_builder.call)
  uri.query = query_builder&.call&.to_query

  env[:url] = uri
  env[:method] = http_method
  env[:body] = body_builder&.call
  env[:request_headers] ||= {}

  if user_agent_builder
    env[:request_headers]['User-Agent'] = user_agent_builder&.call
  end

  @app.call(env)
end