class Coolsms::Message

Constants

INVERTED_STATUSES
STATUSES

Attributes

send_api[R]
send_response[R]

Public Class Methods

new(attrs_hash = {}) click to toggle source
# File lib/coolsms/message.rb, line 15
def initialize(attrs_hash = {})
  @attributes = {}.with_indifferent_access
  assign_data(attrs_hash)
end

Public Instance Methods

accepted_at() click to toggle source
# File lib/coolsms/message.rb, line 69
def accepted_at; self[:accepted_at] end
api() click to toggle source
# File lib/coolsms/message.rb, line 25
def api
  return @api if @api
  raise Uninitialized, 'Message id not defined' if attributes[:id].blank?
  @api = Coolsms::RestApi::Sent.new
  @api.mid = id
  @api
end
assign_data(data_hash) click to toggle source
# File lib/coolsms/message.rb, line 48
def assign_data(data_hash)
  data_hash = data_hash.with_indifferent_access
  data_hash[:accepted_at] = Coolsms::TIMEZONE.parse(data_hash.delete(:accepted_time)) if data_hash[:accepted_time]
  data_hash[:sent_at] = Coolsms::TIMEZONE.parse(data_hash.delete(:sent_time)) if data_hash[:sent_time]
  data_hash[:scheduled_at] = Coolsms::TIMEZONE.parse(data_hash.delete(:scheduled_time)) if data_hash[:scheduled_time]
  data_hash[:status] = INVERTED_STATUSES[data_hash[:status]]
  attributes.update(data_hash)
end
carrier() click to toggle source
# File lib/coolsms/message.rb, line 76
def carrier; self[:carrier] end
from() click to toggle source
# File lib/coolsms/message.rb, line 21
def from; attributes[:from] || Coolsms.default_from end
from=(val) click to toggle source
# File lib/coolsms/message.rb, line 20
def from=(val); attributes[:from] = val end
group() click to toggle source
# File lib/coolsms/message.rb, line 64
def group
  Coolsms::Group.new(group_id)
end
group_id() click to toggle source
# File lib/coolsms/message.rb, line 71
def group_id; self[:group_id] end
recipient_number() click to toggle source
# File lib/coolsms/message.rb, line 70
def recipient_number; self[:recipient_number] end
result_code() click to toggle source
# File lib/coolsms/message.rb, line 72
def result_code; self[:result_code] end
result_message() click to toggle source
# File lib/coolsms/message.rb, line 73
def result_message; self[:result_message] end
retrieve() click to toggle source
Calls superclass method Coolsms::Base#retrieve
# File lib/coolsms/message.rb, line 57
def retrieve
  @response = api.call
  data = (@response.body[:data] && @response.body[:data].first) || {}
  assign_data(data)
  super
end
scheduled_at() click to toggle source
# File lib/coolsms/message.rb, line 77
def scheduled_at; self[:scheduled_at] end
send(*to) click to toggle source
# File lib/coolsms/message.rb, line 33
def send(*to)
  raise EmptyMessage if @attributes[:text].blank?
  raise AlreadySent if @send_api || retrieved
  if self[:text].bytes.size <= 90
    @send_api = Coolsms::RestApi::Send.new(self[:text], from ,to)
  else
    @send_api = Coolsms::RestApi::Send.new(self[:text], from, to)
    @send_api.subject = @attributes[:subject]
    @send_api.type = :LMS
  end
  @send_response = @send_api.call
  attributes[:group_id] = send_response.body['group_id']
  @send_response
end
sent_at() click to toggle source
# File lib/coolsms/message.rb, line 74
def sent_at; self[:sent_at] end
status() click to toggle source
# File lib/coolsms/message.rb, line 78
def status; self[:status] end
text() click to toggle source
# File lib/coolsms/message.rb, line 75
def text; self[:text] end
text=(val) click to toggle source
# File lib/coolsms/message.rb, line 23
def text=(val); attributes[:text] = val end
type() click to toggle source
# File lib/coolsms/message.rb, line 68
def type; self[:type] end