Module: LcpSdk

Defined in:
lib/generated_models.rb,
lib/lcp_sdk.rb,
lib/schema_validator.rb

Overview

GENERATED FROM schemas/ — do not edit manually.

Defined Under Namespace

Modules: Signing Classes: AckPayload, BidPayload, CallPayload, Client, EnvelopeModel, EventPayload, LeadPayload, Message, MessageModel, OfferModel, PingPayload, PostPayload, SchemaValidationError, SchemaValidator

Class Method Summary collapse

Class Method Details

.build_envelope(type, sender_id, receiver_id, payload, test: false) ⇒ Object



52
53
54
55
# File 'lib/lcp_sdk.rb', line 52

def build_envelope(type, sender_id, receiver_id, payload, test: false)
  id = SecureRandom.uuid
  { "lcp" => { "version" => "1.0.0", "message" => { "id" => id, "type" => type, "timestamp" => Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ"), "sender_id" => sender_id, "receiver_id" => receiver_id, "correlation_id" => nil, "idempotency_key" => "#{sender_id}-#{type}-#{SecureRandom.hex(16)}", "test" => test }, "payload" => payload } }
end

.validate_envelope(envelope) ⇒ Object

Raises:

  • (ArgumentError)


57
58
59
60
61
62
63
# File 'lib/lcp_sdk.rb', line 57

def validate_envelope(envelope)
  message = envelope.dig("lcp", "message")
  raise ArgumentError, "invalid LCP envelope" unless envelope.dig("lcp", "version").is_a?(String) && message.is_a?(Hash)
  %w[id type timestamp sender_id receiver_id idempotency_key].each { |key| raise ArgumentError, "missing lcp.message.#{key}" unless message[key].is_a?(String) && !message[key].empty? }
  raise ArgumentError, "missing lcp.payload" unless envelope.dig("lcp").key?("payload")
  true
end