Convert long message to MMS

Stephen Paul Weber created

Change summary

Gemfile         |  2 ++
sgx-bwmsgsv2.rb | 16 ++++++++++++++--
2 files changed, 16 insertions(+), 2 deletions(-)

Detailed changes

Gemfile 🔗

@@ -11,6 +11,8 @@ gem 'eventmachine'
 gem 'goliath'
 gem 'lazy_object'
 gem 'log4r'
+gem 'multibases'
+gem 'multihashes'
 gem 'rack', '< 2'
 gem 'redis'
 gem "sentry-ruby", "<= 4.3.1"

sgx-bwmsgsv2.rb 🔗

@@ -23,6 +23,7 @@ require 'blather/client/dsl'
 require 'em-hiredis'
 require 'em-http-request'
 require 'json'
+require 'multihashes'
 require 'securerandom'
 require "sentry-ruby"
 require 'time'
@@ -310,13 +311,24 @@ module SGXbwmsgsv2
 	end
 
 	def self.to_catapult(s, murl, num_dest, user_id, token, secret, usern)
-		body = s.respond_to?(:body) ? s.body : ''
-		if murl.to_s.empty? && body.to_s.strip.empty?
+		body = s.respond_to?(:body) ? s.body.to_s : ''
+		if murl.to_s.empty? && body.strip.empty?
 			return EMPromise.reject(
 				[:modify, 'policy-violation']
 			)
 		end
 
+		segment_size = body.ascii_only? ? 160 : 70
+		if !murl && ENV["MMS_PATH"] && body.length > segment_size*3
+			file = Multibases.pack(
+				'base58btc',
+				Multihashes.encode(Digest::SHA256.digest(body), "sha2-256")
+			).to_s
+			File.open("#{ENV['MMS_PATH']}/#{file}", "w") { |fh| fh.write body }
+			murl = "#{ENV['MMS_URL']}/#{file}"
+			body = ""
+		end
+
 		extra = {}
 		extra[:media] = murl if murl