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