Module: Smsinabox

Defined in:
lib/smsinabox.rb,
lib/smsinabox/sms.rb,
lib/smsinabox/reply.rb,
lib/smsinabox/message.rb,
lib/smsinabox/exceptions.rb,
lib/smsinabox/sent_message.rb,
lib/smsinabox/configuration.rb,
lib/smsinabox/delivery_report.rb

Defined Under Namespace

Classes: Configuration, DeliveryReport, Message, MessageInvalid, MissingCredentialException, Reply, SMS, SentMessage

Constant Summary collapse

VERSION =
'0.2.3'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.passwordObject

Password for the SMS in a Box service



31
32
33
# File 'lib/smsinabox.rb', line 31

def password
  @password
end

.usernameObject

Username for the SMS in a Box service



28
29
30
# File 'lib/smsinabox.rb', line 28

def username
  @username
end

Class Method Details

.configure!(config_file = nil) ⇒ Object

Set our username and password from #Smsinabox::Configuration



117
118
119
120
121
122
# File 'lib/smsinabox.rb', line 117

def configure!( config_file = nil )
  c = Configuration.new( config_file )
  @username = c["username"]
  @password = c["password"]
  nil
end

.credit_remainingObject Also known as: credits

Return the number of available credits



38
39
40
41
42
# File 'lib/smsinabox.rb', line 38

def credit_remaining
  perform_request( 'Type' => 'credits' ) do |xml|
    xml.xpath('/api_result/data/credits/text()').to_s.to_i
  end
end

.deliver(message) ⇒ Object

Send a #Messages and returns a #DelieryReport

Raises:



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/smsinabox.rb', line 46

def deliver( message )
  raise MessageInvalid unless message.valid?

  perform_request(
    'Type' => 'sendparam',
    'return_credits' => 'True',
    'return_msgs_success_count' => 'True',
    'return_msgs_failed_count' => 'True',
    'return_entries_success_status' => 'True',
    'return_entries_failed_status' => 'True',
    'numto' => message.recipient,
    'data1' => message.body
  ) do |response|
    DeliveryReport.from_response( response )
  end
end

.replies(last_id = 0, &block) ⇒ Object

Fetch replies from the gateway and then return a collection of replies or yield each reply if a block is given



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/smsinabox.rb', line 65

def replies( last_id = 0, &block )
  data = [
  "<reply>",
  "<settings>",
  "<id>#{last_id}</id>",
  "<max_recs>100</max_recs>",
  "<cols_returned>eventid,numfrom,receiveddata,received,sentid,sentdata,sentdatetime,sentcustomerid</cols_returned>",
  "</settings>",
  "</reply>"
  ]
  perform_request(
    'Type' => 'replies',
    'XMLData' => data.join
  ) do |response|
    replies = []
    response.xpath('/api_result/data').each do |reply|
      replies << Smsinabox::Reply.from_response( reply )
    end

    replies.each { |r| yield r } if block_given?

    replies
  end
end

.sent(last_id = 0, &block) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/smsinabox.rb', line 90

def sent( last_id = 0, &block )
  data = [
  "<sent>",
  "<settings>",
  "<id>#{last_id}</id>",
  "<max_recs>100</max_recs>",
  "<cols_returned>sentid,eventid,smstype,numto,data,flash,customerid,status,statusdate</cols_returned>",
  "</settings>",
  "</sent>"
  ]

  perform_request(
    'Type' => 'sent',
    'XMLData' => data.join
  ) do |response|
    messages = []
    response.xpath('/api_result/data').each do |msg|
      messages << Smsinabox::SentMessage.from_response( msg )
    end

    messages.each { |m| yield m } if block_given?

    messages
  end
end

.uriObject



33
34
35
# File 'lib/smsinabox.rb', line 33

def uri
  @uri ||= URI.parse('http://www.mymobileapi.com/api5/http5.aspx')
end