pdu_tools 0.0.2 → 0.0.3
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.
- checksums.yaml +4 -4
- data/lib/pdu_tools/decoder.rb +16 -8
- data/lib/pdu_tools/encoder.rb +0 -1
- data/spec/decoder_spec.rb +10 -0
- data/spec/spec_helper.rb +6 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06ded51dcb3fdfb9d87daaef9a8c02ef5e19de63
|
4
|
+
data.tar.gz: 3efee7cc8d604557a5fa21a1d4df903d91a4d530
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb25dcbe8ac3bdb520903503e76b2fe6737e1440cc3ba4b9db71afed3047c3307ba7aa84b8cbba4155d12a01c142d673fc7156a8977416183d761105a725b0db
|
7
|
+
data.tar.gz: ed46a7682758a220c4b26ce19611b2f93327f7b4d04768faabeea086b38b51d7c4380abd36d785bc96a2168755ddbe10d6100558d0536a7831a016863efcc469
|
data/lib/pdu_tools/decoder.rb
CHANGED
@@ -12,16 +12,16 @@ module PDUTools
|
|
12
12
|
@sca_length = take(2, :integer) * 2 # Service center address length
|
13
13
|
if @sca_length > 0
|
14
14
|
@sca_type = parse_address_type take(2) # Service center address type
|
15
|
-
@sca = parse_address take(@sca_length - 2), @sca_type
|
15
|
+
@sca = parse_address take(@sca_length - 2), @sca_type, @sca_length # Service center address
|
16
16
|
end
|
17
17
|
@pdu_type = parse_pdu_type take(2, :binary) # PDU type octet
|
18
18
|
@message_reference = take(2) if @pdu_type[:mti] == :sms_submit
|
19
19
|
@address_length = take(2, :integer)
|
20
20
|
@address_type = parse_address_type take(2)
|
21
|
-
@address = parse_address take(@address_length), @address_type
|
21
|
+
@address = parse_address take(@address_length), @address_type, @address_length
|
22
22
|
@pid = take(2)
|
23
23
|
@data_coding_scheme = parse_data_coding_scheme take(2, :binary)
|
24
|
-
@sc_timestamp = parse_7byte_timestamp take(14) if @pdu_type[:mti]
|
24
|
+
@sc_timestamp = parse_7byte_timestamp take(14) if [:sms_deliver, :sms_deliver_report].include? @pdu_type[:mti]
|
25
25
|
case @pdu_type[:vpf]
|
26
26
|
when :absolute
|
27
27
|
@validity_period = parse_7byte_timestamp take(14)
|
@@ -68,14 +68,22 @@ module PDUTools
|
|
68
68
|
when "81"
|
69
69
|
:national
|
70
70
|
else
|
71
|
-
|
71
|
+
if type.to_i(16).to_s(2)[1,3] == "101"
|
72
|
+
:a7bit
|
73
|
+
else
|
74
|
+
raise StandardError, "unknown address type: #{type}"
|
75
|
+
end
|
72
76
|
end
|
73
77
|
end
|
74
78
|
|
75
|
-
def parse_address address, type
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
+
def parse_address address, type, length
|
80
|
+
if type == :a7bit
|
81
|
+
address = decode7bit address, length
|
82
|
+
else
|
83
|
+
address = swapped2normal address
|
84
|
+
if type == :international
|
85
|
+
address.prepend "+"
|
86
|
+
end
|
79
87
|
end
|
80
88
|
address
|
81
89
|
end
|
data/lib/pdu_tools/encoder.rb
CHANGED
@@ -101,7 +101,6 @@ module PDUTools
|
|
101
101
|
|
102
102
|
def prepare_recipient recipient
|
103
103
|
Phoner::Phone.default_country_code ||= "421"
|
104
|
-
|
105
104
|
address_type = "91" # International
|
106
105
|
address = Phoner::Phone.parse(recipient).format("%c%a%n")
|
107
106
|
address_length = "%02X" % address.length
|
data/spec/decoder_spec.rb
CHANGED
@@ -32,4 +32,14 @@ describe PDUTools::Decoder do
|
|
32
32
|
expect(message_part.user_data_header[:part_number]).to eq 1
|
33
33
|
end
|
34
34
|
end
|
35
|
+
|
36
|
+
context "GSM PLMNS address type" do
|
37
|
+
let(:pdu) { "07912491500030592414D044241354C4C3E5E5F91C00004190200180108095D6B0BEECCE83F4E17558EF4EAF5920B2BB3C0759C36D10485C27D741E4B7BC3E7EDBC3EE32481F9EA7CBEC751E0485324132980D0793C96EB7196E0792C16C38984C76BBCD6E3B900C66C3C164B2DB6D666381C86F71BA2C5F8741319A2CC7CA818A75B90BB47CBBE9E1351D0482E568B4D94D768BDD5C202292092AE2E1F2F27C0E02" }
|
38
|
+
it do
|
39
|
+
message_part = decoder.decode
|
40
|
+
expect(message_part.address).to eq("DHL Express")
|
41
|
+
expect(message_part.body).to match /^Vazeny zakaznik/
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
35
45
|
end
|
data/spec/spec_helper.rb
CHANGED