require 'urbanairship' require 'json' module Urbanairship module Devices class MmsNotification include Urbanairship::Common include Urbanairship::Loggable attr_accessor :fallback_text, :shorten_links, :content_length, :content_type, :url, :text, :subject, :template_id, :slide_1_text def initialize(client: required('client')) @client = client end def validate_url unless ['.jpg', '.gif', '.png', 'jpeg'].include?(@url[-4..-1]) fail ArgumentError, 'url must end in .gif, .jpg, .png, or .jpeg' end end def mms_override fail ArgumentError, 'fallback_text is needed for MMS override' if fallback_text.nil? fail ArgumentError, 'content_length is needed for MMS override' if content_length.nil? fail ArgumentError, 'content_type is needed for MMS override' if content_type.nil? fail ArgumentError, 'url is needed for MMS override' if url.nil? validate_url override = {"mms": { "subject": subject, "fallback_text": fallback_text, "shorten_links": shorten_links, "slides": [ { "text": text, "media": { "url": url, "content_type": content_type, "content_length": content_length } } ] } } override end def mms_template_with_id fail ArgumentError, 'content_length is needed for MMS Inline Template with ID' if content_length.nil? fail ArgumentError, 'content_type is needed for MMS Inline Template with ID' if content_type.nil? fail ArgumentError, 'url is needed for MMS Inline Template with ID' if url.nil? fail ArgumentError, 'template_id is needed for MMS Inline Template with ID' if template_id.nil? {"mms": { "template": { "template_id": template_id }, "shorten_links": true, "slides": [ { "media": { "url": url, "content_type": content_type, "content_length": content_length } } ] } } end def mms_inline_template fail ArgumentError, 'slide_1_text text is needed for MMS with inline template' if text.nil? {"mms": { "template": { "fields": { "subject": subject, "fallback_text": fallback_text, "slide_1_text": text } }, "slides": [ { "media": { "url": url, "content_type": content_type, "content_length": content_length } } ] } } end end end end