trivial_backend_sgx_repo.rb

 1# frozen_string_literal: true
 2
 3require_relative "backend_sgx"
 4require_relative "not_loaded"
 5
 6class TrivialBackendSgxRepo
 7	def initialize(
 8		jid: CONFIG[:sgx],
 9		creds: CONFIG[:creds],
10		component_jid: CONFIG[:component][:jid],
11		redis: LazyObject.new { REDIS },
12		**with
13	)
14		@jid = Blather::JID.new(jid)
15		@creds = creds
16		@component_jid = component_jid
17		@redis = redis
18		@with = with
19	end
20
21	def self.get_unregistered(customer_id, **kwargs)
22		new(**kwargs).get(customer_id).then { |s| s.with(registered?: false) }
23	end
24
25	def get(customer_id, tel: nil)
26		use_jid(customer_id).then do |sgx_jid|
27			creds = sgx_jid && sgx_jid.is_a?(String) ? CONFIG[:sgx_creds][sgx_jid.to_sym] : @creds
28			BackendSgx.new(
29				jid: sgx_jid ? Blather::JID.new(sgx_jid) : @jid, creds: creds,
30				from_jid: Blather::JID.new("customer_#{customer_id}", @component_jid),
31				ogm_url: NotLoaded.new(:ogm_url), fwd: NotLoaded.new(:fwd_timeout),
32				transcription_enabled: NotLoaded.new(:transcription_enabled),
33				registered?: tel ? ibr_for(tel) : NotLoaded.new(:registered?)
34			).with(@with)
35		end
36	end
37
38protected
39
40	def use_jid(customer_id)
41		if @jid.node.nil?
42			@redis.get("jmp_customer_backend_sgx-#{customer_id}")
43		else
44			EMPromise.resolve(@jid)
45		end
46	end
47
48	def ibr_for(tel)
49		ibr = Blather::Stanza::Iq::IBR.new
50		ibr.registered = true
51		ibr.phone = tel
52		ibr
53	end
54end