customer_ogm.rb

 1# frozen_string_literal: true
 2
 3module CustomerOGM
 4	def self.for(url, fetch_vcard_temp)
 5		return Media.new(url) if url
 6		TTS.for(fetch_vcard_temp)
 7	end
 8
 9	class Media
10		def initialize(url)
11			@url = url
12		end
13
14		def to_render
15			[:voicemail_ogm_media, locals: { url: @url }]
16		end
17	end
18
19	class TTS
20		def self.for(fetch_vcard_temp)
21			fetch_vcard_temp.call.then { |vcard|
22				new(vcard)
23			}.catch { new(Blather::Stanza::Iq::Vcard::Vcard.new) }
24		end
25
26		def initialize(vcard)
27			@vcard = vcard
28		end
29
30		def [](k)
31			value = @vcard[k]
32			return if value.to_s.empty?
33			value
34		end
35
36		def fn
37			self["FN"] || self["NICKNAME"] || "a user of JMP.chat"
38		end
39
40		def to_render
41			[:voicemail_ogm_tts, locals: { fn: fn }]
42		end
43	end
44end