ruby-smpp 0.1.3 → 0.2.0
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.
- data/.gitignore +1 -0
 - data/Rakefile +1 -1
 - data/VERSION +1 -1
 - data/lib/smpp.rb +1 -0
 - data/lib/smpp/base.rb +5 -2
 - data/lib/smpp/optional_parameter.rb +31 -0
 - data/lib/smpp/pdu/base.rb +24 -5
 - data/lib/smpp/pdu/submit_sm.rb +15 -3
 - data/ruby-smpp.gemspec +9 -4
 - data/test/optional_parameter_test.rb +30 -0
 - data/test/submit_sm_test.rb +40 -0
 - metadata +7 -2
 
    
        data/.gitignore
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.2.0
         
     | 
    
        data/lib/smpp.rb
    CHANGED
    
    
    
        data/lib/smpp/base.rb
    CHANGED
    
    | 
         @@ -165,7 +165,10 @@ module Smpp 
     | 
|
| 
       165 
165 
     | 
    
         
             
                end
         
     | 
| 
       166 
166 
     | 
    
         | 
| 
       167 
167 
     | 
    
         
             
                def hex_debug(data, prefix = "")
         
     | 
| 
       168 
     | 
    
         
            -
                   
     | 
| 
      
 168 
     | 
    
         
            +
                  Base.hex_debug(data, prefix)
         
     | 
| 
      
 169 
     | 
    
         
            +
                end
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
                def Base.hex_debug(data, prefix = "")
         
     | 
| 
       169 
172 
     | 
    
         
             
                  logger.debug do
         
     | 
| 
       170 
173 
     | 
    
         
             
                    message = "Hex dump follows:\n"
         
     | 
| 
       171 
174 
     | 
    
         
             
                    hexdump(data).each_line do |line| 
         
     | 
| 
         @@ -175,7 +178,7 @@ module Smpp 
     | 
|
| 
       175 
178 
     | 
    
         
             
                  end
         
     | 
| 
       176 
179 
     | 
    
         
             
                end
         
     | 
| 
       177 
180 
     | 
    
         | 
| 
       178 
     | 
    
         
            -
                def hexdump(target)
         
     | 
| 
      
 181 
     | 
    
         
            +
                def Base.hexdump(target)
         
     | 
| 
       179 
182 
     | 
    
         
             
                  width=16
         
     | 
| 
       180 
183 
     | 
    
         
             
                  group=2
         
     | 
| 
       181 
184 
     | 
    
         | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class Smpp::OptionalParameter
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              attr_reader :tag, :value
         
     | 
| 
      
 4 
     | 
    
         
            +
              
         
     | 
| 
      
 5 
     | 
    
         
            +
              def initialize(tag, value)
         
     | 
| 
      
 6 
     | 
    
         
            +
                @tag = tag
         
     | 
| 
      
 7 
     | 
    
         
            +
                @value = value
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              def [](symbol)
         
     | 
| 
      
 11 
     | 
    
         
            +
                self.send symbol
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              #class methods
         
     | 
| 
      
 15 
     | 
    
         
            +
              class << self
         
     | 
| 
      
 16 
     | 
    
         
            +
                def from_wire_data(data)
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  return nil if data.nil?
         
     | 
| 
      
 19 
     | 
    
         
            +
                  tag, length, remaining_bytes = data.unpack('H4na*')
         
     | 
| 
      
 20 
     | 
    
         
            +
                  tag = tag.hex
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                  raise "invalid data, cannot parse optional parameters" if tag == 0 or length.nil?
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  value = remaining_bytes.slice!(0...length)
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  return new(tag, value), remaining_bytes
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/smpp/pdu/base.rb
    CHANGED
    
    | 
         @@ -98,11 +98,32 @@ module Smpp::Pdu 
     | 
|
| 
       98 
98 
     | 
    
         
             
                end
         
     | 
| 
       99 
99 
     | 
    
         | 
| 
       100 
100 
     | 
    
         
             
                # return int as binary string of 4 octets
         
     | 
| 
       101 
     | 
    
         
            -
                def fixed_int(value)
         
     | 
| 
      
 101 
     | 
    
         
            +
                def Base.fixed_int(value)
         
     | 
| 
       102 
102 
     | 
    
         
             
                  arr = [value >> 24, value >> 16, value >> 8, value & 0xff]
         
     | 
| 
       103 
103 
     | 
    
         
             
                  arr.pack("cccc")
         
     | 
| 
       104 
104 
     | 
    
         
             
                end
         
     | 
| 
       105 
105 
     | 
    
         | 
| 
      
 106 
     | 
    
         
            +
                def fixed_int(value)
         
     | 
| 
      
 107 
     | 
    
         
            +
                  Base.fixed_int(value)
         
     | 
| 
      
 108 
     | 
    
         
            +
                end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                #expects a hash like {tag => Smpp::OptionalParameter}
         
     | 
| 
      
 111 
     | 
    
         
            +
                def Base.optional_parameters_to_buffer(optionals)
         
     | 
| 
      
 112 
     | 
    
         
            +
                  output = ""
         
     | 
| 
      
 113 
     | 
    
         
            +
                  optionals.each do |tag, optional_param|
         
     | 
| 
      
 114 
     | 
    
         
            +
                    length = optional_param.value.length
         
     | 
| 
      
 115 
     | 
    
         
            +
                    buffer = []
         
     | 
| 
      
 116 
     | 
    
         
            +
                    buffer += [tag >> 8, tag & 0xff]
         
     | 
| 
      
 117 
     | 
    
         
            +
                    buffer += [length >> 8, length & 0xff]
         
     | 
| 
      
 118 
     | 
    
         
            +
                    output << buffer.pack('cccc') << optional_param.value
         
     | 
| 
      
 119 
     | 
    
         
            +
                  end
         
     | 
| 
      
 120 
     | 
    
         
            +
                  output
         
     | 
| 
      
 121 
     | 
    
         
            +
                end
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
                def optional_parameters_to_buffer(optionals)
         
     | 
| 
      
 124 
     | 
    
         
            +
                  Base.optional_parameters_to_buffer(optionals)
         
     | 
| 
      
 125 
     | 
    
         
            +
                end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
       106 
127 
     | 
    
         
             
                def next_sequence_number
         
     | 
| 
       107 
128 
     | 
    
         
             
                  Base.next_sequence_number
         
     | 
| 
       108 
129 
     | 
    
         
             
                end
         
     | 
| 
         @@ -147,10 +168,8 @@ module Smpp::Pdu 
     | 
|
| 
       147 
168 
     | 
    
         
             
                  optionals = {}
         
     | 
| 
       148 
169 
     | 
    
         
             
                  while not remaining_bytes.empty?
         
     | 
| 
       149 
170 
     | 
    
         
             
                    optional = {}
         
     | 
| 
       150 
     | 
    
         
            -
                     
     | 
| 
       151 
     | 
    
         
            -
                     
     | 
| 
       152 
     | 
    
         
            -
                    optional[:value] = remaining_bytes.slice!(0...optional[:length])
         
     | 
| 
       153 
     | 
    
         
            -
                    optionals[tag.hex] = optional
         
     | 
| 
      
 171 
     | 
    
         
            +
                    optional_parameter, remaining_bytes = Smpp::OptionalParameter.from_wire_data(remaining_bytes)
         
     | 
| 
      
 172 
     | 
    
         
            +
                    optionals[optional_parameter.tag] = optional_parameter
         
     | 
| 
       154 
173 
     | 
    
         
             
                  end
         
     | 
| 
       155 
174 
     | 
    
         | 
| 
       156 
175 
     | 
    
         
             
                  return optionals
         
     | 
    
        data/lib/smpp/pdu/submit_sm.rb
    CHANGED
    
    | 
         @@ -4,7 +4,7 @@ class Smpp::Pdu::SubmitSm < Smpp::Pdu::Base 
     | 
|
| 
       4 
4 
     | 
    
         
             
              attr_reader :service_type, :source_addr_ton, :source_addr_npi, :source_addr, :dest_addr_ton, :dest_addr_npi, 
         
     | 
| 
       5 
5 
     | 
    
         
             
                          :destination_addr, :esm_class, :protocol_id, :priority_flag, :schedule_delivery_time, 
         
     | 
| 
       6 
6 
     | 
    
         
             
                          :validity_period, :registered_delivery, :replace_if_present_flag, :data_coding, 
         
     | 
| 
       7 
     | 
    
         
            -
                          :sm_default_msg_id, :sm_length, :udh, :short_message
         
     | 
| 
      
 7 
     | 
    
         
            +
                          :sm_default_msg_id, :sm_length, :udh, :short_message, :optional_parameters
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              # Note: short_message (the SMS body) must be in iso-8859-1 format
         
     | 
| 
         @@ -33,11 +33,17 @@ class Smpp::Pdu::SubmitSm < Smpp::Pdu::Base 
     | 
|
| 
       33 
33 
     | 
    
         
             
                payload                  = @udh ? @udh + @short_message : @short_message 
         
     | 
| 
       34 
34 
     | 
    
         
             
                @sm_length               = payload.length
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
      
 36 
     | 
    
         
            +
                @optional_parameters     = options[:optional_parameters]
         
     | 
| 
      
 37 
     | 
    
         
            +
                
         
     | 
| 
       36 
38 
     | 
    
         
             
                # craft the string/byte buffer
         
     | 
| 
       37 
39 
     | 
    
         
             
                pdu_body = sprintf("%s\0%c%c%s\0%c%c%s\0%c%c%c%s\0%s\0%c%c%c%c%c%s", @service_type, @source_addr_ton, @source_addr_npi, @source_addr,
         
     | 
| 
       38 
40 
     | 
    
         
             
                @dest_addr_ton, @dest_addr_npi, @destination_addr, @esm_class, @protocol_id, @priority_flag, @schedule_delivery_time, @validity_period,
         
     | 
| 
       39 
41 
     | 
    
         
             
                @registered_delivery, @replace_if_present_flag, @data_coding, @sm_default_msg_id, @sm_length, payload)
         
     | 
| 
       40 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
                if @optional_parameters
         
     | 
| 
      
 44 
     | 
    
         
            +
                  pdu_body << optional_parameters_to_buffer(@optional_parameters)
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
       41 
47 
     | 
    
         
             
                seq ||= next_sequence_number
         
     | 
| 
       42 
48 
     | 
    
         | 
| 
       43 
49 
     | 
    
         
             
                super(SUBMIT_SM, 0, seq, pdu_body)        
         
     | 
| 
         @@ -70,8 +76,14 @@ class Smpp::Pdu::SubmitSm < Smpp::Pdu::Base 
     | 
|
| 
       70 
76 
     | 
    
         
             
                options[:data_coding], 
         
     | 
| 
       71 
77 
     | 
    
         
             
                options[:sm_default_msg_id],
         
     | 
| 
       72 
78 
     | 
    
         
             
                options[:sm_length], 
         
     | 
| 
       73 
     | 
    
         
            -
                 
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
      
 79 
     | 
    
         
            +
                remaining_bytes = body.unpack('Z*CCZ*CCZ*CCCZ*Z*CCCCCa*')
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                short_message = remaining_bytes.slice!(0...options[:sm_length])
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                #everything left in remaining_bytes is 3.4 optional parameters
         
     | 
| 
      
 84 
     | 
    
         
            +
                options[:optional_parameters] = optional_parameters(remaining_bytes)
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
                Smpp::Base.logger.debug "SubmitSM with source_addr=#{source_addr}, destination_addr=#{destination_addr}"
         
     | 
| 
       75 
87 
     | 
    
         | 
| 
       76 
88 
     | 
    
         
             
                new(source_addr, destination_addr, short_message, options, seq) 
         
     | 
| 
       77 
89 
     | 
    
         
             
              end
         
     | 
    
        data/ruby-smpp.gemspec
    CHANGED
    
    | 
         @@ -5,11 +5,11 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = %q{ruby-smpp}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "0. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.2.0"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Ray Krueger", "August Z. Flatby"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = %q{2010-02- 
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = %q{2010-02-11}
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = %q{Ruby implementation of the SMPP protocol, based on EventMachine. SMPP is a protocol that allows ordinary people outside the mobile network to exchange SMS messages directly with mobile operators.}
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.email = %q{raykrueger@gmail.com}
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
| 
         @@ -31,6 +31,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       31 
31 
     | 
    
         
             
                 "examples/sample_smsc.rb",
         
     | 
| 
       32 
32 
     | 
    
         
             
                 "lib/smpp.rb",
         
     | 
| 
       33 
33 
     | 
    
         
             
                 "lib/smpp/base.rb",
         
     | 
| 
      
 34 
     | 
    
         
            +
                 "lib/smpp/optional_parameter.rb",
         
     | 
| 
       34 
35 
     | 
    
         
             
                 "lib/smpp/pdu/base.rb",
         
     | 
| 
       35 
36 
     | 
    
         
             
                 "lib/smpp/pdu/bind_base.rb",
         
     | 
| 
       36 
37 
     | 
    
         
             
                 "lib/smpp/pdu/bind_resp_base.rb",
         
     | 
| 
         @@ -51,7 +52,9 @@ Gem::Specification.new do |s| 
     | 
|
| 
       51 
52 
     | 
    
         
             
                 "lib/smpp/transceiver.rb",
         
     | 
| 
       52 
53 
     | 
    
         
             
                 "lib/sms.rb",
         
     | 
| 
       53 
54 
     | 
    
         
             
                 "ruby-smpp.gemspec",
         
     | 
| 
       54 
     | 
    
         
            -
                 "test/ 
     | 
| 
      
 55 
     | 
    
         
            +
                 "test/optional_parameter_test.rb",
         
     | 
| 
      
 56 
     | 
    
         
            +
                 "test/smpp_test.rb",
         
     | 
| 
      
 57 
     | 
    
         
            +
                 "test/submit_sm_test.rb"
         
     | 
| 
       55 
58 
     | 
    
         
             
              ]
         
     | 
| 
       56 
59 
     | 
    
         
             
              s.homepage = %q{http://github.com/raykrueger/ruby-smpp}
         
     | 
| 
       57 
60 
     | 
    
         
             
              s.rdoc_options = ["--charset=UTF-8"]
         
     | 
| 
         @@ -60,7 +63,9 @@ Gem::Specification.new do |s| 
     | 
|
| 
       60 
63 
     | 
    
         
             
              s.rubygems_version = %q{1.3.5}
         
     | 
| 
       61 
64 
     | 
    
         
             
              s.summary = %q{Ruby implementation of the SMPP protocol, based on EventMachine.}
         
     | 
| 
       62 
65 
     | 
    
         
             
              s.test_files = [
         
     | 
| 
       63 
     | 
    
         
            -
                "test/ 
     | 
| 
      
 66 
     | 
    
         
            +
                "test/optional_parameter_test.rb",
         
     | 
| 
      
 67 
     | 
    
         
            +
                 "test/smpp_test.rb",
         
     | 
| 
      
 68 
     | 
    
         
            +
                 "test/submit_sm_test.rb",
         
     | 
| 
       64 
69 
     | 
    
         
             
                 "examples/sample_gateway.rb",
         
     | 
| 
       65 
70 
     | 
    
         
             
                 "examples/sample_smsc.rb"
         
     | 
| 
       66 
71 
     | 
    
         
             
              ]
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'smpp'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            class OptionalParameterTest < Test::Unit::TestCase
         
     | 
| 
      
 6 
     | 
    
         
            +
              include Smpp
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              def test_symbol_accessor
         
     | 
| 
      
 9 
     | 
    
         
            +
                op = OptionalParameter.new(0x2150, "abcd")
         
     | 
| 
      
 10 
     | 
    
         
            +
                assert_equal "abcd", op[:value]
         
     | 
| 
      
 11 
     | 
    
         
            +
                assert_equal 0x2150, op[:tag]
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def test_bad_data_does_not_puke
         
     | 
| 
      
 15 
     | 
    
         
            +
                assert_raise RuntimeError do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  OptionalParameter.from_wire_data("")
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              def test_from_wire_data
         
     | 
| 
      
 21 
     | 
    
         
            +
                data = "\041\120\000\002\001\177"
         
     | 
| 
      
 22 
     | 
    
         
            +
                op, remaining_data = OptionalParameter.from_wire_data(data)
         
     | 
| 
      
 23 
     | 
    
         
            +
                assert_not_nil op, "op should not be nil"
         
     | 
| 
      
 24 
     | 
    
         
            +
                assert_equal 0x2150, op.tag
         
     | 
| 
      
 25 
     | 
    
         
            +
                assert_equal "\001\177", op.value
         
     | 
| 
      
 26 
     | 
    
         
            +
                assert_equal "", remaining_data
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'smpp'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            class SubmitSmTest < Test::Unit::TestCase
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              def test_this_is_not_a_real_test
         
     | 
| 
      
 8 
     | 
    
         
            +
                value = [383 >> 8, 383 & 0xff]
         
     | 
| 
      
 9 
     | 
    
         
            +
                optionals = {0x2150 => Smpp::OptionalParameter.new(0x2150, value.pack('cc'))}
         
     | 
| 
      
 10 
     | 
    
         
            +
                pdu = Smpp::Pdu::SubmitSm.new('12345', '54321', "Ba Ba Boosh", {:optional_parameters => optionals})
         
     | 
| 
      
 11 
     | 
    
         
            +
                Smpp::Base.hex_debug(pdu.data)
         
     | 
| 
      
 12 
     | 
    
         
            +
                puts "PDU DATA", pdu.data.inspect
         
     | 
| 
      
 13 
     | 
    
         
            +
                
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              def test_fixnum_optional_parameter
         
     | 
| 
      
 17 
     | 
    
         
            +
                value = [383 >> 8, 383 & 0xff]
         
     | 
| 
      
 18 
     | 
    
         
            +
                optionals = {0x2150 => Smpp::OptionalParameter.new(0x2150, value.pack('cc'))}
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                pdu = Smpp::Pdu::SubmitSm.new('12345', '54321', "Ba Ba Boosh", {:optional_parameters => optionals})
         
     | 
| 
      
 21 
     | 
    
         
            +
                pdu_from_wire = Smpp::Pdu::Base.create(pdu.data)
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                assert optional = pdu_from_wire.optional_parameters[0x2150]
         
     | 
| 
      
 24 
     | 
    
         
            +
                
         
     | 
| 
      
 25 
     | 
    
         
            +
                optional_value = optional[:value].unpack('n')[0]
         
     | 
| 
      
 26 
     | 
    
         
            +
                assert_equal 383, optional_value
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              def test_string_optional_parameter
         
     | 
| 
      
 30 
     | 
    
         
            +
                optionals = {0x2150 => Smpp::OptionalParameter.new(0x2150, "boosh")}
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                pdu = Smpp::Pdu::SubmitSm.new('12345', '54321', "Ba Ba Boosh", {:optional_parameters => optionals})
         
     | 
| 
      
 33 
     | 
    
         
            +
                pdu_from_wire = Smpp::Pdu::Base.create(pdu.data)
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                assert optional = pdu_from_wire.optional_parameters[0x2150]
         
     | 
| 
      
 36 
     | 
    
         
            +
                
         
     | 
| 
      
 37 
     | 
    
         
            +
                optional_value = optional[:value].unpack("A*")[0]
         
     | 
| 
      
 38 
     | 
    
         
            +
                assert_equal 'boosh', optional_value
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: ruby-smpp
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Ray Krueger
         
     | 
| 
         @@ -10,7 +10,7 @@ autorequire: 
     | 
|
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            date: 2010-02- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2010-02-11 00:00:00 -06:00
         
     | 
| 
       14 
14 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       15 
15 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       16 
16 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -47,6 +47,7 @@ files: 
     | 
|
| 
       47 
47 
     | 
    
         
             
            - examples/sample_smsc.rb
         
     | 
| 
       48 
48 
     | 
    
         
             
            - lib/smpp.rb
         
     | 
| 
       49 
49 
     | 
    
         
             
            - lib/smpp/base.rb
         
     | 
| 
      
 50 
     | 
    
         
            +
            - lib/smpp/optional_parameter.rb
         
     | 
| 
       50 
51 
     | 
    
         
             
            - lib/smpp/pdu/base.rb
         
     | 
| 
       51 
52 
     | 
    
         
             
            - lib/smpp/pdu/bind_base.rb
         
     | 
| 
       52 
53 
     | 
    
         
             
            - lib/smpp/pdu/bind_resp_base.rb
         
     | 
| 
         @@ -67,7 +68,9 @@ files: 
     | 
|
| 
       67 
68 
     | 
    
         
             
            - lib/smpp/transceiver.rb
         
     | 
| 
       68 
69 
     | 
    
         
             
            - lib/sms.rb
         
     | 
| 
       69 
70 
     | 
    
         
             
            - ruby-smpp.gemspec
         
     | 
| 
      
 71 
     | 
    
         
            +
            - test/optional_parameter_test.rb
         
     | 
| 
       70 
72 
     | 
    
         
             
            - test/smpp_test.rb
         
     | 
| 
      
 73 
     | 
    
         
            +
            - test/submit_sm_test.rb
         
     | 
| 
       71 
74 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       72 
75 
     | 
    
         
             
            homepage: http://github.com/raykrueger/ruby-smpp
         
     | 
| 
       73 
76 
     | 
    
         
             
            licenses: []
         
     | 
| 
         @@ -97,6 +100,8 @@ signing_key: 
     | 
|
| 
       97 
100 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       98 
101 
     | 
    
         
             
            summary: Ruby implementation of the SMPP protocol, based on EventMachine.
         
     | 
| 
       99 
102 
     | 
    
         
             
            test_files: 
         
     | 
| 
      
 103 
     | 
    
         
            +
            - test/optional_parameter_test.rb
         
     | 
| 
       100 
104 
     | 
    
         
             
            - test/smpp_test.rb
         
     | 
| 
      
 105 
     | 
    
         
            +
            - test/submit_sm_test.rb
         
     | 
| 
       101 
106 
     | 
    
         
             
            - examples/sample_gateway.rb
         
     | 
| 
       102 
107 
     | 
    
         
             
            - examples/sample_smsc.rb
         
     |