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, client:, mode:) ⇒ FaradayMiddleware

Returns a new instance of FaradayMiddleware.



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

def initialize(app, client:, mode:)
  super(app)
  @client = client
  @mode = 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
# 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

  @env.body = client.jwk.jws(header: jws_header, payload: env.body)
  @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



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/acme/client/faraday_middleware.rb', line 25

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