Class: Acme::Client::FaradayMiddleware

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/acme/client/faraday_middleware.rb

Constant Summary collapse

CONTENT_TYPE =
'application/jose+json'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, options) ⇒ FaradayMiddleware

Returns a new instance of FaradayMiddleware.



8
9
10
11
12
# File 'lib/acme/client/faraday_middleware.rb', line 8

def initialize(app, options)
  super(app)
  @client = options.fetch(:client)
  @mode = options.fetch(:mode)
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



4
5
6
# File 'lib/acme/client/faraday_middleware.rb', line 4

def client
  @client
end

#envObject (readonly)

Returns the value of attribute env.



4
5
6
# File 'lib/acme/client/faraday_middleware.rb', line 4

def env
  @env
end

#responseObject (readonly)

Returns the value of attribute response.



4
5
6
# File 'lib/acme/client/faraday_middleware.rb', line 4

def response
  @response
end

Instance Method Details

#call(env) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/acme/client/faraday_middleware.rb', line 14

def call(env)
  @env = env
  @env[:request_headers]['User-Agent'] = Acme::Client::USER_AGENT
  @env[:request_headers]['Content-Type'] = CONTENT_TYPE

  if @env.method != :get
    @env.body = client.jwk.jws(header: jws_header, payload: env.body)
  end

  @app.call(env).on_complete { |response_env| on_complete(response_env) }
rescue Faraday::TimeoutError, Faraday::ConnectionFailed
  raise Acme::Client::Error::Timeout
end

#on_complete(env) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/acme/client/faraday_middleware.rb', line 28

def on_complete(env)
  @env = env

  raise_on_not_found!
  store_nonce
  env.body = decode_body
  env.response_headers['Link'] = decode_link_headers

  return if env.success?

  raise_on_error!
end