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