Class: Acme::Client::FaradayMiddleware

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

Constant Summary collapse

USER_AGENT =
"Acme::Client v#{Acme::Client::VERSION} (#{repo_url})".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, client:) ⇒ FaradayMiddleware

Returns a new instance of FaradayMiddleware.



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

def initialize(app, client:)
  super(app)
  @client = client
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
# File 'lib/acme/client/faraday_middleware.rb', line 14

def call(env)
  @env = env
  @env[:request_headers]['User-Agent'] = USER_AGENT
  @env.body = crypto.generate_signed_jws(header: { nonce: pop_nonce }, payload: env.body)
  @app.call(env).on_complete { |response_env| on_complete(response_env) }
rescue Faraday::TimeoutError
  raise Acme::Client::Error::Timeout
end

#on_complete(env) ⇒ Object



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

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