Skip to content

Instantly share code, notes, and snippets.

@sr3d
Created March 29, 2011 01:57
Show Gist options
  • Save sr3d/891685 to your computer and use it in GitHub Desktop.
Save sr3d/891685 to your computer and use it in GitHub Desktop.
Celltrust API Wrapper
module Celltrust
class Sms < Struct.new( :number, :message, :sms_id, :status )
@@count = 0
URL = 'https://www.primemessage.net/TxTNotify/SecureSMS'
def self.count
@@count
end
def initialize number, message
self.number = number
self.message = message
self.status = :not_sent
end
def deliver_sms
check_number
params = {
:Username => $SITE_CONFIG['celltrust_username'],
:Password => $SITE_CONFIG['celltrust_password'],
:SMSDestination => self.number,
:Message => self.message,
:AllowInsecure => true
}
self.sms_id = -1
begin
url = URI.parse URL
http = Net::HTTP.new url.host, url.port
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = http.request_post( url.path, params.to_query)
if /<MessageId>(.+?)<\/MessageId>/ =~ response.body
self.sms_id = Regexp.last_match(1)
self.status = :sent
@@count = (@@count || 0 )+ 1
end
rescue Exception => e
Rails.logger.debug 'Error sending SMS'
Rails.logger.debug e
end
return {"id" => self.sms_id }
end
def check_number
normalize_number
raise "Invalid number. Expect number begins with 1, e.g. 12223334444" unless /^1\d{10}$/ =~ number
end
def normalize_number
self.number = self.number.to_s
self.number.gsub! /\D/, ''
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment