Add stuff from prod

Stephen Paul Weber created

Change summary

.rubocop.yml     |  3 +++
sgx_endstream.rb | 22 ++++++++++++++++++++--
2 files changed, 23 insertions(+), 2 deletions(-)

Detailed changes

.rubocop.yml 🔗

@@ -143,5 +143,8 @@ Style/FrozenStringLiteralComment:
   Exclude:
     - forms/**/*.rb
 
+Style/RescueModifier:
+  Enabled: false
+
 Naming/AccessorMethodName:
   Enabled: false

sgx_endstream.rb 🔗

@@ -155,6 +155,8 @@ ibr type: :set do |iq|
 end
 
 message from: /@sms.chat.1pcom.net\Z/ do |m|
+	json = JSON.parse(m.body) rescue nil
+
 	tel = if m.from.node.length > 7
 		"+#{m.from.node}"
 	else
@@ -164,6 +166,22 @@ message from: /@sms.chat.1pcom.net\Z/ do |m|
 	m.from = Blather::JID.new(tel, CONFIG[:component][:jid])
 	m.to = ProxiedJID.new(m.to).unproxied
 	m.subject = nil # They send a generic subject for some reason
+
+	if json.is_a?(Hash) && json["response"]
+		log.info("SMS Status", json)
+		resp = json["response"]
+		m.id = resp["id"]
+		swap = m.from
+		m.from = m.to
+		m.to = swap
+		m.body = ""
+		m = m.as_error(
+			"recipient-unavailable",
+			:cancel,
+			"#{resp['text']} (#{resp['code']} #{resp['subcode']} #{resp['dlrid']})"
+		)
+	end
+
 	self << m
 end
 
@@ -195,12 +213,12 @@ message ->(m) { !m.oobs.empty? }, to: /\A\+?\d+@/ do |m|
 	self << OutgoingMMS.for(m).to_stanza(id: m.id, from: m.from)
 end
 
-def too_long_for_sms(m)
+def too_long_for_sms?(m)
 	# ~3 segments
 	m.body.length > (m.body.ascii_only? ? 160 : 70) * 3
 end
 
-message :body, method(:too_long_for_sms).to_proc, to: /\A\+?\d+@/ do |m|
+message :body, method(:too_long_for_sms?).to_proc, to: /\A\+?\d+@/ do |m|
 	self << OutgoingMMS.for(m).to_stanza(id: m.id, from: m.from)
 end