class Totvs::PasswordVault::Base

Attributes

connection[W]

@!attribute [w] connection

@return [Connection]

Public Class Methods

new(connection: nil) click to toggle source
# File lib/totvs/password_vault/base.rb, line 20
def initialize(connection: nil)
  @connection = connection
end

Public Instance Methods

connection() click to toggle source
# File lib/totvs/password_vault/base.rb, line 24
def connection
  @connection ||= Connection.new
end
data_group() click to toggle source
# File lib/totvs/password_vault/base.rb, line 67
def data_group
  fail NotImplementedError
end
destroy(id:) click to toggle source

@param id [String] the id key to be removed @raise [Totvs::PasswordVault::Connection::RequestFailure] if the request was not a success

# File lib/totvs/password_vault/base.rb, line 58
def destroy(id:)
  headers = { "Accept" => "application/json" }
  delete path: build_path(id), headers: headers
end
required_params() click to toggle source
# File lib/totvs/password_vault/base.rb, line 63
def required_params
  fail NotImplementedError
end
retrieve(id:) click to toggle source

@param id [String] the id key to fetch info from @return [Hash<Symbol, String>] content the saved content @raise [Totvs::PasswordVault::Connection::RequestFailure] if the request was not a success

# File lib/totvs/password_vault/base.rb, line 31
def retrieve(id:)
  headers = { "Accept" => "application/json" }
  response = get(path: build_path(id), headers: headers)
  response = parse_json response.body

  result = {}
  response[translated_group].each do |key, value|
    result[(field_key(key) || key).to_sym] = value
  end

  result
end
save(id:, **kwargs) click to toggle source

@param id [String] the id key to save info @param kwargs [Hash]

# File lib/totvs/password_vault/base.rb, line 46
def save(id:, **kwargs)
  headers = {
    "Accept" => "application/json",
    "Content-Type" => "application/json"
  }
  validate_params!(kwargs)

  post path: build_path(id), body: save_body(kwargs), headers: headers
end

Protected Instance Methods

build_path(key) click to toggle source
# File lib/totvs/password_vault/base.rb, line 123
def build_path(key)
  "/iso/coe/#{translated_group}/#{key}"
end
field_key(name) click to toggle source
# File lib/totvs/password_vault/base.rb, line 111
def field_key(name)
  translator.field_key(data_group, name)
end
field_translation(key) click to toggle source
# File lib/totvs/password_vault/base.rb, line 107
def field_translation(key)
  translator.translate_field(data_group, key)
end
prepare_value_for_saving(value) click to toggle source

treat some type of value objects @param value [Object] to be prepared @return value with some kind of treatment

# File lib/totvs/password_vault/base.rb, line 94
def prepare_value_for_saving(value)
  case value
  when Array
    value.join(", ")
  when Time
    value.iso8601
  when Hash
    value.to_json
  else
    value
  end
end
save_body(params) click to toggle source

mount body to save request @param params [Hash] @return [Hash] translated body params

# File lib/totvs/password_vault/base.rb, line 83
def save_body(params)
  body = {}
  params.each do |key, value|
    body[field_translation(key.to_s).to_sym] = prepare_value_for_saving(value) if field_translation(key.to_s)
  end
  body.delete_if { |_, value| value.nil? || value.empty? }
end
translated_group() click to toggle source
# File lib/totvs/password_vault/base.rb, line 119
def translated_group
  translator.translate_group(data_group)
end
translator() click to toggle source
# File lib/totvs/password_vault/base.rb, line 115
def translator
  @translator ||= Translator.new
end
validate_params!(params) click to toggle source

validate presence of all required params

# File lib/totvs/password_vault/base.rb, line 74
def validate_params!(params)
  required_params.each do |req_param|
    fail RequiredParameter, "Required parameter {#{req_param}}" if params[req_param].nil?
  end
end