Module: Igniter::LedgerClient::Envelope
- Defined in:
- lib/igniter/ledger_client/envelope.rb
Constant Summary collapse
- PROTOCOL =
:igniter_store- SCHEMA_VERSION =
1- OPERATIONS =
%i[ register_descriptor write append write_fact read query resolve causation_chain lineage fact_ref metadata_snapshot descriptor_snapshot observability_snapshot sync_hub_profile replay storage_stats segment_manifest compaction_activity ].freeze
Class Method Summary collapse
- .generate_request_id ⇒ Object
- .normalize(hash) ⇒ Object
- .ok?(response) ⇒ Boolean
- .request(operation:, packet: {}, request_id: nil) ⇒ Object
- .result_or_raise(response) ⇒ Object
Class Method Details
.generate_request_id ⇒ Object
66 67 68 |
# File 'lib/igniter/ledger_client/envelope.rb', line 66 def generate_request_id "req_#{SecureRandom.hex(12)}" end |
.normalize(hash) ⇒ Object
62 63 64 |
# File 'lib/igniter/ledger_client/envelope.rb', line 62 def normalize(hash) hash.to_h.transform_keys(&:to_sym) end |
.ok?(response) ⇒ Boolean
47 48 49 |
# File 'lib/igniter/ledger_client/envelope.rb', line 47 def ok?(response) normalize(response)[:status]&.to_sym == :ok end |
.request(operation:, packet: {}, request_id: nil) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/igniter/ledger_client/envelope.rb', line 34 def request(operation:, packet: {}, request_id: nil) operation = operation.to_sym raise ArgumentError, "unknown ledger op: #{operation.inspect}" unless OPERATIONS.include?(operation) { protocol: PROTOCOL, schema_version: SCHEMA_VERSION, request_id: request_id || generate_request_id, op: operation, packet: packet || {} } end |
.result_or_raise(response) ⇒ Object
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/igniter/ledger_client/envelope.rb', line 51 def result_or_raise(response) response = normalize(response) return response[:result] if ok?(response) raise Error.new( response[:error] || "ledger client request failed", response: response, request_id: response[:request_id] ) end |