Class: Esendex::Client

Inherits:
Object
  • Object
show all
Includes:
Log4r
Defined in:
lib/esendex4soap.rb

Constant Summary collapse

INBOX_SERVICE_WSDL =
'https://www.esendex.com/secure/messenger/soap/InboxService.asmx?wsdl'
SEND_SERVICE_WSDL =
'https://www.esendex.com/secure/messenger/soap/SendService.asmx?wsdl'
ACCOUNT_SERVICE_WSDL =
'https://www.esendex.com/secure/messenger/soap/AccountService.asmx?wsdl'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Client

Returns a new instance of Client.



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/esendex4soap.rb', line 52

def initialize(*args)
  @username = args.shift
  @password = args.shift
  @account_reference = args.shift
  # @detectlanguage_api_key, @alchemyapi_api_key = args.shift, args.shift
  @sent_message_ids, @sent_message_statuses = [], {}

  @language = LanguageTools::DetectLanguageDotCom.new(args.shift)

  Savon.configure do |config|
    config.raise_errors = true
    config.log = false
    config.log_level = :error
    HTTPI.log = false
  end

  @log = Logger.new "#{self.class.name}"
  @log.outputters = Outputter.stdout
  @log.level = DEBUG #ERROR

  @message_kind = String.new

end

Instance Attribute Details

#account_referenceObject

Returns the value of attribute account_reference.



49
50
51
# File 'lib/esendex4soap.rb', line 49

def 
  @account_reference
end

#passwordObject

Returns the value of attribute password.



49
50
51
# File 'lib/esendex4soap.rb', line 49

def password
  @password
end

#sent_message_idsObject (readonly)

Returns the value of attribute sent_message_ids.



50
51
52
# File 'lib/esendex4soap.rb', line 50

def sent_message_ids
  @sent_message_ids
end

#sent_message_statusesObject (readonly)

Returns the value of attribute sent_message_statuses.



50
51
52
# File 'lib/esendex4soap.rb', line 50

def sent_message_statuses
  @sent_message_statuses
end

#usernameObject

Returns the value of attribute username.



49
50
51
# File 'lib/esendex4soap.rb', line 49

def username
  @username
end

Instance Method Details

#get_creditObject



104
105
106
107
108
109
110
111
112
# File 'lib/esendex4soap.rb', line 104

def get_credit
  client = Savon::Client.new(ACCOUNT_SERVICE_WSDL)
  #http://jira.codehaus.org/browse/JRUBY-5529 - jruby-openssl in --1.9 jruby mode
  client.http.auth.ssl.verify_mode=(:none)
  resp = client.request :com, :get_message_limit do |soap|
    soap.header["com:MessengerHeader"] = {"com:Username" => @username, "com:Password" => @password, "com:Account" => @account_reference}
  end
  resp.to_hash[:get_message_limit_response][:get_message_limit_result].to_s
end

#get_inbox_messagesObject



94
95
96
97
98
99
100
101
102
# File 'lib/esendex4soap.rb', line 94

def get_inbox_messages
  client = Savon::Client.new(INBOX_SERVICE_WSDL)
  #http://jira.codehaus.org/browse/JRUBY-5529 - jruby-openssl in --1.9 jruby mode
  client.http.auth.ssl.verify_mode=(:none)
  resp = client.request :com, :get_messages do |soap|
    soap.header["com:MessengerHeader"] = {"com:Username" => @username, "com:Password" => @password, "com:Account" => @account_reference}
  end
  resp[:get_messages_response][:get_messages_result][:message]
end

#get_status(*message_id) ⇒ Object



114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/esendex4soap.rb', line 114

def get_status(*message_id)
  connect unless @client

  if message_id.size > 1
    message_id.each do |id|
      resp = @client.request :com, :get_message_status do |soap|
        soap.header["com:MessengerHeader"] = {"com:Username" => @username, "com:Password" => @password, "com:Account" => @account_reference}
        soap.body = {"com:id" => id.to_s}
      end
      @sent_message_statuses[id] = resp.to_hash[:get_message_status_response][:get_message_status_result]
    end
  else
    resp = @client.request :com, :get_message_status do |soap|
      soap.header["com:MessengerHeader"] = {"com:Username" => @username, "com:Password" => @password, "com:Account" => @account_reference}
      soap.body = {"com:id" => message_id.first}
    end
    resp.to_hash[:get_message_status_response][:get_message_status_result]
  end
end

#send_message(recipient, text, originator, validityperiod) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/esendex4soap.rb', line 76

def send_message(recipient, text, originator, validityperiod)
  @log.debug "TO:#{recipient} text size:#{text.size} in #{@language.detect(text)} language"
  #TODO: handle other languages as well
  unless @language.detect(text) == 'ru'
    sms_parts = text.scan(/.{1,160}/mu)
    @log.debug "#{text[sms_parts.to_s.size..text.size]}"
    @message_kind = 'Text'
    @log.debug "#{@message_kind}:#{text.scan(/./mu)} = #{text.size}. #{sms_parts.size} part/s."
    sms(recipient, sms_parts, originator, validityperiod)
  else
    sms_parts = text.scan(/.{1,70}/mu)
    @log.debug "#{text[sms_parts.to_s.size..text.size]}"
    @message_kind = 'Unicode'
    @log.debug "#{@message_kind}:#{text.scan(/./mu)} != #{text.size}. #{sms_parts.size} part/s."
    sms(recipient, sms_parts, originator, validityperiod)
  end
end