Class: Igniter::LedgerClient::Results::ReceiptResult

Inherits:
Object
  • Object
show all
Includes:
HashAccess
Defined in:
lib/igniter/ledger_client/results.rb

Direct Known Subclasses

AppendResult, WriteResult

Constant Summary collapse

FIELDS =
%i[
  schema_version
  kind
  status
  name
  store
  key
  fact_id
  value_hash
  warnings
  errors
  derived
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Methods included from HashAccess

#[]

Constructor Details

#initialize(raw = {}) ⇒ ReceiptResult

Returns a new instance of ReceiptResult.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/igniter/ledger_client/results.rb', line 31

def initialize(raw = {})
  data = self.class.normalize(raw)
  @schema_version = data[:schema_version]
  @kind = token(data[:kind])
  @status = token(data[:status])
  @name = token(data[:name])
  @store = token(data[:store])
  @key = data[:key]
  @fact_id = data[:fact_id]
  @value_hash = data[:value_hash]
  @warnings = Array(data[:warnings]).freeze
  @errors = Array(data[:errors]).freeze
  @derived = Array(data[:derived]).freeze
  freeze
end

Class Method Details

.normalize(raw) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
# File 'lib/igniter/ledger_client/results.rb', line 69

def self.normalize(raw)
  hash = if raw.respond_to?(:to_h)
           raw.to_h
         else
           FIELDS.each_with_object({}) do |field, acc|
             acc[field] = raw.public_send(field) if raw.respond_to?(field)
           end
         end

  hash.to_h.transform_keys(&:to_sym)
end

Instance Method Details

#accepted?Boolean

Returns:

  • (Boolean)


47
# File 'lib/igniter/ledger_client/results.rb', line 47

def accepted? = status == :accepted

#deduplicated?Boolean

Returns:

  • (Boolean)


51
# File 'lib/igniter/ledger_client/results.rb', line 51

def deduplicated? = status == :deduplicated

#rejected?Boolean

Returns:

  • (Boolean)


49
# File 'lib/igniter/ledger_client/results.rb', line 49

def rejected? = status == :rejected

#to_hObject



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/igniter/ledger_client/results.rb', line 53

def to_h
  {
    schema_version: schema_version,
    kind: kind,
    status: status,
    name: name,
    store: store,
    key: key,
    fact_id: fact_id,
    value_hash: value_hash,
    warnings: warnings,
    errors: errors,
    derived: derived
  }.compact
end