internal msgs (from 8753120) get delivery receipts

Denver Gingerich created

Change summary

sgx-catapult.rb | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)

Detailed changes

sgx-catapult.rb 🔗

@@ -30,7 +30,7 @@ require 'goliath/api'
 require 'goliath/server'
 require 'log4r'
 
-puts "Soprani.ca/SMS Gateway for XMPP - Catapult        v0.019\n\n"
+puts "Soprani.ca/SMS Gateway for XMPP - Catapult        v0.021\n\n"
 
 if ARGV.size != 9 then
 	puts "Usage: sgx-catapult.rb <component_jid> <component_password> " +
@@ -123,6 +123,11 @@ module SGXcatapult
 		jid_key = "catapult_jid-" + num_dest
 		conn.write ["EXISTS", jid_key]
 		if conn.read > 0
+			# setup delivery receipt; sort of a reply but not quite
+			rcpt = ReceiptMessage.new(bare_jid)
+			rcpt.from = m.to
+
+			# pass on the original message (before sending receipt)
 			conn.write ["GET", jid_key]
 			m.to = conn.read
 
@@ -131,6 +136,20 @@ module SGXcatapult
 			puts 'XRESPONSE0: ' + m.inspect
 			write_to_stream m
 
+			# send a delivery receipt back to the sender
+			# TODO: send only when requested per XEP-0184
+
+			# TODO: put in member/instance variable
+			uuid_gen = UUID.new
+			rcpt['id'] = uuid_gen.generate
+			rcvd = Nokogiri::XML::Node.new 'received', rcpt.document
+			rcvd['xmlns'] = 'urn:xmpp:receipts'
+			rcvd['id'] = m.id
+			rcpt.add_child(rcvd)
+
+			puts 'XRESPONSE1: ' + rcpt.inspect
+			write_to_stream rcpt
+
 			conn.disconnect
 			next
 		end