pdu_sms 0.2.1 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bdf84e22c49490abd41166d067c8b9dfb1288e41
4
- data.tar.gz: 9f6de0e1f636f2eaabec8ab45a7d209d92d38f6d
3
+ metadata.gz: a560cefebc50cea65ac1fa3e2d2c8806157500d8
4
+ data.tar.gz: b181a063478093c3e5d190188ca1872ef873f040
5
5
  SHA512:
6
- metadata.gz: b374086654b20ba8c55808b9471b81d4708274300db72e25c95655c753b5d2ec71f4efa74bae7426a52bc88495a5d9745cb3b2a0fae6148358fc6714986cd8a5
7
- data.tar.gz: 6b6ca69db57b58398c98937b8965816cc9afff8785dcb71b3b19b7739d0e8c51b07b5317747a7ed5a15e5265024bf470a6f6a2b0d34df5cfa2c3731d10fd43a9
6
+ metadata.gz: 5c9c5745bc04b440abdf1d1b7768c1e10720366dc51c5bbe810768c1ff14e04d88ae51dc0916a54f954c6b28f5a1a542760b62c004af8b753162f7d752c69e1c
7
+ data.tar.gz: d965d612c272ebfade71dd99df18bd34b8b40c8d161b3422515d5159a09c36e2e8a85ed5f4d1c2e9795637d4dcba25761625d713c4cc81d8bfbd8c24b20fa2ad
data/bin/console CHANGED
@@ -4,5 +4,5 @@ require "bundler/setup"
4
4
  require "pdu_sms"
5
5
  require "irb"
6
6
 
7
- include PduSms
7
+ #include PduSms
8
8
  IRB.start
@@ -1,7 +1,8 @@
1
1
  module PduSms
2
+
2
3
  module Helpers
3
4
 
4
- def encode_bcd(str)
5
+ def self.encode_bcd(str)
5
6
  if String == str.class and str.length % 2 == 0
6
7
  str.split('').enum_for(:each_slice, 2).to_a.collect{|array| array[0], array[1] = array[1], array[0]}.join
7
8
  else
@@ -9,23 +10,23 @@ module PduSms
9
10
  end
10
11
  end
11
12
 
12
- def decode_bcd(str)
13
+ def self.decode_bcd(str)
13
14
  encode_bcd(str)
14
15
  end
15
16
 
16
- def decode_ucs2(message)
17
+ def self.decode_ucs2(message)
17
18
  message.split('').enum_for(:each_slice,4).to_a.collect(&:join).collect {|o| o.to_i(16).chr(Encoding::UTF_8)}.join
18
19
  end
19
20
 
20
- def encode_ucs2(message)
21
+ def self.encode_ucs2(message)
21
22
  message.chars.to_a.collect {|char| '%04X' % char.ord}.join
22
23
  end
23
24
 
24
- def is_7bit?(message)
25
+ def self.is_7bit?(message)
25
26
  /^[A-Za-z0-9\@£\$¥èéùìòÇØøÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ\!\"#¤\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?¡¿ÄÖÑܧäöñüà\^\{\}\\\[~\]\|€]*$/ === message
26
27
  end
27
28
 
28
- def encode_7bit(string)
29
+ def self.encode_7bit(string)
29
30
  string_encode = []
30
31
  string.chars.each_slice(8).each do |chars|
31
32
  chars.each_with_index do |char, i|
@@ -41,7 +42,7 @@ module PduSms
41
42
  string_encode.collect {|x| '%02X' % x.to_i(2)}.join.upcase
42
43
  end
43
44
 
44
- def decode_7bit(string)
45
+ def self.decode_7bit(string)
45
46
  text = ''
46
47
  string.split('').each_slice(2).collect {|s| '%08b' % s.join.to_i(16)}.each_slice(7) do |bytes|
47
48
  ending = ''
@@ -54,11 +55,11 @@ module PduSms
54
55
  text
55
56
  end
56
57
 
57
- def encode_8bit(string)
58
+ def self.encode_8bit(string)
58
59
  string.chars.to_a.collect {|char| '%02X' % char.ord }.join
59
60
  end
60
61
 
61
- def decode_8bit(string)
62
+ def self.decode_8bit(string)
62
63
  string.split('').enum_for(:each_slice, 2).to_a.collect(&:join).collect {|char| char.to_i(16).chr}.join
63
64
  end
64
65
 
data/lib/pdu_sms/phone.rb CHANGED
@@ -2,8 +2,6 @@ module PduSms
2
2
 
3
3
  class Phone
4
4
 
5
- include Helpers
6
-
7
5
  attr_reader(:number_plan_identifier, :type_number)
8
6
 
9
7
  @phone_number = ''
@@ -27,7 +25,7 @@ module PduSms
27
25
  elsif /^\d+$/ === phone_number
28
26
  @number_plan_identifier = ID_UNKNOWN
29
27
  @type_number = TP_ISDN
30
- elsif is_7bit?(phone_number)
28
+ elsif Helpers.is_7bit?(phone_number)
31
29
  @number_plan_identifier = ID_ALPHANUMERIC
32
30
  @type_number = TP_UNKNOWN
33
31
  else
@@ -38,7 +36,7 @@ module PduSms
38
36
 
39
37
  def _check_phone?
40
38
  if @number_plan_identifier == ID_ALPHANUMERIC
41
- is_7bit?(@phone_number)
39
+ Helpers.is_7bit?(@phone_number)
42
40
  else
43
41
  /^\d+$/ === @phone_number
44
42
  end
@@ -46,7 +44,7 @@ module PduSms
46
44
 
47
45
  def _get_hex_type_and_phone
48
46
  if @number_plan_identifier == ID_ALPHANUMERIC
49
- '%s%s' % [_type_of_address_hex, encode_7bit(@phone_number)]
47
+ '%s%s' % [_type_of_address_hex, Helpers.encode_7bit(@phone_number)]
50
48
  else
51
49
  '%s%s' % [_type_of_address_hex, _convert_to_bcd_format]
52
50
  end
@@ -95,7 +93,7 @@ module PduSms
95
93
  if clear_phone.length % 2 != 0
96
94
  clear_phone += 'F'
97
95
  end
98
- encode_bcd(clear_phone)
96
+ Helpers.encode_bcd(clear_phone)
99
97
  end
100
98
 
101
99
  def _convert_to_normal_format(bcd)
@@ -108,9 +106,9 @@ module PduSms
108
106
  @number_plan_identifier = number_type[1..3].to_i(2)
109
107
  @type_number = number_type[4..7].to_i(2)
110
108
  if @number_plan_identifier == ID_ALPHANUMERIC
111
- @phone_number = decode_7bit(bcd[2..-1])
109
+ @phone_number = Helpers.decode_7bit(bcd[2..-1])
112
110
  else
113
- @phone_number = decode_bcd(bcd[2..-1])[/[fF]$/] ? decode_bcd(bcd[2..-1])[0..-2] : decode_bcd(bcd[2..-1])
111
+ @phone_number = Helpers.decode_bcd(bcd[2..-1])[/[fF]$/] ? Helpers.decode_bcd(bcd[2..-1])[0..-2] : Helpers.decode_bcd(bcd[2..-1])
114
112
  end
115
113
  self
116
114
  end
@@ -4,8 +4,6 @@ module PduSms
4
4
 
5
5
  class ServiceCenterTimeStamp
6
6
 
7
- include Helpers
8
-
9
7
  def initialize(type, data)
10
8
  if type == :encode_sc
11
9
  @scts = _absolute_timestamp data
@@ -57,11 +55,11 @@ module PduSms
57
55
  tz[0] = ?1
58
56
  date_time += '%02X' % tz.to_i(2)
59
57
  end
60
- @scts = encode_bcd(date_time)
58
+ @scts = Helpers.encode_bcd(date_time)
61
59
  end
62
60
 
63
61
  def _absolute_pdu(vp)
64
- ss = decode_bcd(vp)
62
+ ss = Helpers.decode_bcd(vp)
65
63
  year, month, day, hours, minutes, seconds, zone_quarter = Time.now.year.to_s[0..1] + ss[0..1], ss[2..3], ss[4..5], ss[6..7], ss[8..9], ss[10..11], ss[12..13]
66
64
  tz = '%08b' % zone_quarter
67
65
  if tz[0] == '1'
@@ -1,8 +1,6 @@
1
1
  module PduSms
2
2
  class UserData
3
3
 
4
- include Helpers
5
-
6
4
  def initialize(message, coding, ied1: false, ied2: false, ied3: false, udhl: false, iei: false, iedl: false)
7
5
  @coding = _check_coding coding
8
6
  @message = _check_message message, coding, ied1
@@ -16,7 +14,7 @@ module PduSms
16
14
 
17
15
  def UserData.encode_ms(message, coding=:auto)
18
16
  message_array = [message]
19
- coding = is_7bit?(message) ? ALPHABET_7BIT : ALPHABET_16BIT if coding == :auto
17
+ coding = Helpers.is_7bit?(message) ? ALPHABET_7BIT : ALPHABET_16BIT if coding == :auto
20
18
  if coding == ALPHABET_7BIT
21
19
  if message.length > 160
22
20
  message_array = message.scan(/.{1,152}/)
@@ -49,13 +47,13 @@ module PduSms
49
47
  dcs = DataCodingScheme.decode_ms(pdu_str)
50
48
  if dcs.alphabet_7bit?
51
49
  coding = dcs.get_alphabet.to_i(2)
52
- message = decode_7bit(message)
50
+ message = Helpers.decode_7bit(message)
53
51
  elsif dcs.alphabet_8bit?
54
52
  coding = dcs.get_alphabet.to_i(2)
55
- message = decode_8bit(message)
53
+ message = Helpers.decode_8bit(message)
56
54
  elsif dcs.alphabet_16bit?
57
55
  coding = dcs.get_alphabet.to_i(2)
58
- message = decode_ucs2(message)
56
+ message = Helpers.decode_ucs2(message)
59
57
  else
60
58
  raise ArgumentError, 'The "pdu_str" is incorrect'
61
59
  end
@@ -79,13 +77,13 @@ module PduSms
79
77
  dcs = DataCodingScheme.decode_sc(pdu_str)
80
78
  if dcs.alphabet_7bit?
81
79
  coding = dcs.get_alphabet.to_i(2)
82
- message = decode_7bit(message)
80
+ message = Helpers.decode_7bit(message)
83
81
  elsif dcs.alphabet_8bit?
84
82
  coding = dcs.get_alphabet.to_i(2)
85
- message = decode_8bit(message)
83
+ message = Helpers.decode_8bit(message)
86
84
  elsif dcs.alphabet_16bit?
87
85
  coding = dcs.get_alphabet.to_i(2)
88
- message = decode_ucs2(message)
86
+ message = Helpers.decode_ucs2(message)
89
87
  else
90
88
  raise ArgumentError, 'The "pdu_str" is incorrect'
91
89
  end
@@ -176,11 +174,11 @@ module PduSms
176
174
  def get_hex
177
175
  message = case @coding
178
176
  when ALPHABET_7BIT
179
- encode_7bit(@message)
177
+ Helpers.encode_7bit(@message)
180
178
  when ALPHABET_8BIT
181
- encode_8bit(@message)
179
+ Helpers.encode_8bit(@message)
182
180
  when ALPHABET_16BIT
183
- encode_ucs2(@message)
181
+ Helpers.encode_ucs2(@message)
184
182
  end
185
183
  '%s%s%s%s%s%s%s' % [get_udhl, get_iei, get_iedl, get_ied1, get_ied2, get_ied3, message]
186
184
  end
@@ -3,7 +3,6 @@ require 'date'
3
3
  module PduSms
4
4
  class ValidityPeriod
5
5
 
6
- include Helpers
7
6
 
8
7
  def initialize(type, times, type_time=false)
9
8
  @type_time = type_time
@@ -145,11 +144,11 @@ module PduSms
145
144
  tz[0] = ?1
146
145
  date_time += '%02X' % tz.to_i(2)
147
146
  end
148
- @vp = encode_bcd(date_time)
147
+ @vp = Helpers.encode_bcd(date_time)
149
148
  end
150
149
 
151
150
  def _absolute_pdu(vp)
152
- ss = decode_bcd(vp)
151
+ ss = Helpers.decode_bcd(vp)
153
152
  year, month, day, hours, minutes, seconds, zone_quarter = Time.now.year.to_s[0..1] + ss[0..1], ss[2..3], ss[4..5], ss[6..7], ss[8..9], ss[10..11], ss[12..13]
154
153
  tz = '%08b' % zone_quarter
155
154
  if tz[0] == '1'
@@ -1,3 +1,3 @@
1
1
  module PduSms
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
data/lib/pdu_sms.rb CHANGED
@@ -17,7 +17,6 @@ require 'pdu_sms/version'
17
17
 
18
18
  module PduSms
19
19
 
20
- include Helpers
21
20
  ##
22
21
  # Type of number (TON):
23
22
  ID_UNKNOWN = 0b000 # Unknown
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pdu_sms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikhail Stolyarov