class Faraday::Response::OSDumper

Public Instance Methods

on_complete(env) click to toggle source
# File lib/yao/faraday_middlewares.rb, line 81
  def on_complete(env)
    require 'pp'

    body = if env.response_headers["content-type"].start_with?("application/json")
             JSON.parse(env.body)
           else
             env.body
           end
    body = conseal_token_in_body(body)

    request_headers = conseal_token_in_request_headers(env.request_headers.dup)
    response_headers= conseal_token_in_response_headers(env.response_headers.dup)

    params = [
      env.url.to_s,
      body,
      request_headers,
      response_headers,
      env.method,
      env.status
    ].map(&:pretty_inspect)
    $stdout.puts(<<-FMT % params)
================================
 OpenStack response inspection:
================================
Requested To: %s

Body:
%s
Request Headers:
%s
Response Headers:
%s

Method: %s
Status Code: %s
================================

    FMT
  end

Private Instance Methods

conseal_token_in_body(body) click to toggle source
# File lib/yao/faraday_middlewares.rb, line 123
def conseal_token_in_body(body)
  # for keystone v2.0
  if body.is_a?(Hash) && token = body.dig("access", "token", "id")
    body["access"]["token"]["id"] = hashed_token(token)
  end
  body
end
conseal_token_in_request_headers(headers) click to toggle source
# File lib/yao/faraday_middlewares.rb, line 131
def conseal_token_in_request_headers(headers)
  if token = headers["X-Auth-Token"]
    headers["X-Auth-Token"] = hashed_token(token)
  end
  headers
end
conseal_token_in_response_headers(headers) click to toggle source
# File lib/yao/faraday_middlewares.rb, line 138
def conseal_token_in_response_headers(headers)
  if token = headers["x-subject-token"]
    headers["x-subject-token"] = hashed_token(token)
  end
  headers
end
hashed_token(token) click to toggle source
# File lib/yao/faraday_middlewares.rb, line 145
def hashed_token(token)
  require 'openssl'

  # This format was based on openstack client.
  "{SHA256}" + OpenSSL::Digest::SHA256.hexdigest(token)
end