anthill_smpp_ruby 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. data/MIT-LICENSE +21 -0
  2. data/README +30 -0
  3. data/anthill_smpp_ruby.gemspec +18 -0
  4. data/changelog +43 -0
  5. data/data/dumps/random_command.dump +1 -0
  6. data/data/dumps/smpp_alert_notification.dump +1 -0
  7. data/data/dumps/smpp_bind_receiver.dump +1 -0
  8. data/data/dumps/smpp_bind_receiver_resp.dump +1 -0
  9. data/data/dumps/smpp_bind_transceiver.dump +1 -0
  10. data/data/dumps/smpp_bind_transceiver_1.dump +2 -0
  11. data/data/dumps/smpp_bind_transceiver_resp.dump +1 -0
  12. data/data/dumps/smpp_bind_transmitter.dump +1 -0
  13. data/data/dumps/smpp_bind_transmitter_resp.dump +1 -0
  14. data/data/dumps/smpp_broadcast_sm.dump +1 -0
  15. data/data/dumps/smpp_broadcast_sm_resp.dump +1 -0
  16. data/data/dumps/smpp_cancel_broadcast_sm.dump +1 -0
  17. data/data/dumps/smpp_cancel_broadcast_sm_resp.dump +1 -0
  18. data/data/dumps/smpp_cancel_sm.dump +1 -0
  19. data/data/dumps/smpp_cancel_sm_resp.dump +1 -0
  20. data/data/dumps/smpp_data_sm.dump +1 -0
  21. data/data/dumps/smpp_data_sm_resp.dump +1 -0
  22. data/data/dumps/smpp_deliver_sm.dump +1 -0
  23. data/data/dumps/smpp_deliver_sm_resp.dump +1 -0
  24. data/data/dumps/smpp_enquire_link.dump +1 -0
  25. data/data/dumps/smpp_enquire_link_resp.dump +1 -0
  26. data/data/dumps/smpp_generic_nack.dump +1 -0
  27. data/data/dumps/smpp_outbind.dump +1 -0
  28. data/data/dumps/smpp_query_broadcast_sm.dump +1 -0
  29. data/data/dumps/smpp_query_broadcast_sm_resp.dump +1 -0
  30. data/data/dumps/smpp_query_broadcast_sm_resp_1.dump +1 -0
  31. data/data/dumps/smpp_query_sm.dump +1 -0
  32. data/data/dumps/smpp_query_sm_resp.dump +1 -0
  33. data/data/dumps/smpp_replace_sm.dump +1 -0
  34. data/data/dumps/smpp_replace_sm_resp.dump +1 -0
  35. data/data/dumps/smpp_submit_multi.dump +1 -0
  36. data/data/dumps/smpp_submit_multi_resp.dump +1 -0
  37. data/data/dumps/smpp_submit_sm.dump +1 -0
  38. data/data/dumps/smpp_submit_sm_resp.dump +1 -0
  39. data/data/dumps/smpp_unbind.dump +1 -0
  40. data/data/dumps/smpp_unbind_resp.dump +1 -0
  41. data/data/pdus/random_command.xml +35 -0
  42. data/data/pdus/smpp_alert_notification.xml +14 -0
  43. data/data/pdus/smpp_alert_notification_no_optional.xml +13 -0
  44. data/data/pdus/smpp_bind_receiver.xml +17 -0
  45. data/data/pdus/smpp_bind_receiver_resp.xml +12 -0
  46. data/data/pdus/smpp_bind_receiver_resp_no_optional.xml +11 -0
  47. data/data/pdus/smpp_bind_transceiver.xml +17 -0
  48. data/data/pdus/smpp_bind_transceiver_resp.xml +12 -0
  49. data/data/pdus/smpp_bind_transceiver_resp_no_optional.xml +11 -0
  50. data/data/pdus/smpp_bind_transmitter.xml +17 -0
  51. data/data/pdus/smpp_bind_transmitter_resp.xml +12 -0
  52. data/data/pdus/smpp_bind_transmitter_resp_no_optional.xml +11 -0
  53. data/data/pdus/smpp_broadcast_sm.xml +47 -0
  54. data/data/pdus/smpp_broadcast_sm_no_optional.xml +26 -0
  55. data/data/pdus/smpp_broadcast_sm_resp.xml +14 -0
  56. data/data/pdus/smpp_broadcast_sm_resp_no_optional.xml +8 -0
  57. data/data/pdus/smpp_cancel_broadcast_sm.xml +17 -0
  58. data/data/pdus/smpp_cancel_broadcast_sm_no_optional.xml +15 -0
  59. data/data/pdus/smpp_cancel_broadcast_sm_resp.xml +7 -0
  60. data/data/pdus/smpp_cancel_sm.xml +18 -0
  61. data/data/pdus/smpp_cancel_sm_resp.xml +10 -0
  62. data/data/pdus/smpp_commands.xsd +914 -0
  63. data/data/pdus/smpp_data_sm.xml +58 -0
  64. data/data/pdus/smpp_data_sm_no_optional.xml +17 -0
  65. data/data/pdus/smpp_data_sm_resp.xml +15 -0
  66. data/data/pdus/smpp_data_sm_resp_no_optional.xml +8 -0
  67. data/data/pdus/smpp_deliver_sm.xml +46 -0
  68. data/data/pdus/smpp_deliver_sm_no_optional.xml +25 -0
  69. data/data/pdus/smpp_deliver_sm_resp.xml +14 -0
  70. data/data/pdus/smpp_deliver_sm_resp_no_optional.xml +8 -0
  71. data/data/pdus/smpp_enquire_link.xml +10 -0
  72. data/data/pdus/smpp_enquire_link_resp.xml +10 -0
  73. data/data/pdus/smpp_generic_nack.xml +10 -0
  74. data/data/pdus/smpp_outbind.xml +12 -0
  75. data/data/pdus/smpp_query_broadcast_sm.xml +12 -0
  76. data/data/pdus/smpp_query_broadcast_sm_no_optional.xml +11 -0
  77. data/data/pdus/smpp_query_broadcast_sm_resp.xml +17 -0
  78. data/data/pdus/smpp_query_broadcast_sm_resp_no_optional.xml +15 -0
  79. data/data/pdus/smpp_query_sm.xml +11 -0
  80. data/data/pdus/smpp_query_sm_resp.xml +11 -0
  81. data/data/pdus/smpp_replace_sm.xml +18 -0
  82. data/data/pdus/smpp_replace_sm_no_optional.xml +17 -0
  83. data/data/pdus/smpp_replace_sm_resp.xml +7 -0
  84. data/data/pdus/smpp_submit_multi.xml +73 -0
  85. data/data/pdus/smpp_submit_multi_no_optional.xml +51 -0
  86. data/data/pdus/smpp_submit_multi_resp.xml +35 -0
  87. data/data/pdus/smpp_submit_sm.xml +57 -0
  88. data/data/pdus/smpp_submit_sm_no_optional.xml +28 -0
  89. data/data/pdus/smpp_submit_sm_resp.xml +8 -0
  90. data/data/pdus/smpp_unbind.xml +10 -0
  91. data/data/pdus/smpp_unbind_resp.xml +10 -0
  92. data/examples/dump_viewer.rb +298 -0
  93. data/examples/pdu_composer.rb +1331 -0
  94. data/knownbugs +24 -0
  95. data/lib/anthill_smpp_ruby.rb +83 -0
  96. data/lib/i_smpp_outputter.rb +425 -0
  97. data/lib/pdu/smpp_alert_notification.rb +132 -0
  98. data/lib/pdu/smpp_bind.rb +102 -0
  99. data/lib/pdu/smpp_bind_receiver.rb +29 -0
  100. data/lib/pdu/smpp_bind_receiver_resp.rb +30 -0
  101. data/lib/pdu/smpp_bind_resp.rb +100 -0
  102. data/lib/pdu/smpp_bind_transceiver.rb +29 -0
  103. data/lib/pdu/smpp_bind_transceiver_resp.rb +31 -0
  104. data/lib/pdu/smpp_bind_transmitter.rb +29 -0
  105. data/lib/pdu/smpp_bind_transmitter_resp.rb +30 -0
  106. data/lib/pdu/smpp_broadcast_sm.rb +566 -0
  107. data/lib/pdu/smpp_broadcast_sm_resp.rb +130 -0
  108. data/lib/pdu/smpp_cancel_broadcast_sm.rb +143 -0
  109. data/lib/pdu/smpp_cancel_broadcast_sm_resp.rb +60 -0
  110. data/lib/pdu/smpp_cancel_sm.rb +110 -0
  111. data/lib/pdu/smpp_cancel_sm_resp.rb +60 -0
  112. data/lib/pdu/smpp_data_sm.rb +679 -0
  113. data/lib/pdu/smpp_data_sm_resp.rb +148 -0
  114. data/lib/pdu/smpp_deliver_sm.rb +458 -0
  115. data/lib/pdu/smpp_deliver_sm_resp.rb +137 -0
  116. data/lib/pdu/smpp_enquire_link.rb +59 -0
  117. data/lib/pdu/smpp_enquire_link_resp.rb +61 -0
  118. data/lib/pdu/smpp_generic_nack.rb +61 -0
  119. data/lib/pdu/smpp_outbind.rb +71 -0
  120. data/lib/pdu/smpp_pdu.rb +90 -0
  121. data/lib/pdu/smpp_query_broadcast_sm.rb +120 -0
  122. data/lib/pdu/smpp_query_broadcast_sm_resp.rb +192 -0
  123. data/lib/pdu/smpp_query_sm.rb +92 -0
  124. data/lib/pdu/smpp_query_sm_resp.rb +92 -0
  125. data/lib/pdu/smpp_replace_sm.rb +172 -0
  126. data/lib/pdu/smpp_replace_sm_resp.rb +61 -0
  127. data/lib/pdu/smpp_resp.rb +40 -0
  128. data/lib/pdu/smpp_submit_multi.rb +517 -0
  129. data/lib/pdu/smpp_submit_multi_resp.rb +90 -0
  130. data/lib/pdu/smpp_submit_sm.rb +591 -0
  131. data/lib/pdu/smpp_submit_sm_resp.rb +72 -0
  132. data/lib/pdu/smpp_unbind.rb +60 -0
  133. data/lib/pdu/smpp_unbind_resp.rb +61 -0
  134. data/lib/smpp_constants.rb +917 -0
  135. data/lib/smpp_csv_outputter.rb +1601 -0
  136. data/lib/smpp_datatypes.rb +89 -0
  137. data/lib/smpp_decoder.rb +627 -0
  138. data/lib/smpp_encoder.rb +495 -0
  139. data/lib/smpp_hex_outputter.rb +36 -0
  140. data/lib/smpp_outputter_base.rb +315 -0
  141. data/lib/smpp_structures.rb +98 -0
  142. data/lib/smpp_txt_outputter.rb +1895 -0
  143. data/lib/smpp_validator.rb +373 -0
  144. data/lib/smpp_xml_outputter.rb +34 -0
  145. data/roadmap +18 -0
  146. data/setup.rb +1585 -0
  147. data/test/anthill_smpp_test.rb +29 -0
  148. data/test/smpp_codec_test.rb +30 -0
  149. data/test/smpp_datatypes_test.rb +69 -0
  150. data/test/smpp_outputter_test.rb +1261 -0
  151. data/test/smpp_parsing_test.rb +1758 -0
  152. data/test/smpp_rawdump_test.rb +2095 -0
  153. data/test/smpp_validator_test.rb +441 -0
  154. metadata +206 -0
@@ -0,0 +1,1331 @@
1
+ #!/usr/bin/ruby
2
+ # == Synopsis
3
+ # SMPP PDU composer.
4
+ #
5
+ # == Examples
6
+ # This command decode SMPP package and output it.
7
+ # pdu_composer --pdufile pdu.xml
8
+ #
9
+ # Other examples:
10
+ # pdu_composer --verbose --pdufile pdu.xml
11
+ #
12
+ # == Usage
13
+ # pdu_composer [options]
14
+ #
15
+ # For help use: pdu_composer -h
16
+ #
17
+ # == Options
18
+ # -h, --help Displays help message
19
+ # -v, --version Display the version, then exit
20
+ # -q, --quiet Output as little as possible, overrides verbose
21
+ # -V, --verbose Verbose output
22
+ # -f, --pdufile Path to file with SMPP command
23
+ #
24
+ # == Author
25
+ # Majoron
26
+ #
27
+ # == Copyright
28
+ # Copyright 2007 Majoron.com (developers@majoron.com)
29
+ # Original sources are available at www.majoron.com
30
+ #
31
+ # Licensed under the Apache License, Version 2.0 (the "License");
32
+ # you may not use this file except in compliance with the License.
33
+ # You may obtain a copy of the License at
34
+ #
35
+ # http://www.apache.org/licenses/LICENSE-2.0
36
+ #
37
+ # Unless required by applicable law or agreed to in writing, software
38
+ # distributed under the License is distributed on an "AS IS" BASIS,
39
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
40
+ # See the License for the specific language governing permissions and
41
+ # limitations under the License.
42
+ #
43
+
44
+ $:.unshift File.dirname(__FILE__) + '/../lib/'
45
+ $:.unshift File.dirname(__FILE__) + '/../lib/' + '/../../../AntHill/0.5/lib/'
46
+
47
+
48
+ # Include necessary libraries
49
+ require "rexml/document"
50
+ require "optparse"
51
+ require "rdoc/usage"
52
+ require "ostruct"
53
+ require "date"
54
+
55
+ # Include anthill library
56
+ require "anthill"
57
+ require "anthill_smpp"
58
+
59
+
60
+ #
61
+ class PDUComposer
62
+ # Module contains error messages
63
+ module Errors
64
+ UNABLE_TO_OPEN_FILE = "Unable to open file."
65
+ INVALID_COMMAND_ID = "Unknown PDU command id."
66
+ INVALID_DEST_FLAG = "Unknown destination flag for submit multi, xml is not according xsd schema."
67
+ MORE_THAN_ONE_PACKAGE = "Dump contains a valid SMPP package and extra dump information."
68
+ UNSUPPORTABLE_OUTPUTTER = "Unsupportable outputter. Supportable are: txt, csv, hex and xml."
69
+ INVALID_XML_FILE = "XML file is not valid according to XSD schema."
70
+ end
71
+
72
+ # Constructor
73
+ def initialize(arguments, stdin)
74
+ @arguments = arguments
75
+ @stdin = stdin
76
+
77
+ # Set defaults
78
+ @options = OpenStruct.new
79
+ @options.verbose = false
80
+ @options.quiet = false
81
+ @options.pdufile = "pdu.xml"
82
+
83
+ # Set accessors
84
+ @document = nil
85
+ @package = nil
86
+ @buffer = ""
87
+ end
88
+
89
+ # Entry point to run application
90
+ def run_application
91
+ if parsed_options? && arguments_valid?
92
+ output_options if @options.verbose # [Optional]
93
+ process_arguments
94
+ process_application
95
+ else
96
+ output_usage
97
+ end
98
+ end
99
+
100
+ # Public accessors
101
+ attr_reader :options
102
+
103
+ protected
104
+ def parsed_options?
105
+ # Specify options
106
+ opts = OptionParser.new
107
+ opts.on('-v', '--version') { output_version ; exit 0 }
108
+ opts.on('-h', '--help') { output_help }
109
+ opts.on('-V', '--verbose') { @options.verbose = true }
110
+ opts.on('-q', '--quiet') { @options.quiet = true }
111
+
112
+ # Get a dumpfile
113
+ opts.on("-f", "--pdufile PDUFILE", "Path to file with SMPP command") do |pdu|
114
+ @options.pdufile = pdu
115
+ end
116
+
117
+ opts.parse!(@arguments) rescue return false
118
+ process_options
119
+ true
120
+
121
+ end
122
+
123
+ # Performs post-parse processing on options
124
+ def process_options
125
+ @options.verbose = false if @options.quiet
126
+ end
127
+
128
+ def output_options
129
+ puts "Options:\n"
130
+ @options.marshal_dump.each do |name, val|
131
+ puts " #{name} = #{val}"
132
+ end
133
+ end
134
+
135
+ # True if required arguments were provided
136
+ def arguments_valid?
137
+ return false if @options.pdufile.nil?
138
+ true
139
+ end
140
+
141
+ # Setup the arguments
142
+ def process_arguments
143
+ # Place in local vars, etc
144
+ end
145
+
146
+ def output_help
147
+ output_version
148
+ RDoc::usage() #exits app
149
+ end
150
+
151
+ def output_usage
152
+ RDoc::usage('usage') # gets usage from comments above
153
+ end
154
+
155
+ def output_version
156
+ puts "#{File.basename(__FILE__)} version #{VERSION}"
157
+ end
158
+
159
+ def process_application
160
+ begin
161
+ build_dom_document()
162
+
163
+ create_smpp_command()
164
+
165
+ encode_smpp_command()
166
+
167
+ output_byte_buffer()
168
+
169
+ rescue Exception => e
170
+ puts e
171
+ end
172
+ end
173
+
174
+ def build_dom_document
175
+ file = File.new(@options.pdufile, "r")
176
+ raise Errors::UNABLE_TO_OPEN_FILE if file.nil?
177
+ begin
178
+ @document = REXML::Document.new(file)
179
+ file.close()
180
+ rescue RuntimeError => e
181
+ file.close()
182
+ raise
183
+ end
184
+ end
185
+
186
+
187
+ def create_smpp_command
188
+ if !REXML::XPath.first(@document, "//smpp_alert_notification").nil?
189
+ encode_alert_notification()
190
+ elsif !REXML::XPath.first(@document, "//smpp_bind_receiver").nil?
191
+ encode_bind_receiver()
192
+ elsif !REXML::XPath.first(@document, "//smpp_bind_receiver_resp").nil?
193
+ encode_bind_receiver_resp
194
+ elsif !REXML::XPath.first(@document, "//smpp_bind_transceiver").nil?
195
+ encode_bind_transceiver
196
+ elsif !REXML::XPath.first(@document, "//smpp_bind_transceiver_resp").nil?
197
+ encode_bind_transceiver_resp
198
+ elsif !REXML::XPath.first(@document, "//smpp_bind_transmitter").nil?
199
+ encode_bind_transmitter()
200
+ elsif !REXML::XPath.first(@document, "//smpp_bind_transmitter_resp").nil?
201
+ encode_bind_transmitter_resp()
202
+ elsif !REXML::XPath.first(@document, "//smpp_broadcast_sm").nil?
203
+ encode_broadcast_sm()
204
+ elsif !REXML::XPath.first(@document, "//smpp_broadcast_sm_resp").nil?
205
+ encode_broadcast_sm_resp()
206
+ elsif !REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm").nil?
207
+ encode_cancel_broadcast_sm()
208
+ elsif !REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm_resp").nil?
209
+ encode_cancel_broadcast_sm_resp()
210
+ elsif !REXML::XPath.first(@document, "//smpp_cancel_sm").nil?
211
+ encode_cancel_sm()
212
+ elsif !REXML::XPath.first(@document, "//smpp_cancel_sm_resp").nil?
213
+ encode_cancel_sm_resp()
214
+ elsif !REXML::XPath.first(@document, "//smpp_data_sm").nil?
215
+ encode_data_sm()
216
+ elsif !REXML::XPath.first(@document, "//smpp_data_sm_resp").nil?
217
+ encode_data_sm_resp()
218
+ elsif !REXML::XPath.first(@document, "//smpp_deliver_sm").nil?
219
+ encode_deliver_sm()
220
+ elsif !REXML::XPath.first(@document, "//smpp_deliver_sm_resp").nil?
221
+ encode_deliver_sm_resp()
222
+ elsif !REXML::XPath.first(@document, "//smpp_enquire_link").nil?
223
+ encode_enquire_link()
224
+ elsif !REXML::XPath.first(@document, "//smpp_enquire_link_resp").nil?
225
+ encode_enquire_link_resp()
226
+ elsif !REXML::XPath.first(@document, "//smpp_generic_nack").nil?
227
+ encode_generic_nack()
228
+ elsif !REXML::XPath.first(@document, "//smpp_outbind").nil?
229
+ encode_outbind()
230
+ elsif !REXML::XPath.first(@document, "//smpp_query_broadcast_sm").nil?
231
+ encode_query_broadcast_sm()
232
+ elsif !REXML::XPath.first(@document, "//smpp_query_broadcast_sm_resp").nil?
233
+ encode_query_broadcast_sm_resp()
234
+ elsif !REXML::XPath.first(@document, "//smpp_query_sm").nil?
235
+ encode_query_sm()
236
+ elsif !REXML::XPath.first(@document, "//smpp_query_sm_resp").nil?
237
+ encode_query_sm_resp()
238
+ elsif !REXML::XPath.first(@document, "//smpp_replace_sm").nil?
239
+ encode_replace_sm()
240
+ elsif !REXML::XPath.first(@document, "//smpp_replace_sm_resp").nil?
241
+ encode_replace_sm_resp()
242
+ elsif !REXML::XPath.first(@document, "//smpp_submit_multi").nil?
243
+ encode_submit_multi()
244
+ elsif !REXML::XPath.first(@document, "//smpp_submit_multi_resp").nil?
245
+ encode_submit_multi_resp()
246
+ elsif !REXML::XPath.first(@document, "//smpp_submit_sm").nil?
247
+ encode_submit_sm()
248
+ elsif !REXML::XPath.first(@document, "//smpp_submit_sm_resp").nil?
249
+ encode_submit_sm_resp()
250
+ elsif !REXML::XPath.first(@document, "//smpp_unbind").nil?
251
+ encode_unbind()
252
+ elsif !REXML::XPath.first(@document, "//smpp_unbind_resp").nil?
253
+ encode_unbind_resp()
254
+ else
255
+ pust Errors::INVALID_COMMAND_ID
256
+ end
257
+
258
+ end
259
+
260
+ def encode_alert_notification
261
+ begin
262
+ @package = AntHill::SMPP::SMPPAlertNotification.new()
263
+ @package.command_status = REXML::XPath.first(@document, "//smpp_alert_notification/command_status/").text.to_i
264
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_alert_notification/sequence_number/").text.to_i
265
+ @package.source_addr_ton = REXML::XPath.first(@document, "//smpp_alert_notification/source_addr_ton/").text.to_i
266
+ @package.source_addr_npi = REXML::XPath.first(@document, "//smpp_alert_notification/source_addr_npi/").text.to_i
267
+ @package.source_addr = REXML::XPath.first(@document, "//smpp_alert_notification/source_addr/").text
268
+ @package.esme_addr_ton = REXML::XPath.first(@document, "//smpp_alert_notification/esme_addr_ton/").text.to_i
269
+ @package.esme_addr_npi = REXML::XPath.first(@document, "//smpp_alert_notification/esme_addr_npi/").text.to_i
270
+ @package.esme_addr = REXML::XPath.first(@document, "//smpp_alert_notification/esme_addr/").text
271
+
272
+ # Set optional fields
273
+ node = REXML::XPath.first(@document, "//smpp_alert_notification/ms_availability_status/")
274
+ @package.ms_availability_status = node.text.to_i if !node.nil?
275
+ rescue Exception => e
276
+ raise Errors::INVALID_XML_FILE
277
+ end
278
+ end
279
+
280
+ def encode_bind_receiver
281
+ begin
282
+ @package = AntHill::SMPP::SMPPBindReceiver.new()
283
+ @package.command_status = REXML::XPath.first(@document, "//smpp_bind_receiver/command_status/").text.to_i
284
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_bind_receiver/sequence_number/").text.to_i
285
+ @package.system_id = REXML::XPath.first(@document, "//smpp_bind_receiver/system_id/").text
286
+ @package.password = REXML::XPath.first(@document, "//smpp_bind_receiver/password/").text
287
+ @package.system_type = REXML::XPath.first(@document, "//smpp_bind_receiver/system_type/").text
288
+ @package.interface_version = REXML::XPath.first(@document, "//smpp_bind_receiver/interface_version/").text.to_i
289
+ @package.addr_ton = REXML::XPath.first(@document, "//smpp_bind_receiver/addr_ton/").text.to_i
290
+ @package.addr_npi = REXML::XPath.first(@document, "//smpp_bind_receiver/addr_npi/").text.to_i
291
+ @package.address_range = REXML::XPath.first(@document, "//smpp_bind_receiver/address_range/").text
292
+ rescue Exception => e
293
+ raise Errors::INVALID_XML_FILE
294
+ end
295
+ end
296
+
297
+ def encode_bind_receiver_resp
298
+ begin
299
+ @package = AntHill::SMPP::SMPPBindReceiverResp.new()
300
+ @package.command_status = REXML::XPath.first(@document, "//smpp_bind_receiver_resp/command_status/").text.to_i
301
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_bind_receiver_resp/sequence_number/").text.to_i
302
+ @package.system_id = REXML::XPath.first(@document, "//smpp_bind_receiver_resp/system_id /").text
303
+
304
+ # Set optional fields
305
+ node = REXML::XPath.first(@document, "//smpp_bind_receiver_resp/sc_interface_version/")
306
+ @package.sc_interface_version= node.text.to_i if !node.nil?
307
+ rescue Exception => e
308
+ raise Errors::INVALID_XML_FILE
309
+ end
310
+ end
311
+
312
+ def encode_bind_transceiver
313
+ begin
314
+ @package = AntHill::SMPP::SMPPBindTransceiver.new()
315
+ @package.command_status = REXML::XPath.first(@document, "//smpp_bind_transceiver/command_status/").text.to_i
316
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_bind_transceiver/sequence_number/").text.to_i
317
+ @package.system_id = REXML::XPath.first(@document, "//smpp_bind_transceiver/system_id/").text
318
+ @package.password = REXML::XPath.first(@document, "//smpp_bind_transceiver/password/").text
319
+ @package.system_type = REXML::XPath.first(@document, "//smpp_bind_transceiver/system_type/").text
320
+ @package.interface_version = REXML::XPath.first(@document, "//smpp_bind_transceiver/interface_version/").text.to_i
321
+ @package.addr_ton = REXML::XPath.first(@document, "//smpp_bind_transceiver/addr_ton/").text.to_i
322
+ @package.addr_npi = REXML::XPath.first(@document, "//smpp_bind_transceiver/addr_npi/").text.to_i
323
+ @package.address_range = REXML::XPath.first(@document, "//smpp_bind_transceiver/address_range/").text
324
+ rescue Exception => e
325
+ raise Errors::INVALID_XML_FILE
326
+ end
327
+ end
328
+
329
+ def encode_bind_transceiver_resp
330
+ begin
331
+ @package = AntHill::SMPP::SMPPBindTransceiverResp.new()
332
+ @package.command_status = REXML::XPath.first(@document, "//smpp_bind_transceiver_resp/command_status/").text.to_i
333
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_bind_transceiver_resp/sequence_number/").text.to_i
334
+ @package.system_id = REXML::XPath.first(@document, "//smpp_bind_transceiver_resp/system_id /").text
335
+
336
+ # Set optional fields
337
+ node = REXML::XPath.first(@document, "//smpp_bind_transceiver_resp/sc_interface_version/")
338
+ @package.sc_interface_version= node.text.to_i if !node.nil?
339
+ rescue Exception => e
340
+ raise Errors::INVALID_XML_FILE
341
+ end
342
+ end
343
+
344
+ def encode_bind_transmitter
345
+ begin
346
+ @package = AntHill::SMPP::SMPPBindTransmitter.new()
347
+ @package.command_status = REXML::XPath.first(@document, "//smpp_bind_transmitter/command_status/").text.to_i
348
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_bind_transmitter/sequence_number/").text.to_i
349
+ @package.system_id = REXML::XPath.first(@document, "//smpp_bind_transmitter/system_id/").text
350
+ @package.password = REXML::XPath.first(@document, "//smpp_bind_transmitter/password/").text
351
+ @package.system_type = REXML::XPath.first(@document, "//smpp_bind_transmitter/system_type/").text
352
+ @package.interface_version = REXML::XPath.first(@document, "//smpp_bind_transmitter/interface_version/").text.to_i
353
+ @package.addr_ton = REXML::XPath.first(@document, "//smpp_bind_transmitter/addr_ton/").text.to_i
354
+ @package.addr_npi = REXML::XPath.first(@document, "//smpp_bind_transmitter/addr_npi/").text.to_i
355
+ @package.address_range = REXML::XPath.first(@document, "//smpp_bind_transmitter/address_range/").text
356
+ rescue Exception => e
357
+ raise Errors::INVALID_XML_FILE
358
+ end
359
+ end
360
+
361
+ def encode_bind_transmitter_resp
362
+ begin
363
+ @package = AntHill::SMPP::SMPPBindTransmitterResp.new()
364
+ @package.command_status = REXML::XPath.first(@document, "//smpp_bind_transmitter_resp/command_status/").text.to_i
365
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_bind_transmitter_resp/sequence_number/").text.to_i
366
+ @package.system_id = REXML::XPath.first(@document, "//smpp_bind_transmitter_resp/system_id /").text
367
+
368
+ # Set optional fields
369
+ node = REXML::XPath.first(@document, "//smpp_bind_transmitter_resp/sc_interface_version/")
370
+ @package.sc_interface_version= node.text.to_i if !node.nil?
371
+ rescue Exception => e
372
+ raise Errors::INVALID_XML_FILE
373
+ end
374
+ end
375
+
376
+ def encode_broadcast_sm
377
+ begin
378
+ @package = AntHill::SMPP::SMPPBroadcastSM.new()
379
+ @package.command_status = REXML::XPath.first(@document, "//smpp_broadcast_sm/command_status/").text.to_i
380
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_broadcast_sm/sequence_number/").text.to_i
381
+ @package.service_type = REXML::XPath.first(@document, "//smpp_broadcast_sm/service_type/").text
382
+ @package.source_addr_ton = REXML::XPath.first(@document, "//smpp_broadcast_sm/source_addr_ton/").text.to_i
383
+ @package.source_addr_npi = REXML::XPath.first(@document, "//smpp_broadcast_sm/source_addr_npi/").text.to_i
384
+ @package.source_addr = REXML::XPath.first(@document, "//smpp_broadcast_sm/source_addr/").text
385
+ @package.message_id = REXML::XPath.first(@document, "//smpp_broadcast_sm/message_id/").text
386
+ @package.priority_flag = REXML::XPath.first(@document, "//smpp_broadcast_sm/priority_flag/").text.to_i
387
+ @package.schedule_delivery_time = REXML::XPath.first(@document, "//smpp_broadcast_sm/schedule_delivery_time/").text
388
+ @package.schedule_delivery_time = "" if @package.schedule_delivery_time.nil?
389
+ @package.validity_period = REXML::XPath.first(@document, "//smpp_broadcast_sm/validity_period/").text
390
+ @package.validity_period = "" if @package.validity_period.nil?
391
+ @package.replace_if_present_flag = REXML::XPath.first(@document, "//smpp_broadcast_sm/replace_if_present_flag/").text.to_i
392
+ @package.data_coding = REXML::XPath.first(@document, "//smpp_broadcast_sm/data_coding/").text.to_i
393
+ @package.sm_default_msg_id = REXML::XPath.first(@document, "//smpp_broadcast_sm/sm_default_msg_id/").text.to_i
394
+ baids = @document.elements.to_a("//smpp_broadcast_sm/broadcast_area_identifiers/broadcast_area_identifier/")
395
+
396
+ broadcast_area_identifier = []
397
+ 0.upto baids.size() - 1 do | i |
398
+ data = AntHill::ByteBuffer.decode_hex(baids[i].text)
399
+ broadcast_area_identifier << AntHill::SMPP::BroadcastAreaIdentifier.new(data)
400
+ end
401
+ @package.broadcast_area_identifier = broadcast_area_identifier
402
+
403
+ @package.broadcast_content_type = AntHill::ByteBuffer.decode_hex(REXML::XPath.first(@document, "//smpp_broadcast_sm/broadcast_content_type/").text)
404
+ @package.broadcast_rep_num = REXML::XPath.first(@document, "//smpp_broadcast_sm/broadcast_rep_num/").text.to_i
405
+ @package.broadcast_frequency_interval = AntHill::ByteBuffer.decode_hex( REXML::XPath.first(@document, "//smpp_broadcast_sm/broadcast_frequency_interval/").text)
406
+
407
+ # Optional fields
408
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/alert_on_msg_delivery/")
409
+ @package.alert_on_msg_delivery = node.text.to_i if !node.nil?
410
+
411
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/broadcast_channel_indicator/")
412
+ @package.broadcast_channel_indicator = node.text.to_i if !node.nil?
413
+
414
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/broadcast_content_type_info/")
415
+ @package.broadcast_content_type_info = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
416
+
417
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/broadcast_message_class/")
418
+ @package.broadcast_message_class = node.text.to_i if !node.nil?
419
+
420
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/broadcast_service_group/")
421
+ @package.broadcast_service_group = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
422
+
423
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/callback_num/")
424
+ @package.callback_num = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
425
+
426
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/callback_num_pres_ind/")
427
+ @package.callback_num_pres_ind = node.text.to_i if !node.nil?
428
+
429
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/callback_num_atag/")
430
+ @package.callback_num_atag = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
431
+
432
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/dest_subaddress/")
433
+ @package.dest_subaddress = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
434
+
435
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/dest_port/")
436
+ @package.dest_port = node.text.to_i if !node.nil?
437
+
438
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/display_time/")
439
+ @package.display_time = node.text.to_i if !node.nil?
440
+
441
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/language_indicator/")
442
+ @package.language_indicator = node.text.to_i if !node.nil?
443
+
444
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/message_payload/")
445
+ @package.message_payload = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
446
+
447
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/ms_validity/")
448
+ @package.ms_validity = node.text.to_i if !node.nil?
449
+
450
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/payload_type/")
451
+ @package.payload_type = node.text.to_i if !node.nil?
452
+
453
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/privacy_indicator/")
454
+ @package.privacy_indicator = node.text.to_i if !node.nil?
455
+
456
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/sms_signal/")
457
+ @package.sms_signal = node.text.to_i if !node.nil?
458
+
459
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/source_addr_subunit/")
460
+ @package.source_addr_subunit = node.text.to_i if !node.nil?
461
+
462
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/source_port/")
463
+ @package.source_port = node.text.to_i if !node.nil?
464
+
465
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/source_subaddress/")
466
+ @package.source_subaddress = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
467
+
468
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm/user_message_reference/")
469
+ @package.user_message_reference = node.text.to_i if !node.nil?
470
+ rescue Exception => e
471
+ raise Errors::INVALID_XML_FILE
472
+ end
473
+ end
474
+
475
+ def encode_broadcast_sm_resp
476
+ begin
477
+ @package = AntHill::SMPP::SMPPBroadcastSMResp.new()
478
+ @package.command_status = REXML::XPath.first(@document, "//smpp_broadcast_sm_resp/command_status/").text.to_i
479
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_broadcast_sm_resp/sequence_number/").text.to_i
480
+ @package.message_id = REXML::XPath.first(@document, "//smpp_broadcast_sm_resp/message_id/").text
481
+
482
+ # Optional fields
483
+ node = REXML::XPath.first(@document, "//smpp_broadcast_sm_resp/broadcast_error_status/")
484
+ @package.broadcast_error_status = node.text.to_i if !node.nil?
485
+
486
+ baids = @document.elements.to_a("//smpp_broadcast_sm_resp/failed_broadcast_area_identifiers/broadcast_area_identifier/")
487
+ if !baids.nil?
488
+ failed_broadcast_area_identifier = []
489
+ 0.upto baids.size() - 1 do | i |
490
+ data = AntHill::ByteBuffer.decode_hex(baids[i].text)
491
+ failed_broadcast_area_identifier << AntHill::SMPP::BroadcastAreaIdentifier.new(data)
492
+ end
493
+ @package.failed_broadcast_area_identifier = failed_broadcast_area_identifier
494
+ end
495
+ rescue Exception => e
496
+ raise Errors::INVALID_XML_FILE
497
+ end
498
+ end
499
+
500
+ def encode_cancel_broadcast_sm
501
+ begin
502
+ @package = AntHill::SMPP::SMPPCancelBroadcastSM.new()
503
+ @package.command_status = REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm/command_status/").text.to_i
504
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm/sequence_number/").text.to_i
505
+ @package.service_type = REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm/service_type/").text
506
+ @package.message_id = REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm/message_id/").text
507
+ @package.source_addr_ton = REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm/source_addr_ton/").text.to_i
508
+ @package.source_addr_npi = REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm/source_addr_npi/").text.to_i
509
+ @package.source_addr = REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm/source_addr/").text
510
+
511
+ # Optional fields
512
+ node = REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm/broadcast_content_type/")
513
+ @package.broadcast_content_type = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
514
+
515
+ node = REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm/user_message_reference/")
516
+ @package.user_message_reference = node.text.to_i if !node.nil?
517
+ rescue Exception => e
518
+ raise Errors::INVALID_XML_FILE
519
+ end
520
+ end
521
+
522
+ def encode_cancel_broadcast_sm_resp
523
+ begin
524
+ @package = AntHill::SMPP::SMPPCancelBroadcastSMResp.new()
525
+ @package.command_status = REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm_resp/command_status/").text.to_i
526
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_cancel_broadcast_sm_resp/sequence_number/").text.to_i
527
+ rescue Exception => e
528
+ raise Errors::INVALID_XML_FILE
529
+ end
530
+ end
531
+
532
+ def encode_cancel_sm
533
+ begin
534
+ @package = AntHill::SMPP::SMPPCancelSM.new()
535
+ @package.command_status = REXML::XPath.first(@document, "//smpp_cancel_sm/command_status/").text.to_i
536
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_cancel_sm/sequence_number/").text.to_i
537
+ @package.service_type = REXML::XPath.first(@document, "//smpp_cancel_sm/service_type/").text
538
+ @package.message_id = REXML::XPath.first(@document, "//smpp_cancel_sm/message_id/").text
539
+ @package.source_addr_ton = REXML::XPath.first(@document, "//smpp_cancel_sm/source_addr_ton/").text.to_i
540
+ @package.source_addr_npi = REXML::XPath.first(@document, "//smpp_cancel_sm/source_addr_npi/").text.to_i
541
+ @package.source_addr = REXML::XPath.first(@document, "//smpp_cancel_sm/source_addr/").text
542
+ @package.dest_addr_ton = REXML::XPath.first(@document, "//smpp_cancel_sm/dest_addr_ton/").text.to_i
543
+ @package.dest_addr_npi = REXML::XPath.first(@document, "//smpp_cancel_sm/dest_addr_npi/").text.to_i
544
+ @package.dest_addr = REXML::XPath.first(@document, "//smpp_cancel_sm/dest_addr/").text
545
+ rescue Exception => e
546
+ raise Errors::INVALID_XML_FILE
547
+ end
548
+ end
549
+
550
+ def encode_cancel_sm_resp
551
+ begin
552
+ @package = AntHill::SMPP::SMPPCancelSMResp.new()
553
+ @package.command_status = REXML::XPath.first(@document, "//smpp_cancel_sm_resp/command_status/").text.to_i
554
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_cancel_sm_resp/sequence_number/").text.to_i
555
+ rescue Exception => e
556
+ raise Errors::INVALID_XML_FILE
557
+ end
558
+ end
559
+
560
+ def encode_data_sm
561
+ begin
562
+ @package = AntHill::SMPP::SMPPDataSM.new()
563
+ @package.command_status = REXML::XPath.first(@document, "//smpp_data_sm/command_status/").text.to_i
564
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_data_sm/sequence_number/").text.to_i
565
+ @package.service_type = REXML::XPath.first(@document, "//smpp_data_sm/service_type/").text
566
+ @package.source_addr_ton = REXML::XPath.first(@document, "//smpp_data_sm/source_addr_ton/").text.to_i
567
+ @package.source_addr_npi = REXML::XPath.first(@document, "//smpp_data_sm/source_addr_npi/").text.to_i
568
+ @package.source_addr = REXML::XPath.first(@document, "//smpp_data_sm/source_addr/").text
569
+ @package.dest_addr_ton = REXML::XPath.first(@document, "//smpp_data_sm/dest_addr_ton/").text.to_i
570
+ @package.dest_addr_npi = REXML::XPath.first(@document, "//smpp_data_sm/dest_addr_npi/").text.to_i
571
+ @package.dest_addr = REXML::XPath.first(@document, "//smpp_data_sm/dest_addr/").text
572
+ @package.esm_class = REXML::XPath.first(@document, "//smpp_data_sm/esm_class/").text.to_i
573
+ @package.registered_delivery = REXML::XPath.first(@document, "//smpp_data_sm/registered_delivery/").text.to_i
574
+ @package.data_coding = REXML::XPath.first(@document, "//smpp_data_sm/data_coding/").text.to_i
575
+
576
+ # Optional fields
577
+ node = REXML::XPath.first(@document, "//smpp_data_sm/source_port/")
578
+ @package.source_port = node.text.to_i if !node.nil?
579
+
580
+ node = REXML::XPath.first(@document, "//smpp_data_sm/source_addr_subunit/")
581
+ @package.source_addr_subunit = node.text.to_i if !node.nil?
582
+
583
+ node = REXML::XPath.first(@document, "//smpp_data_sm/source_network_type/")
584
+ @package.source_network_type = node.text.to_i if !node.nil?
585
+
586
+ node = REXML::XPath.first(@document, "//smpp_data_sm/source_bearer_type/")
587
+ @package.source_bearer_type = node.text.to_i if !node.nil?
588
+
589
+ node = REXML::XPath.first(@document, "//smpp_data_sm/source_telematics_id/")
590
+ @package.source_telematics_id = node.text.to_i if !node.nil?
591
+
592
+ node = REXML::XPath.first(@document, "//smpp_data_sm/destination_port/")
593
+ @package.destination_port = node.text.to_i if !node.nil?
594
+
595
+ node = REXML::XPath.first(@document, "//smpp_data_sm/destination_port/")
596
+ @package.dest_addr_subunit = node.text.to_i if !node.nil?
597
+
598
+ node = REXML::XPath.first(@document, "//smpp_data_sm/dest_addr_subunit/")
599
+ @package.dest_addr_subunit = node.text.to_i if !node.nil?
600
+
601
+ node = REXML::XPath.first(@document, "//smpp_data_sm/dest_network_type/")
602
+ @package.dest_network_type = node.text.to_i if !node.nil?
603
+
604
+ node = REXML::XPath.first(@document, "//smpp_data_sm/dest_bearer_type/")
605
+ @package.dest_bearer_type = node.text.to_i if !node.nil?
606
+
607
+ node = REXML::XPath.first(@document, "//smpp_data_sm/dest_telematics_id/")
608
+ @package.dest_telematics_id = node.text.to_i if !node.nil?
609
+
610
+ node = REXML::XPath.first(@document, "//smpp_data_sm/sar_msg_ref_num/")
611
+ @package.sar_msg_ref_num = node.text.to_i if !node.nil?
612
+
613
+ node = REXML::XPath.first(@document, "//smpp_data_sm/sar_total_segments/")
614
+ @package.sar_total_segments = node.text.to_i if !node.nil?
615
+
616
+ node = REXML::XPath.first(@document, "//smpp_data_sm/sar_segment_seqnum/")
617
+ @package.sar_segment_seqnum = node.text.to_i if !node.nil?
618
+
619
+ node = REXML::XPath.first(@document, "//smpp_data_sm/more_messages_to_send/")
620
+ @package.more_messages_to_send = node.text.to_i if !node.nil?
621
+
622
+ node = REXML::XPath.first(@document, "//smpp_data_sm/qos_time_to_live/")
623
+ @package.qos_time_to_live = node.text.to_i if !node.nil?
624
+
625
+ node = REXML::XPath.first(@document, "//smpp_data_sm/payload_type/")
626
+ @package.payload_type = node.text.to_i if !node.nil?
627
+
628
+ node = REXML::XPath.first(@document, "//smpp_data_sm/message_payload/")
629
+ @package.message_payload = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
630
+
631
+ node = REXML::XPath.first(@document, "//smpp_data_sm/set_dpf/")
632
+ @package.set_dpf = node.text.to_i if !node.nil?
633
+
634
+ node = REXML::XPath.first(@document, "//smpp_data_sm/receipted_message_id/")
635
+ @package.receipted_message_id = node.text if !node.nil?
636
+
637
+ node = REXML::XPath.first(@document, "//smpp_data_sm/message_state/")
638
+ @package.message_state = node.text.to_i if !node.nil?
639
+
640
+ node1 = REXML::XPath.first(@document, "//smpp_data_sm/network_error_code/network_code/")
641
+ node2 = REXML::XPath.first(@document, "//smpp_data_sm/network_error_code/error_code/")
642
+ if !node1.nil? && !node2.nil?
643
+ @package.network_error_code = AntHill::SMPP::NetworkErrorCode.new(
644
+ node1.text.to_i, node2.text.to_i )
645
+ end
646
+
647
+ node = REXML::XPath.first(@document, "//smpp_data_sm/user_message_reference/")
648
+ @package.user_message_reference = node.text.to_i if !node.nil?
649
+
650
+ node = REXML::XPath.first(@document, "//smpp_data_sm/privacy_indicator/")
651
+ @package.privacy_indicator = node.text.to_i if !node.nil?
652
+
653
+ node = REXML::XPath.first(@document, "//smpp_data_sm/callback_num/")
654
+ @package.callback_num = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
655
+
656
+ node = REXML::XPath.first(@document, "//smpp_data_sm/callback_num_pres_ind/")
657
+ @package.callback_num_pres_ind = node.text.to_i if !node.nil?
658
+
659
+ node = REXML::XPath.first(@document, "//smpp_data_sm/callback_num_atag/")
660
+ @package.callback_num_atag = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
661
+
662
+ node = REXML::XPath.first(@document, "//smpp_data_sm/source_subaddress/")
663
+ @package.source_subaddress = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
664
+
665
+ node = REXML::XPath.first(@document, "//smpp_data_sm/dest_subaddress/")
666
+ @package.dest_subaddress = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
667
+
668
+ node = REXML::XPath.first(@document, "//smpp_data_sm/user_response_code/")
669
+ @package.user_response_code = node.text.to_i if !node.nil?
670
+
671
+ node = REXML::XPath.first(@document, "//smpp_data_sm/display_time/")
672
+ @package.display_time = node.text.to_i if !node.nil?
673
+
674
+ node = REXML::XPath.first(@document, "//smpp_data_sm/sms_signal/")
675
+ @package.sms_signal = node.text.to_i if !node.nil?
676
+
677
+ node = REXML::XPath.first(@document, "//smpp_data_sm/ms_validity/")
678
+ @package.ms_validity = node.text.to_i if !node.nil?
679
+
680
+ node = REXML::XPath.first(@document, "//smpp_data_sm/ms_msg_wait_facilities/")
681
+ @package.ms_msg_wait_facilities = node.text.to_i if !node.nil?
682
+
683
+ node = REXML::XPath.first(@document, "//smpp_data_sm/number_of_messages/")
684
+ @package.number_of_messages = node.text.to_i if !node.nil?
685
+
686
+ node = REXML::XPath.first(@document, "//smpp_data_sm/alert_on_msg_delivery/")
687
+ @package.alert_on_msg_delivery = node.text.to_i if !node.nil?
688
+
689
+ node = REXML::XPath.first(@document, "//smpp_data_sm/language_indicator/")
690
+ @package.language_indicator = node.text.to_i if !node.nil?
691
+
692
+ node = REXML::XPath.first(@document, "//smpp_data_sm/its_reply_type/")
693
+ @package.its_reply_type = node.text.to_i if !node.nil?
694
+
695
+ node = REXML::XPath.first(@document, "//smpp_data_sm/its_session_info/")
696
+ @package.its_session_info = node.text.to_i if !node.nil?
697
+ rescue Exception => e
698
+ raise Errors::INVALID_XML_FILE
699
+ end
700
+ end
701
+
702
+ def encode_data_sm_resp
703
+ begin
704
+ @package = AntHill::SMPP::SMPPDataSMResp.new()
705
+ @package.command_status = REXML::XPath.first(@document, "//smpp_data_sm_resp/command_status/").text.to_i
706
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_data_sm_resp/sequence_number/").text.to_i
707
+ @package.message_id = REXML::XPath.first(@document, "//smpp_data_sm_resp/message_id/").text
708
+ @package.message_id = "" if @package.message_id.nil?
709
+
710
+ # Optional fields
711
+ node = REXML::XPath.first(@document, "//smpp_data_sm_resp/delivery_failure_reason/")
712
+ @package.delivery_failure_reason = node.text.to_i if !node.nil?
713
+
714
+ node1 = REXML::XPath.first(@document, "//smpp_data_sm_resp/network_error_code/network_code/")
715
+ node2 = REXML::XPath.first(@document, "//smpp_data_sm_resp/network_error_code/error_code/")
716
+ if !node1.nil? && !node2.nil?
717
+ @package.network_error_code = AntHill::SMPP::NetworkErrorCode.new(
718
+ node1.text.to_i, node2.text.to_i )
719
+ end
720
+
721
+ node = REXML::XPath.first(@document, "//smpp_data_sm_resp/additional_status_info_text/")
722
+ @package.additional_status_info_text = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
723
+
724
+ node = REXML::XPath.first(@document, "//smpp_data_sm_resp/dpf_result/")
725
+ @package.dpf_result = node.text.to_i if !node.nil?
726
+ rescue Exception => e
727
+ raise Errors::INVALID_XML_FILE
728
+ end
729
+ end
730
+
731
+ def encode_deliver_sm
732
+ begin
733
+ @package = AntHill::SMPP::SMPPDeliverSM.new()
734
+ @package.command_status = REXML::XPath.first(@document, "//smpp_deliver_sm/command_status/").text.to_i
735
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_deliver_sm/sequence_number/").text.to_i
736
+ @package.service_type = REXML::XPath.first(@document, "//smpp_deliver_sm/service_type/").text
737
+ @package.source_addr_ton = REXML::XPath.first(@document, "//smpp_deliver_sm/source_addr_ton/").text.to_i
738
+ @package.source_addr_npi = REXML::XPath.first(@document, "//smpp_deliver_sm/source_addr_npi/").text.to_i
739
+ @package.source_addr = REXML::XPath.first(@document, "//smpp_deliver_sm/source_addr/").text
740
+ @package.dest_addr_ton = REXML::XPath.first(@document, "//smpp_deliver_sm/dest_addr_ton/").text.to_i
741
+ @package.dest_addr_npi = REXML::XPath.first(@document, "//smpp_deliver_sm/dest_addr_npi/").text.to_i
742
+ @package.dest_addr = REXML::XPath.first(@document, "//smpp_deliver_sm/dest_addr/").text
743
+ @package.esm_class = REXML::XPath.first(@document, "//smpp_deliver_sm/esm_class/").text.to_i
744
+ @package.protocol_id = REXML::XPath.first(@document, "//smpp_deliver_sm/protocol_id/").text.to_i
745
+ @package.priority_flag = REXML::XPath.first(@document, "//smpp_deliver_sm/priority_flag/").text.to_i
746
+ @package.schedule_delivery_time = REXML::XPath.first(@document, "//smpp_deliver_sm/schedule_delivery_time/").text
747
+ @package.schedule_delivery_time = "" if @package.schedule_delivery_time.nil?
748
+ @package.validity_period = REXML::XPath.first(@document, "//smpp_deliver_sm/validity_period/").text
749
+ @package.validity_period = "" if @package.validity_period.nil?
750
+ @package.registered_delivery = REXML::XPath.first(@document, "//smpp_deliver_sm/registered_delivery/").text.to_i
751
+ @package.replace_if_present_flag = REXML::XPath.first(@document, "//smpp_deliver_sm/replace_if_present_flag/").text.to_i
752
+ @package.data_coding = REXML::XPath.first(@document, "//smpp_deliver_sm/data_coding/").text.to_i
753
+ @package.sm_default_msg_id = REXML::XPath.first(@document, "//smpp_deliver_sm/sm_default_msg_id/").text.to_i
754
+ @package.sm_length = REXML::XPath.first(@document, "//smpp_deliver_sm/sm_length/").text.to_i
755
+ @package.short_message = AntHill::ByteBuffer.decode_hex(REXML::XPath.first(@document, "//smpp_deliver_sm/short_message/").text)
756
+ @package.short_message = "" if @package.short_message.nil?
757
+
758
+ # Optional fields
759
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/user_message_reference/")
760
+ @package.user_message_reference = node.text.to_i if !node.nil?
761
+
762
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/source_port/")
763
+ @package.source_port = node.text.to_i if !node.nil?
764
+
765
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/destination_port/")
766
+ @package.destination_port = node.text.to_i if !node.nil?
767
+
768
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/sar_msg_ref_num/")
769
+ @package.sar_msg_ref_num = node.text.to_i if !node.nil?
770
+
771
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/sar_total_segments/")
772
+ @package.sar_total_segments = node.text.to_i if !node.nil?
773
+
774
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/sar_segment_seqnum/")
775
+ @package.sar_segment_seqnum = node.text.to_i if !node.nil?
776
+
777
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/user_response_code/")
778
+ @package.user_response_code = node.text.to_i if !node.nil?
779
+
780
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/privacy_indicator/")
781
+ @package.privacy_indicator = node.text.to_i if !node.nil?
782
+
783
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/payload_type/")
784
+ @package.payload_type = node.text.to_i if !node.nil?
785
+
786
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/message_payload/")
787
+ @package.message_payload = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
788
+
789
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/callback_num/")
790
+ @package.callback_num = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
791
+
792
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/source_subaddress/")
793
+ @package.source_subaddress = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
794
+
795
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/dest_subaddress/")
796
+ @package.dest_subaddress = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
797
+
798
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/language_indicator/")
799
+ @package.language_indicator = node.text.to_i if !node.nil?
800
+
801
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/its_session_info/")
802
+ @package.its_session_info = node.text.to_i if !node.nil?
803
+
804
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/its_session_info/")
805
+ @package.its_session_info = node.text.to_i if !node.nil?
806
+
807
+ node1 = REXML::XPath.first(@document, "//smpp_deliver_sm/network_error_code/network_code/")
808
+ node2 = REXML::XPath.first(@document, "//smpp_deliver_sm/network_error_code/error_code/")
809
+ if !node1.nil? && !node2.nil?
810
+ @package.network_error_code = AntHill::SMPP::NetworkErrorCode.new(
811
+ node1.text.to_i,node2.text.to_i )
812
+ end
813
+
814
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/message_state/")
815
+ @package.message_state = node.text.to_i if !node.nil?
816
+
817
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm/receipted_message_id/")
818
+ @package.receipted_message_id = node.text if !node.nil?
819
+ rescue Exception => e
820
+ raise Errors::INVALID_XML_FILE
821
+ end
822
+ end
823
+
824
+ def encode_deliver_sm_resp
825
+ begin
826
+ @package = AntHill::SMPP::SMPPDeliverSMResp.new()
827
+ @package.command_status = REXML::XPath.first(@document, "//smpp_deliver_sm_resp/command_status/").text.to_i
828
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_deliver_sm_resp/sequence_number/").text.to_i
829
+ @package.message_id = REXML::XPath.first(@document, "//smpp_deliver_sm_resp/message_id/").text
830
+ @package.message_id = "" if @package.message_id.nil?
831
+
832
+ # Optional fields
833
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm_resp/additional_status_info_text/")
834
+ @package.additional_status_info_text = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
835
+
836
+ node = REXML::XPath.first(@document, "//smpp_deliver_sm_resp/delivery_failure_reason/")
837
+ @package.delivery_failure_reason = node.text.to_i if !node.nil?
838
+
839
+ node1 = REXML::XPath.first(@document, "//smpp_deliver_sm_resp/network_error_code/network_code/")
840
+ node2 = REXML::XPath.first(@document, "//smpp_deliver_sm_resp/network_error_code/error_code/")
841
+ if !node1.nil? && !node2.nil?
842
+ @package.network_error_code = AntHill::SMPP::NetworkErrorCode.new(
843
+ node1.text.to_i, node2.text.to_i )
844
+ end
845
+ rescue Exception => e
846
+ raise Errors::INVALID_XML_FILE
847
+ end
848
+ end
849
+
850
+ def encode_enquire_link
851
+ begin
852
+ @package = AntHill::SMPP::SMPPEnquireLink.new()
853
+ @package.command_status = REXML::XPath.first(@document, "//smpp_enquire_link/command_status/").text.to_i
854
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_enquire_link/sequence_number/").text.to_i
855
+ rescue Exception => e
856
+ raise Errors::INVALID_XML_FILE
857
+ end
858
+ end
859
+
860
+ def encode_enquire_link_resp
861
+ begin
862
+ @package = AntHill::SMPP::SMPPEnquireLinkResp.new()
863
+ @package.command_status = REXML::XPath.first(@document, "//smpp_enquire_link_resp/command_status/").text.to_i
864
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_enquire_link_resp/sequence_number/").text.to_i
865
+ rescue Exception => e
866
+ raise Errors::INVALID_XML_FILE
867
+ end
868
+ end
869
+
870
+ def encode_generic_nack
871
+ begin
872
+ @package = AntHill::SMPP::SMPPGenericNack.new()
873
+ @package.command_status = REXML::XPath.first(@document, "//smpp_generic_nack/command_status/").text.to_i
874
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_generic_nack/sequence_number/").text.to_i
875
+ rescue Exception => e
876
+ raise Errors::INVALID_XML_FILE
877
+ end
878
+ end
879
+
880
+ def encode_outbind
881
+ begin
882
+ @package = AntHill::SMPP::SMPPOutbind.new()
883
+ @package.command_status = REXML::XPath.first(@document, "//smpp_outbind/command_status/").text.to_i
884
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_outbind/sequence_number/").text.to_i
885
+ @package.system_id = REXML::XPath.first(@document, "//smpp_outbind/system_id/").text
886
+ @package.password = REXML::XPath.first(@document, "//smpp_outbind/password/").text
887
+ rescue Exception => e
888
+ raise Errors::INVALID_XML_FILE
889
+ end
890
+ end
891
+
892
+ def encode_query_broadcast_sm
893
+ begin
894
+ @package = AntHill::SMPP::SMPPQueryBroadcastSM.new()
895
+ @package.command_status = REXML::XPath.first(@document, "//smpp_query_broadcast_sm/command_status/").text.to_i
896
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_query_broadcast_sm/sequence_number/").text.to_i
897
+ @package.message_id = REXML::XPath.first(@document, "//smpp_query_broadcast_sm/message_id/").text
898
+ @package.source_addr_ton = REXML::XPath.first(@document, "//smpp_query_broadcast_sm/source_addr_ton/").text.to_i
899
+ @package.source_addr_npi = REXML::XPath.first(@document, "//smpp_query_broadcast_sm/source_addr_npi/").text.to_i
900
+ @package.source_addr = REXML::XPath.first(@document, "//smpp_query_broadcast_sm/source_addr/").text
901
+
902
+ # Optional fields
903
+ node = REXML::XPath.first(@document, "//smpp_query_broadcast_sm/user_message_reference/")
904
+ @package.user_message_reference = node.text.to_i if !node.nil?
905
+ rescue Exception => e
906
+ raise Errors::INVALID_XML_FILE
907
+ end
908
+ end
909
+
910
+ def encode_query_broadcast_sm_resp
911
+ begin
912
+ @package = AntHill::SMPP::SMPPQueryBroadcastSMResp.new()
913
+ @package.command_status = REXML::XPath.first(@document, "//smpp_query_broadcast_sm_resp/command_status/").text.to_i
914
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_query_broadcast_sm_resp/sequence_number/").text.to_i
915
+ @package.message_id = REXML::XPath.first(@document, "//smpp_query_broadcast_sm_resp/message_id/").text
916
+ @package.message_state = REXML::XPath.first(@document, "//smpp_query_broadcast_sm_resp/message_state/").text.to_i
917
+
918
+ baids = @document.elements.to_a("//smpp_query_broadcast_sm_resp/broadcast_area_identifiers/broadcast_area_identifier/")
919
+ broadcast_area_identifier = []
920
+ 0.upto baids.size() - 1 do | i |
921
+ data = AntHill::ByteBuffer.decode_hex(baids[i].text)
922
+ broadcast_area_identifier << AntHill::SMPP::BroadcastAreaIdentifier.new(data)
923
+ end
924
+ @package.broadcast_area_identifier = broadcast_area_identifier
925
+
926
+ # Optional fields
927
+ node = REXML::XPath.first(@document, "//smpp_query_broadcast_sm_resp/broadcast_area_success/")
928
+ @package.broadcast_area_success = node.text.to_i if !node.nil?
929
+
930
+ node = REXML::XPath.first(@document, "//smpp_query_broadcast_sm_resp/user_message_reference/")
931
+ @package.user_message_reference = node.text.to_i if !node.nil?
932
+
933
+ if !REXML::XPath.first(@document, "//smpp_query_broadcast_sm_resp/broadcast_end_time/").nil?
934
+ broadcast_end_time = REXML::XPath.first(@document, "//smpp_query_broadcast_sm_resp/broadcast_end_time/")
935
+ @package.broadcast_end_time = broadcast_end_time.text if !broadcast_end_time.text.nil?
936
+ @package.broadcast_end_time = "" if broadcast_end_time.text.nil?
937
+ end
938
+ rescue Exception => e
939
+ raise Errors::INVALID_XML_FILE
940
+ end
941
+ end
942
+
943
+ def encode_query_sm
944
+ begin
945
+ @package = AntHill::SMPP::SMPPQuerySM.new()
946
+ @package.command_status = REXML::XPath.first(@document, "//smpp_query_sm/command_status/").text.to_i
947
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_query_sm/sequence_number/").text.to_i
948
+ @package.message_id = REXML::XPath.first(@document, "//smpp_query_sm/message_id/").text
949
+ @package.source_addr_ton = REXML::XPath.first(@document, "//smpp_query_sm/source_addr_ton/").text.to_i
950
+ @package.source_addr_npi = REXML::XPath.first(@document, "//smpp_query_sm/source_addr_npi/").text.to_i
951
+ @package.source_addr = REXML::XPath.first(@document, "//smpp_query_sm/source_addr/").text
952
+ rescue Exception => e
953
+ raise Errors::INVALID_XML_FILE
954
+ end
955
+ end
956
+
957
+ def encode_query_sm_resp
958
+ begin
959
+ @package = AntHill::SMPP::SMPPQuerySMResp.new()
960
+ @package.command_status = REXML::XPath.first(@document, "//smpp_query_sm_resp/command_status/").text.to_i
961
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_query_sm_resp/sequence_number/").text.to_i
962
+ @package.message_id = REXML::XPath.first(@document, "//smpp_query_sm_resp/message_id/").text
963
+ @package.final_date = REXML::XPath.first(@document, "//smpp_query_sm_resp/final_date/").text
964
+ @package.final_date = "" if @package.final_date.nil?
965
+ @package.message_state = REXML::XPath.first(@document, "//smpp_query_sm_resp/message_state/").text.to_i
966
+ @package.error_code = REXML::XPath.first(@document, "//smpp_query_sm_resp/error_code/").text.to_i
967
+ rescue Exception => e
968
+ raise Errors::INVALID_XML_FILE
969
+ end
970
+ end
971
+
972
+ def encode_replace_sm
973
+ begin
974
+ @package = AntHill::SMPP::SMPPReplaceSM.new()
975
+ @package.command_status = REXML::XPath.first(@document, "//smpp_replace_sm/command_status/").text.to_i
976
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_replace_sm/sequence_number/").text.to_i
977
+ @package.message_id = REXML::XPath.first(@document, "//smpp_replace_sm/message_id/").text
978
+ @package.source_addr_ton = REXML::XPath.first(@document, "//smpp_replace_sm/source_addr_ton/").text.to_i
979
+ @package.source_addr_npi = REXML::XPath.first(@document, "//smpp_replace_sm/source_addr_npi/").text.to_i
980
+ @package.source_addr = REXML::XPath.first(@document, "//smpp_replace_sm/source_addr/").text
981
+ @package.schedule_delivery_time = REXML::XPath.first(@document, "//smpp_replace_sm/schedule_delivery_time/").text
982
+ @package.schedule_delivery_time = "" if @package.schedule_delivery_time.nil?
983
+ @package.validity_period = REXML::XPath.first(@document, "//smpp_replace_sm/validity_period/").text
984
+ @package.validity_period = "" if @package.validity_period.nil?
985
+ @package.registered_delivery = REXML::XPath.first(@document, "//smpp_replace_sm/registered_delivery/").text.to_i
986
+ @package.sm_default_msg_id = REXML::XPath.first(@document, "//smpp_replace_sm/sm_default_msg_id/").text.to_i
987
+ @package.sm_length = REXML::XPath.first(@document, "//smpp_replace_sm/sm_length/").text.to_i
988
+ @package.short_message = AntHill::ByteBuffer.decode_hex(REXML::XPath.first(@document, "//smpp_replace_sm/short_message/").text)
989
+
990
+ # Optional fields
991
+ node = REXML::XPath.first(@document, "//smpp_replace_sm/message_payload/")
992
+ @package.message_payload = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
993
+ rescue Exception => e
994
+ raise Errors::INVALID_XML_FILE
995
+ end
996
+ end
997
+
998
+ def encode_replace_sm_resp
999
+ begin
1000
+ @package = AntHill::SMPP::SMPPReplaceSMResp.new()
1001
+ @package.command_status = REXML::XPath.first(@document, "//smpp_replace_sm_resp/command_status/").text.to_i
1002
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_replace_sm_resp/sequence_number/").text.to_i
1003
+ rescue Exception => e
1004
+ raise Errors::INVALID_XML_FILE
1005
+ end
1006
+ end
1007
+
1008
+ def encode_submit_multi
1009
+ begin
1010
+ @package = AntHill::SMPP::SMPPSubmitMulti.new()
1011
+ @package.command_status = REXML::XPath.first(@document, "//smpp_submit_multi/command_status/").text.to_i
1012
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_submit_multi/sequence_number/").text.to_i
1013
+ @package.service_type = REXML::XPath.first(@document, "//smpp_submit_multi/service_type/").text
1014
+ @package.source_addr_ton = REXML::XPath.first(@document, "//smpp_submit_multi/source_addr_ton/").text.to_i
1015
+ @package.source_addr_npi = REXML::XPath.first(@document, "//smpp_submit_multi/source_addr_npi/").text.to_i
1016
+ @package.source_addr = REXML::XPath.first(@document, "//smpp_submit_multi/source_addr/").text
1017
+ @package.number_of_dest = REXML::XPath.first(@document, "//smpp_submit_multi/number_of_dest/").text.to_i
1018
+
1019
+ result = []
1020
+ dest_addresses = @document.elements.to_a("//smpp_submit_multi/dest_addresses/dest_address/")
1021
+ 0.upto dest_addresses.size() - 1 do |i|
1022
+ if !dest_addresses[i].elements["distr_list_name"].nil?
1023
+ address = AntHill::SMPP::DestAddress.new(AntHill::SMPP::DestFlag::DISTR_LIST_NAME)
1024
+ address.distr_list_name = dest_addresses[i].elements["distr_list_name"].text
1025
+ result << address
1026
+ elsif !dest_addresses[i].elements["sme_address"].nil?
1027
+ ton = dest_addresses[i].elements["sme_address"].elements["ton"].text
1028
+ npi = dest_addresses[i].elements["sme_address"].elements["npi"].text
1029
+ adr = dest_addresses[i].elements["sme_address"].elements["address"].text
1030
+ sme_address = AntHill::SMPP::SMEAddress.new(ton, npi, adr)
1031
+
1032
+ address = AntHill::SMPP::DestAddress.new(AntHill::SMPP::DestFlag::SME_ADDRESS)
1033
+ address.address = sme_address
1034
+ result << address
1035
+ else
1036
+ raise Errors::INVALID_DEST_FLAG
1037
+ end
1038
+ end
1039
+ @package.dest_addresses = result
1040
+
1041
+ @package.esm_class = REXML::XPath.first(@document, "//smpp_submit_multi/esm_class/").text.to_i
1042
+ @package.protocol_id = REXML::XPath.first(@document, "//smpp_submit_multi/protocol_id/").text.to_i
1043
+ @package.priority_flag = REXML::XPath.first(@document, "//smpp_submit_multi/priority_flag/").text.to_i
1044
+ @package.schedule_delivery_time = REXML::XPath.first(@document, "//smpp_submit_multi/schedule_delivery_time/").text
1045
+ @package.schedule_delivery_time = "" if @package.schedule_delivery_time.nil?
1046
+ @package.validity_period = REXML::XPath.first(@document, "//smpp_submit_multi/validity_period/").text
1047
+ @package.validity_period = "" if @package.validity_period.nil?
1048
+ @package.registered_delivery = REXML::XPath.first(@document, "//smpp_submit_multi/registered_delivery/").text.to_i
1049
+ @package.replace_if_present_flag = REXML::XPath.first(@document, "//smpp_submit_multi/replace_if_present_flag/").text.to_i
1050
+ @package.data_coding = REXML::XPath.first(@document, "//smpp_submit_multi/data_coding/").text.to_i
1051
+ @package.sm_default_msg_id = REXML::XPath.first(@document, "//smpp_submit_multi/sm_default_msg_id/").text.to_i
1052
+ @package.sm_length = REXML::XPath.first(@document, "//smpp_submit_multi/sm_length/").text.to_i
1053
+ @package.short_message = AntHill::ByteBuffer.decode_hex(REXML::XPath.first(@document, "//smpp_submit_multi/short_message/").text)
1054
+ @package.short_message = "" if @package.short_message.nil?
1055
+
1056
+ # Parse optional fields
1057
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/source_port/")
1058
+ @package.source_port = node.text.to_i if !node.nil?
1059
+
1060
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/source_addr_subunit/")
1061
+ @package.source_addr_subunit = node.text.to_i if !node.nil?
1062
+
1063
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/destination_port/")
1064
+ @package.destination_port = node.text.to_i if !node.nil?
1065
+
1066
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/dest_addr_subunit/")
1067
+ @package.dest_addr_subunit = node.text.to_i if !node.nil?
1068
+
1069
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/sar_msg_ref_num/")
1070
+ @package.sar_msg_ref_num = node.text.to_i if !node.nil?
1071
+
1072
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/sar_total_segments/")
1073
+ @package.sar_total_segments = node.text.to_i if !node.nil?
1074
+
1075
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/sar_segment_seqnum/")
1076
+ @package.sar_segment_seqnum = node.text.to_i if !node.nil?
1077
+
1078
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/payload_type/")
1079
+ @package.payload_type = node.text.to_i if !node.nil?
1080
+
1081
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/message_payload/")
1082
+ @package.message_payload = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
1083
+
1084
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/privacy_indicator/")
1085
+ @package.privacy_indicator = node.text.to_i if !node.nil?
1086
+
1087
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/callback_num/")
1088
+ @package.callback_num = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
1089
+
1090
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/callback_num_pres_ind/")
1091
+ @package.callback_num_pres_ind = node.text.to_i if !node.nil?
1092
+
1093
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/callback_num_atag/")
1094
+ @package.callback_num_atag = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
1095
+
1096
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/source_subaddress/")
1097
+ @package.source_subaddress = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
1098
+
1099
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/dest_subaddress/")
1100
+ @package.dest_subaddress = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
1101
+
1102
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/display_time/")
1103
+ @package.display_time = node.text.to_i if !node.nil?
1104
+
1105
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/sms_signal/")
1106
+ @package.sms_signal = node.text.to_i if !node.nil?
1107
+
1108
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/ms_validity/")
1109
+ @package.ms_validity = node.text.to_i if !node.nil?
1110
+
1111
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/ms_msg_wait_facilities/")
1112
+ @package.ms_msg_wait_facilities = node.text.to_i if !node.nil?
1113
+
1114
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/alert_on_msg_delivery/")
1115
+ @package.alert_on_msg_delivery = node.text.to_i if !node.nil?
1116
+
1117
+ node = REXML::XPath.first(@document, "//smpp_submit_multi/language_indicator/")
1118
+ @package.language_indicator = node.text.to_i if !node.nil?
1119
+ rescue Exception => e
1120
+ raise Errors::INVALID_XML_FILE
1121
+ end
1122
+ end
1123
+
1124
+ def encode_submit_multi_resp
1125
+ begin
1126
+ @package = AntHill::SMPP::SMPPSubmitMultiResp.new()
1127
+ @package.command_status = REXML::XPath.first(@document, "//smpp_submit_multi_resp/command_status/").text.to_i
1128
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_submit_multi_resp/sequence_number/").text.to_i
1129
+ @package.message_id = REXML::XPath.first(@document, "//smpp_submit_multi_resp/message_id/").text
1130
+ @package.no_unsuccess = REXML::XPath.first(@document, "//smpp_submit_multi_resp/no_unsuccess/").text.to_i
1131
+
1132
+ result = []
1133
+ unsuccess_smes = @document.elements.to_a("//smpp_submit_multi_resp/unsuccess_smes/unsuccess_sme/")
1134
+ 0.upto unsuccess_smes.size() - 1 do |i|
1135
+ ton = unsuccess_smes[i].elements["sme_address"].elements["ton"].text.to_i
1136
+ npi = unsuccess_smes[i].elements["sme_address"].elements["npi"].text.to_i
1137
+ adr = unsuccess_smes[i].elements["sme_address"].elements["address"].text
1138
+ err = unsuccess_smes[i].elements["error_status_code"].text.to_i
1139
+ result << AntHill::SMPP::UnsuccessSME.new( AntHill::SMPP::SMEAddress.new(ton, npi, adr), err)
1140
+ end
1141
+ @package.unsuccess_smes = result
1142
+ rescue Exception => e
1143
+ raise Errors::INVALID_XML_FILE
1144
+ end
1145
+ end
1146
+
1147
+ def encode_submit_sm
1148
+ begin
1149
+ @package = AntHill::SMPP::SMPPSubmitSM.new()
1150
+ @package.command_status = REXML::XPath.first(@document, "//smpp_submit_sm/command_status/").text.to_i
1151
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_submit_sm/sequence_number/").text.to_i
1152
+ @package.service_type = REXML::XPath.first(@document, "//smpp_submit_sm/service_type/").text
1153
+ @package.source_addr_ton = REXML::XPath.first(@document, "//smpp_submit_sm/source_addr_ton/").text.to_i
1154
+ @package.source_addr_npi = REXML::XPath.first(@document, "//smpp_submit_sm/source_addr_npi/").text.to_i
1155
+ @package.source_addr = REXML::XPath.first(@document, "//smpp_submit_sm/source_addr/").text
1156
+ @package.dest_addr_ton = REXML::XPath.first(@document, "//smpp_submit_sm/dest_addr_ton/").text.to_i
1157
+ @package.dest_addr_npi = REXML::XPath.first(@document, "//smpp_submit_sm/dest_addr_npi/").text.to_i
1158
+ @package.dest_addr = REXML::XPath.first(@document, "//smpp_submit_sm/dest_addr/").text
1159
+ @package.esm_class = REXML::XPath.first(@document, "//smpp_submit_sm/esm_class/").text.to_i
1160
+ @package.protocol_id = REXML::XPath.first(@document, "//smpp_submit_sm/protocol_id/").text.to_i
1161
+ @package.priority_flag = REXML::XPath.first(@document, "//smpp_submit_sm/priority_flag/").text.to_i
1162
+ @package.schedule_delivery_time = REXML::XPath.first(@document, "//smpp_submit_sm/schedule_delivery_time/").text
1163
+ @package.schedule_delivery_time = "" if @package.schedule_delivery_time.nil?
1164
+ @package.validity_period = REXML::XPath.first(@document, "//smpp_submit_sm/validity_period/").text
1165
+ @package.validity_period = "" if @package.validity_period.nil?
1166
+ @package.registered_delivery = REXML::XPath.first(@document, "//smpp_submit_sm/registered_delivery/").text.to_i
1167
+ @package.replace_if_present_flag = REXML::XPath.first(@document, "//smpp_submit_sm/replace_if_present_flag/").text.to_i
1168
+ @package.data_coding = REXML::XPath.first(@document, "//smpp_submit_sm/data_coding/").text.to_i
1169
+ @package.sm_default_msg_id = REXML::XPath.first(@document, "//smpp_submit_sm/sm_default_msg_id/").text.to_i
1170
+ @package.sm_length = REXML::XPath.first(@document, "//smpp_submit_sm/sm_length/").text.to_i
1171
+ @package.short_message = AntHill::ByteBuffer.decode_hex(REXML::XPath.first(@document, "//smpp_submit_sm/short_message/").text)
1172
+ @package.short_message = "" if @package.short_message.nil?
1173
+
1174
+ # Parse optional fields
1175
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/user_message_reference/")
1176
+ @package.user_message_reference = node.text.to_i if !node.nil?
1177
+
1178
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/source_port/")
1179
+ @package.source_port = node.text.to_i if !node.nil?
1180
+
1181
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/source_addr_subunit/")
1182
+ @package.source_addr_subunit = node.text.to_i if !node.nil?
1183
+
1184
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/destination_port/")
1185
+ @package.destination_port = node.text.to_i if !node.nil?
1186
+
1187
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/dest_addr_subunit/")
1188
+ @package.dest_addr_subunit = node.text.to_i if !node.nil?
1189
+
1190
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/sar_msg_ref_num/")
1191
+ @package.sar_msg_ref_num = node.text.to_i if !node.nil?
1192
+
1193
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/sar_total_segments/")
1194
+ @package.sar_total_segments = node.text.to_i if !node.nil?
1195
+
1196
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/sar_segment_seqnum/")
1197
+ @package.sar_segment_seqnum = node.text.to_i if !node.nil?
1198
+
1199
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/more_messages_to_send/")
1200
+ @package.more_messages_to_send = node.text.to_i if !node.nil?
1201
+
1202
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/payload_type/")
1203
+ @package.payload_type = node.text.to_i if !node.nil?
1204
+
1205
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/message_payload/")
1206
+ @package.message_payload = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
1207
+
1208
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/privacy_indicator/")
1209
+ @package.privacy_indicator = node.text.to_i if !node.nil?
1210
+
1211
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/callback_num/")
1212
+ @package.callback_num = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
1213
+
1214
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/callback_num_pres_ind/")
1215
+ @package.callback_num_pres_ind = node.text.to_i if !node.nil?
1216
+
1217
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/callback_num_atag/")
1218
+ @package.callback_num_atag = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
1219
+
1220
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/source_subaddress/")
1221
+ @package.source_subaddress = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
1222
+
1223
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/dest_subaddress/")
1224
+ @package.dest_subaddress = AntHill::ByteBuffer.decode_hex(node.text) if !node.nil?
1225
+
1226
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/user_response_code/")
1227
+ @package.user_response_code = node.text.to_i if !node.nil?
1228
+
1229
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/display_time/")
1230
+ @package.display_time = node.text.to_i if !node.nil?
1231
+
1232
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/sms_signal/")
1233
+ @package.sms_signal = node.text.to_i if !node.nil?
1234
+
1235
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/ms_validity/")
1236
+ @package.ms_validity = node.text.to_i if !node.nil?
1237
+
1238
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/ms_msg_wait_facilities/")
1239
+ @package.ms_msg_wait_facilities = node.text.to_i if !node.nil?
1240
+
1241
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/number_of_messages/")
1242
+ @package.number_of_messages = node.text.to_i if !node.nil?
1243
+
1244
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/alert_on_msg_delivery/")
1245
+ @package.alert_on_msg_delivery = node.text.to_i if !node.nil?
1246
+
1247
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/language_indicator/")
1248
+ @package.language_indicator = node.text.to_i if !node.nil?
1249
+
1250
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/its_reply_type/")
1251
+ @package.its_reply_type = node.text.to_i if !node.nil?
1252
+
1253
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/its_session_info/")
1254
+ @package.its_session_info = node.text.to_i if !node.nil?
1255
+
1256
+ node = REXML::XPath.first(@document, "//smpp_submit_sm/ussd_service_op/")
1257
+ @package.ussd_service_op = node.text.to_i if !node.nil?
1258
+ rescue Exception => e
1259
+ raise Errors::INVALID_XML_FILE
1260
+ end
1261
+ end
1262
+
1263
+ def encode_submit_sm_resp
1264
+ begin
1265
+ @package = AntHill::SMPP::SMPPSubmitSMResp.new()
1266
+ @package.command_status = REXML::XPath.first(@document, "//smpp_submit_sm_resp/command_status/").text.to_i
1267
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_submit_sm_resp/sequence_number/").text.to_i
1268
+ @package.message_id = REXML::XPath.first(@document, "//smpp_submit_sm_resp/message_id/").text
1269
+ rescue Exception => e
1270
+ raise Errors::INVALID_XML_FILE
1271
+ end
1272
+ end
1273
+
1274
+ def encode_unbind
1275
+ begin
1276
+ @package = AntHill::SMPP::SMPPUnbind.new()
1277
+ @package.command_status = REXML::XPath.first(@document, "//smpp_unbind/command_status/").text.to_i
1278
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_unbind/sequence_number/").text.to_i
1279
+ rescue Exception => e
1280
+ raise Errors::INVALID_XML_FILE
1281
+ end
1282
+ end
1283
+
1284
+ def encode_unbind_resp
1285
+ begin
1286
+ @package = AntHill::SMPP::SMPPUnbindResp.new()
1287
+ @package.command_status = REXML::XPath.first(@document, "//smpp_unbind_resp/command_status/").text.to_i
1288
+ @package.sequence_number = REXML::XPath.first(@document, "//smpp_unbind_resp/sequence_number/").text.to_i
1289
+ rescue Exception => e
1290
+ raise Errors::INVALID_XML_FILE
1291
+ end
1292
+ end
1293
+
1294
+ # Encode
1295
+ def encode_smpp_command
1296
+ begin
1297
+ encoder = AntHill::SMPP::SMPPEncoder.new()
1298
+ validator = AntHill::SMPP::SMPPValidator.new()
1299
+
1300
+ # Encode packet
1301
+ encoder.reset_buffer()
1302
+ @package.validate_packet(validator)
1303
+ @package.encode_packet(encoder)
1304
+ encoder.encode_command_length()
1305
+ @buffer = encoder.get_buffer()
1306
+ rescue RuntimeError => e
1307
+ puts e
1308
+ end
1309
+
1310
+ end
1311
+
1312
+ # Output byte buffer if showdump option is true
1313
+ def output_byte_buffer
1314
+ puts AntHill::ByteBuffer.encode_hex(@buffer)
1315
+ end
1316
+
1317
+
1318
+ #
1319
+ VERSION = '0.5.1'
1320
+
1321
+ # Private accessors
1322
+ attr_accessor :document
1323
+ attr_accessor :package
1324
+ attr_accessor :buffer
1325
+
1326
+
1327
+ end
1328
+
1329
+ # Create a application and process
1330
+ pdu_composer = PDUComposer.new(ARGV, STDIN)
1331
+ pdu_composer.run_application()