class Totvs::PasswordVault::Connection

Attributes

consumer_key[W]

@!attribute [w] consumer_key

@return [String]
consumer_secret[W]

@!attribute [w] consumer_secret

@return [String]
vault_access_token[W]

@!attribute [w] vault_access_token

@return [String]
vault_access_token_secret[W]

@!attribute [w] vault_access_token_secret

@return [String]
vault_base_url[W]

@!attribute [w] vault_base_url

@return [String]

Public Instance Methods

access_token() click to toggle source

Returns the oauth access token @return [OAuth::AccessToken]

# File lib/totvs/password_vault/connection.rb, line 56
def access_token
  @access_token ||= OAuth::AccessToken.new(
    consumer,
    vault_access_token,
    vault_access_token_secret
  )
end
consumer() click to toggle source

Returns the oauth consumer @return [OAuth::Consumer]

# File lib/totvs/password_vault/connection.rb, line 46
def consumer
  @consumer ||= OAuth::Consumer.new(
    consumer_key,
    consumer_secret,
    site: vault_base_url
  )
end
consumer_key() click to toggle source

@return [String]

# File lib/totvs/password_vault/connection.rb, line 138
def consumer_key
  @consumer_key ||= ENV["VAULT_CONSUMER_KEY"]
end
consumer_secret() click to toggle source

@return [String]

# File lib/totvs/password_vault/connection.rb, line 143
def consumer_secret
  @consumer_secret ||= ENV["VAULT_CONSUMER_SECRET"]
end
delete(path:, headers: {}) click to toggle source

@return [Response] response @raise [RequestFailure] if the request was not a success @raise [TimeoutError]

# File lib/totvs/password_vault/connection.rb, line 120
def delete(path:, headers: {})
  response = make_request(:delete, path, headers)
  validate_success! response

  wrap_response response
end
get(path:, headers: {}) click to toggle source

@return [Response] response @raise [RequestFailure] if the request was not a success @raise [TimeoutError]

# File lib/totvs/password_vault/connection.rb, line 90
def get(path:, headers: {})
  response = make_request(:get, path, headers)
  validate_success! response

  wrap_response response
end
make_request(http_method, path, *args) click to toggle source

Makes a http request

@param http_method [Symbol] @param path [String] @param args […]

@return [Net::HTTPResponse]

@raise [TimeoutError]

# File lib/totvs/password_vault/connection.rb, line 79
def make_request(http_method, path, *args)
  validate_environment_variables!

  requester.request http_method, path, *args
rescue Timeout::Error => e
  raise TimeoutError, "#{http_method.to_s.upcase}: #{path}. #{e}"
end
post(path:, body: nil, headers: {}) click to toggle source

@return [Response] response @raise [RequestFailure] if the request was not a success @raise [TimeoutError]

# File lib/totvs/password_vault/connection.rb, line 100
def post(path:, body: nil, headers: {})
  response = make_request(:post, path, body, headers)
  validate_success! response

  wrap_response response
end
put(path:, body: nil, headers: {}) click to toggle source

@return [Response] response @raise [RequestFailure] if the request was not a success @raise [TimeoutError]

# File lib/totvs/password_vault/connection.rb, line 110
def put(path:, body: nil, headers: {})
  response = make_request(:put, path, body, headers)
  validate_success! response

  wrap_response response
end
requester() click to toggle source

Alias access token @return [OAuth::AccessToken]

# File lib/totvs/password_vault/connection.rb, line 66
def requester
  access_token
end
required_environment_variables() click to toggle source
# File lib/totvs/password_vault/connection.rb, line 127
def required_environment_variables
  %w(
    VAULT_CONSUMER_KEY
    VAULT_CONSUMER_SECRET
    VAULT_BASE_URL
    VAULT_ACCESS_TOKEN
    VAULT_ACCESS_TOKEN_SECRET
  )
end
vault_access_token() click to toggle source

@return [String]

# File lib/totvs/password_vault/connection.rb, line 153
def vault_access_token
  @vault_access_token ||= ENV["VAULT_ACCESS_TOKEN"]
end
vault_access_token_secret() click to toggle source

@return [String]

# File lib/totvs/password_vault/connection.rb, line 158
def vault_access_token_secret
  @vault_access_token_secret ||= ENV["VAULT_ACCESS_TOKEN_SECRET"]
end
vault_base_url() click to toggle source

@return [String]

# File lib/totvs/password_vault/connection.rb, line 148
def vault_base_url
  @vault_base_url ||= ENV["VAULT_BASE_URL"]
end
wrap_response(response) click to toggle source

Wraps the response to a Response object @return [Response]

# File lib/totvs/password_vault/connection.rb, line 164
def wrap_response(response)
  Response.new status_code: response.code.to_i,
               body: response.body,
               content_type: response.content_type
end

Protected Instance Methods

validate_environment_variables!() click to toggle source

validates presence of environment variables

# File lib/totvs/password_vault/connection.rb, line 173
def validate_environment_variables!
  required_environment_variables.each do |variable|
    fail EnvironmentVariableError, "Missing environment variable: #{variable}" unless ENV[variable]
  end
end
validate_success!(response) click to toggle source
# File lib/totvs/password_vault/connection.rb, line 179
def validate_success!(response)
  if response.is_a? Net::HTTPNotFound
    fail RegistryNotFoundError
  elsif response.is_a? Net::HTTPGone
    fail InactiveRegistryError, "This registry is inactive and can't be updated"
  elsif response.is_a? Net::HTTPSuccess
    return response
  else
    message = "Response class: #{response}"
    fail RequestFailure.new message, response: response
  end
end