anthill_smpp_ruby 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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()