mobile-subscriber 0.0.1.alpha2 → 0.0.1.alpha3
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/mobile-subscriber.rb +4 -3
- data/lib/mobile_subscriber/detection/{from_msisdn_header.rb → from_msisdn_http_request_header.rb} +18 -12
- data/lib/mobile_subscriber/detection/from_x_nokia_msisdn_http_request_header.rb +52 -0
- data/lib/mobile_subscriber/detection/from_x_up_calling_line_id_http_request_header.rb +99 -0
- data/lib/mobile_subscriber/detection/from_x_up_ch_msisdn_http_request_header.rb +44 -0
- data/lib/mobile_subscriber/dictionaries/dialing_and_country_codes.rb +25 -0
- data/lib/mobile_subscriber/isdn.rb +7 -4
- data/lib/mobile_subscriber/version.rb +1 -1
- data/spec/factories/requests.rb +5 -4
- data/spec/models/isdn_spec.rb +39 -0
- data/spec/spec_helper.rb +1 -1
- metadata +6 -4
- data/lib/mobile_subscriber/detection/from_x_nokia_msisdn_header.rb +0 -47
- data/lib/mobile_subscriber/detection/from_x_up_ch_msisdn_header.rb +0 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05c532c346541fb9e968134f7513aae13e009372
|
4
|
+
data.tar.gz: 3397d7e1ab671876b3d3b20f435451369c8f40a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96511b79ddd731ced98b6c72f626d70971725fac9820e0515c0f62d53a6c4564f6a168ef916d0d9119578ddf60144bd6a349519ec41717fb732a7f8130a92c58
|
7
|
+
data.tar.gz: 7acf06ddc07c20291526bf1940212229d4de5907e70f45a447f5cb93a9044513b339becc1f5293ac34f9a87c40d9b04a0954e1d24dd389d03dd84d1c7014759d
|
data/lib/mobile-subscriber.rb
CHANGED
@@ -8,8 +8,9 @@ module MobileSubscriber
|
|
8
8
|
|
9
9
|
module Detection
|
10
10
|
extend ActiveSupport::Autoload
|
11
|
-
autoload :
|
12
|
-
autoload :
|
13
|
-
autoload :
|
11
|
+
autoload :FromMsisdnHttpRequestHeader
|
12
|
+
autoload :FromXNokiaMsisdnHttpRequestHeader
|
13
|
+
autoload :FromXUpChMsisdnHttpRequestHeader
|
14
|
+
autoload :FromXUpCallingLineIdHttpRequestHeader
|
14
15
|
end
|
15
16
|
end
|
data/lib/mobile_subscriber/detection/{from_msisdn_header.rb → from_msisdn_http_request_header.rb}
RENAMED
@@ -4,7 +4,7 @@ module MobileSubscriber
|
|
4
4
|
# Módulo que provee métodos de deteccion y validacion para MSISDN por el
|
5
5
|
# header de HTTP 'Msisdn':
|
6
6
|
# - Vivo Brasil
|
7
|
-
module
|
7
|
+
module FromMsisdnHttpRequestHeader
|
8
8
|
|
9
9
|
extend ActiveSupport::Concern
|
10
10
|
|
@@ -15,20 +15,26 @@ module MobileSubscriber
|
|
15
15
|
|
16
16
|
isdn_attributes = nil
|
17
17
|
|
18
|
-
if msisdn = request.env[header_env_key]
|
18
|
+
isdn_attributes = if msisdn = request.env[header_env_key] and msisdn.length >= 8
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
# Vivo BR (Claro):
|
25
|
-
when msisdn =~ /\A55/ then {
|
26
|
-
id: msisdn,
|
27
|
-
mobile_country_code: "724",
|
28
|
-
mobile_network_code: "06"
|
20
|
+
detection_cues = {
|
21
|
+
remote_ip: request.env["REMOTE_ADDR"],
|
22
|
+
http_request_headers: { 'Msisdn' => msisdn }
|
29
23
|
}
|
30
24
|
|
31
|
-
|
25
|
+
country_code = MobileSubscriber::DIALING_COUNTRY_CODES[msisdn[0,2]]
|
26
|
+
|
27
|
+
# Determinar la procedencia del MSISDN
|
28
|
+
# TODO: Validar por IP, etc.
|
29
|
+
case country_code
|
30
|
+
when 'BR'
|
31
|
+
# Vivo BR (Claro):
|
32
|
+
{
|
33
|
+
id: msisdn,
|
34
|
+
mobile_country_code: "724",
|
35
|
+
mobile_network_code: "06"
|
36
|
+
}
|
37
|
+
end
|
32
38
|
|
33
39
|
end
|
34
40
|
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module MobileSubscriber
|
2
|
+
module Detection
|
3
|
+
|
4
|
+
# Módulo que provee métodos de deteccion y validacion para MSISDN's de:
|
5
|
+
# - Telcel México
|
6
|
+
# - Claro Argentina
|
7
|
+
module FromXNokiaMsisdnHttpRequestHeader
|
8
|
+
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
module ClassMethods
|
12
|
+
def extract_from_x_nokia_msisdn_http_request_header(request)
|
13
|
+
|
14
|
+
header_name = 'X-Nokia-Msisdn'
|
15
|
+
header_env_key = "HTTP_#{header_name.gsub('-','_').upcase}"
|
16
|
+
|
17
|
+
isdn_attributes = if msisdn = request.env[header_env_key] and msisdn.length >= 8
|
18
|
+
detection_cues = {
|
19
|
+
remote_ip: request.env["REMOTE_ADDR"],
|
20
|
+
http_request_headers: { 'X-Nokia-Msisdn' => msisdn }
|
21
|
+
}
|
22
|
+
|
23
|
+
country_code = MobileSubscriber::DIALING_COUNTRY_CODES[msisdn[0,2]]
|
24
|
+
|
25
|
+
# Determinar la procedencia del MSISDN
|
26
|
+
# TODO: Validar por IP, etc.
|
27
|
+
case country_code
|
28
|
+
when 'MX'
|
29
|
+
# Telcel México:
|
30
|
+
{
|
31
|
+
id: msisdn,
|
32
|
+
mobile_country_code: "334",
|
33
|
+
mobile_network_code: "020"
|
34
|
+
}.merge(detection_cues: detection_cues)
|
35
|
+
|
36
|
+
# Claro Argentina:
|
37
|
+
when 'AR'
|
38
|
+
{
|
39
|
+
id: msisdn,
|
40
|
+
mobile_country_code: "722",
|
41
|
+
mobile_network_code: "330"
|
42
|
+
}.merge(detection_cues: detection_cues)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
isdn_attributes
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
module MobileSubscriber
|
2
|
+
module Detection
|
3
|
+
|
4
|
+
# Módulo que provee métodos de deteccion y validacion para MSISDN por el
|
5
|
+
# header de HTTP 'X-Up-Calling-Line-Id':
|
6
|
+
# - Claro Perú
|
7
|
+
# - TIM (Telecom Italia Mobile) Brasil
|
8
|
+
# - OI Brasil
|
9
|
+
# - Movistar México
|
10
|
+
# - Movistar Argentina
|
11
|
+
# - Movistar Ecuador
|
12
|
+
# - Movistar Perú
|
13
|
+
module FromXUpCallingLineIdHttpRequestHeader
|
14
|
+
|
15
|
+
extend ActiveSupport::Concern
|
16
|
+
|
17
|
+
module ClassMethods
|
18
|
+
def extract_from_x_up_calling_line_id_http_request_header(request)
|
19
|
+
header_name = 'X-Up-Calling-Line-Id'
|
20
|
+
header_env_key = "HTTP_#{header_name.gsub('-','_').upcase}"
|
21
|
+
|
22
|
+
isdn_attributes = if msisdn = request.env[header_env_key] and msisdn.length >= 8
|
23
|
+
|
24
|
+
detection_cues = {
|
25
|
+
remote_ip: request.env["REMOTE_ADDR"],
|
26
|
+
http_request_headers: { header_name => msisdn }
|
27
|
+
}
|
28
|
+
|
29
|
+
country_code = MobileSubscriber::DIALING_COUNTRY_CODES[msisdn[0,2]] || MobileSubscriber::DIALING_COUNTRY_CODES[msisdn[0,3]]
|
30
|
+
|
31
|
+
case country_code
|
32
|
+
when 'PE'
|
33
|
+
if (http_request_via_header = request.env["HTTP_VIA"]).present? and http_request_via_header =~ /Comverse/i
|
34
|
+
# Is Claro Peru subscriber:
|
35
|
+
detection_cues[:http_request_headers]['Via'] = http_request_via_header
|
36
|
+
{
|
37
|
+
id: msisdn,
|
38
|
+
mobile_country_code: "716",
|
39
|
+
mobile_network_code: "10"
|
40
|
+
}.merge(detection_cues: detection_cues)
|
41
|
+
else
|
42
|
+
# Is a Movistar Peru subscriber:
|
43
|
+
{
|
44
|
+
id: msisdn,
|
45
|
+
mobile_country_code: "716",
|
46
|
+
mobile_network_code: "06"
|
47
|
+
}.merge(detection_cues: detection_cues)
|
48
|
+
end
|
49
|
+
when 'BR'
|
50
|
+
if http_request_x_msp_apn_header = request.env["HTTP_X_MSP_APN"] and http_request_x_msp_apn_header.present?
|
51
|
+
detection_cues[:http_request_headers]['X-Msp-Apn'] = http_request_x_msp_apn_header
|
52
|
+
if http_request_x_msp_apn_header =~ /OI/i
|
53
|
+
# Is a Oi Brazil subscriber:
|
54
|
+
{
|
55
|
+
id: msisdn,
|
56
|
+
mobile_country_code: "724",
|
57
|
+
mobile_network_code: "30"
|
58
|
+
}.merge(detection_cues: detection_cues)
|
59
|
+
else
|
60
|
+
# Is a TIM Brasil subscriber:
|
61
|
+
{
|
62
|
+
id: msisdn,
|
63
|
+
mobile_country_code: "724",
|
64
|
+
mobile_network_code: "02"
|
65
|
+
}.merge(detection_cues: detection_cues)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
when 'MX'
|
69
|
+
# Is a Movistar Mexico subscriber:
|
70
|
+
{
|
71
|
+
id: msisdn,
|
72
|
+
mobile_country_code: "334",
|
73
|
+
mobile_network_code: "030"
|
74
|
+
}.merge(detection_cues: detection_cues)
|
75
|
+
when 'AR'
|
76
|
+
# Is a Movistar Argentina subscriber:
|
77
|
+
# TODO: Detect if MNC is 010 or 070 (Different MHz Bands)
|
78
|
+
{
|
79
|
+
id: msisdn,
|
80
|
+
mobile_country_code: "722",
|
81
|
+
mobile_network_code: "010"
|
82
|
+
}.merge(detection_cues: detection_cues)
|
83
|
+
when 'EC'
|
84
|
+
# Is a Movistar Ecuador subscriber:
|
85
|
+
{
|
86
|
+
id: msisdn,
|
87
|
+
mobile_country_code: "740",
|
88
|
+
mobile_network_code: "00"
|
89
|
+
}.merge(detection_cues: detection_cues)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
isdn_attributes
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module MobileSubscriber
|
2
|
+
module Detection
|
3
|
+
|
4
|
+
# Módulo que provee métodos de deteccion y validacion para MSISDN's de:
|
5
|
+
# - Claro Brasil
|
6
|
+
module FromXUpChMsisdnHttpRequestHeader
|
7
|
+
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
def extract_from_x_up_ch_msisdn_http_request_header(request)
|
12
|
+
header_name = 'X-Up-Ch-Msisdn'
|
13
|
+
header_env_key = "HTTP_#{header_name.gsub('-','_').upcase}"
|
14
|
+
|
15
|
+
isdn_attributes = if msisdn = request.env[header_env_key] and msisdn.length >= 8
|
16
|
+
|
17
|
+
detection_cues = {
|
18
|
+
remote_ip: request.env["REMOTE_ADDR"],
|
19
|
+
http_request_headers: { 'X-Up-Ch-Msisdn' => msisdn }
|
20
|
+
}
|
21
|
+
|
22
|
+
country_code = MobileSubscriber::DIALING_COUNTRY_CODES[msisdn[0,2]]
|
23
|
+
|
24
|
+
# Determinar la procedencia del MSISDN
|
25
|
+
# TODO: Validar por IP, etc.
|
26
|
+
case country_code
|
27
|
+
when 'BR'
|
28
|
+
# Claro BR (Claro):
|
29
|
+
{
|
30
|
+
id: msisdn,
|
31
|
+
mobile_country_code: "724",
|
32
|
+
mobile_network_code: "05"
|
33
|
+
}.merge(detection_cues: detection_cues)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
isdn_attributes
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module MobileSubscriber
|
2
|
+
# Diccionario de Mobile Country Codes => ISO country codes:
|
3
|
+
DIALING_COUNTRY_CODES = {
|
4
|
+
'501' => 'BZ', # Belize
|
5
|
+
'502' => 'GT', # Guatemala
|
6
|
+
'503' => 'SV', # El Salvador
|
7
|
+
'504' => 'HN', # Honduras
|
8
|
+
'505' => 'NI', # Nicaragua
|
9
|
+
'506' => 'CR', # Costa Rica
|
10
|
+
'507' => 'CI', # Costa de Marfil
|
11
|
+
'509' => 'HT', # Haití
|
12
|
+
'51' => 'PE', # Perú
|
13
|
+
'52' => 'MX', # México
|
14
|
+
'53' => 'CU', # Cuba
|
15
|
+
'54' => 'AR', # Argentina
|
16
|
+
'55' => 'BR', # Brasil
|
17
|
+
'56' => 'CL', # Chile
|
18
|
+
'57' => 'CO', # Colombia
|
19
|
+
'58' => 'VE', # Venezuela
|
20
|
+
'591' => 'BO', # Bolivia
|
21
|
+
'593' => 'EC', # Ecuador
|
22
|
+
'595' => 'PY', # Paraguay
|
23
|
+
'598' => 'UY' # Uruguay
|
24
|
+
}.with_indifferent_access.freeze
|
25
|
+
end
|
@@ -1,21 +1,24 @@
|
|
1
1
|
require 'mobile_subscriber/dictionaries/mobile_and_iso_country_codes'
|
2
|
+
require 'mobile_subscriber/dictionaries/dialing_and_country_codes'
|
2
3
|
require 'mobile_subscriber/dictionaries/operator_data'
|
3
4
|
|
4
5
|
module MobileSubscriber
|
5
6
|
|
6
7
|
class ISDN
|
7
8
|
|
8
|
-
attr_reader :id, :mobile_country_code, :mobile_network_code
|
9
|
+
attr_reader :id, :mobile_country_code, :mobile_network_code, :detection_cues
|
9
10
|
alias_method :to_s, :id
|
10
11
|
|
11
|
-
include MobileSubscriber::Detection::
|
12
|
-
include MobileSubscriber::Detection::
|
13
|
-
include MobileSubscriber::Detection::
|
12
|
+
include MobileSubscriber::Detection::FromMsisdnHttpRequestHeader
|
13
|
+
include MobileSubscriber::Detection::FromXNokiaMsisdnHttpRequestHeader
|
14
|
+
include MobileSubscriber::Detection::FromXUpChMsisdnHttpRequestHeader
|
15
|
+
include MobileSubscriber::Detection::FromXUpCallingLineIdHttpRequestHeader
|
14
16
|
|
15
17
|
def initialize(attributes={})
|
16
18
|
@id = attributes.delete :id
|
17
19
|
@mobile_country_code = attributes.delete :mobile_country_code
|
18
20
|
@mobile_network_code = attributes.delete :mobile_network_code
|
21
|
+
@detection_cues = attributes.delete :detection_cues
|
19
22
|
end
|
20
23
|
|
21
24
|
def dialing_code
|
data/spec/factories/requests.rb
CHANGED
@@ -56,12 +56,13 @@ FactoryGirl.define do
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
factory :
|
59
|
+
factory :mobile_request_from_claro_peru do
|
60
60
|
initialize_with do
|
61
61
|
new build(:common_mobile_request_env).merge(
|
62
|
-
"REMOTE_ADDR"
|
63
|
-
"REMOTE_HOST"
|
64
|
-
"
|
62
|
+
"REMOTE_ADDR" => "190.113.192.9",
|
63
|
+
"REMOTE_HOST" => "190.113.192.9",
|
64
|
+
"HTTP_X_UP_CALLING_LINE_ID" => "5100000000000",
|
65
|
+
"HTTP_VIA" => "aa Comverse aaa"
|
65
66
|
)
|
66
67
|
end
|
67
68
|
end
|
data/spec/models/isdn_spec.rb
CHANGED
@@ -41,6 +41,10 @@ describe MobileSubscriber::ISDN do
|
|
41
41
|
describe "detection from request headers" do
|
42
42
|
|
43
43
|
shared_examples "of detection from a valid request" do
|
44
|
+
it "is not nil" do
|
45
|
+
expect(subject).not_to be_nil
|
46
|
+
end
|
47
|
+
|
44
48
|
it "responds to #http_validated? with true" do
|
45
49
|
expect(subject).to be_http_validated
|
46
50
|
end
|
@@ -50,6 +54,7 @@ describe MobileSubscriber::ISDN do
|
|
50
54
|
end
|
51
55
|
end
|
52
56
|
|
57
|
+
# of detection from a request made from a {Demonym} mobile network:
|
53
58
|
shared_examples "of detection from a request made from a mexican mobile network" do
|
54
59
|
it "responds to #id with a string starting with '52'" do
|
55
60
|
expect(subject.id).to match /\A52/
|
@@ -104,6 +109,24 @@ describe MobileSubscriber::ISDN do
|
|
104
109
|
end
|
105
110
|
end
|
106
111
|
|
112
|
+
shared_examples "of detection from a request made from a peruvian mobile network" do
|
113
|
+
it "responds to #id with a string starting with '51'" do
|
114
|
+
expect(subject.id).to match /\A51/
|
115
|
+
end
|
116
|
+
|
117
|
+
it "responds to #mobile_country_code with '716'" do
|
118
|
+
expect(subject.mobile_country_code).to eq '716'
|
119
|
+
end
|
120
|
+
|
121
|
+
it "responds to #dialing_code with '51'" do
|
122
|
+
expect(subject.dialing_code).to eq '51'
|
123
|
+
end
|
124
|
+
|
125
|
+
it "responds to #iso_3166_country_code with 'PE'" do
|
126
|
+
expect(subject.iso_3166_country_code).to eq 'PE'
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
107
130
|
shared_examples "of detection from a request made from a Claro network" do
|
108
131
|
it "responds to #mobile_network_brand with a string containing 'Claro'" do
|
109
132
|
expect(subject.mobile_network_brand).to match /\AClaro/
|
@@ -160,6 +183,22 @@ describe MobileSubscriber::ISDN do
|
|
160
183
|
end
|
161
184
|
end
|
162
185
|
|
186
|
+
context "from a request made from Claro Perú" do
|
187
|
+
|
188
|
+
subject do
|
189
|
+
described_class.new_from_request(build :mobile_request_from_claro_peru)
|
190
|
+
end
|
191
|
+
|
192
|
+
include_examples "of detection from a valid request"
|
193
|
+
include_examples "of detection from a request made from a peruvian mobile network"
|
194
|
+
include_examples "of detection from a request made from a Claro network"
|
195
|
+
|
196
|
+
it "responds to #mobile_network_operator with 'América Móvil Perú'" do
|
197
|
+
expect(subject.mobile_network_operator).to eq 'América Móvil Perú'
|
198
|
+
end
|
199
|
+
|
200
|
+
end
|
201
|
+
|
163
202
|
end
|
164
203
|
|
165
204
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mobile-subscriber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.alpha3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roberto Quintanilla
|
@@ -113,9 +113,11 @@ files:
|
|
113
113
|
- build-docker.sh
|
114
114
|
- fig.yml
|
115
115
|
- lib/mobile-subscriber.rb
|
116
|
-
- lib/mobile_subscriber/detection/
|
117
|
-
- lib/mobile_subscriber/detection/
|
118
|
-
- lib/mobile_subscriber/detection/
|
116
|
+
- lib/mobile_subscriber/detection/from_msisdn_http_request_header.rb
|
117
|
+
- lib/mobile_subscriber/detection/from_x_nokia_msisdn_http_request_header.rb
|
118
|
+
- lib/mobile_subscriber/detection/from_x_up_calling_line_id_http_request_header.rb
|
119
|
+
- lib/mobile_subscriber/detection/from_x_up_ch_msisdn_http_request_header.rb
|
120
|
+
- lib/mobile_subscriber/dictionaries/dialing_and_country_codes.rb
|
119
121
|
- lib/mobile_subscriber/dictionaries/mobile_and_iso_country_codes.rb
|
120
122
|
- lib/mobile_subscriber/dictionaries/operator_data.rb
|
121
123
|
- lib/mobile_subscriber/isdn.rb
|
@@ -1,47 +0,0 @@
|
|
1
|
-
module MobileSubscriber
|
2
|
-
module Detection
|
3
|
-
|
4
|
-
# Módulo que provee métodos de deteccion y validacion para MSISDN's de:
|
5
|
-
# - Telcel México
|
6
|
-
# - Claro Argentina
|
7
|
-
module FromXNokiaMsisdnHeader
|
8
|
-
|
9
|
-
extend ActiveSupport::Concern
|
10
|
-
|
11
|
-
module ClassMethods
|
12
|
-
def extract_from_x_nokia_msisdn_http_request_header(request)
|
13
|
-
|
14
|
-
header_name = 'X-Nokia-Msisdn'
|
15
|
-
header_env_key = "HTTP_#{header_name.gsub('-','_').upcase}"
|
16
|
-
|
17
|
-
isdn_attributes = nil
|
18
|
-
|
19
|
-
if msisdn = request.env[header_env_key]
|
20
|
-
|
21
|
-
# Determinar la procedencia del MSISDN
|
22
|
-
# TODO: Validar por IP, etc.
|
23
|
-
isdn_attributes = case
|
24
|
-
|
25
|
-
# Telcel México:
|
26
|
-
when msisdn =~ /\A52/ then {
|
27
|
-
id: msisdn,
|
28
|
-
mobile_country_code: "334",
|
29
|
-
mobile_network_code: "020"
|
30
|
-
}
|
31
|
-
|
32
|
-
# Claro Argentina:
|
33
|
-
when msisdn =~ /\A54/ then {
|
34
|
-
id: msisdn,
|
35
|
-
mobile_country_code: "722",
|
36
|
-
mobile_network_code: "330"
|
37
|
-
}
|
38
|
-
end if msisdn.length >= 8
|
39
|
-
end
|
40
|
-
|
41
|
-
isdn_attributes
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
module MobileSubscriber
|
2
|
-
module Detection
|
3
|
-
|
4
|
-
# Módulo que provee métodos de deteccion y validacion para MSISDN's de:
|
5
|
-
# - Claro Brasil
|
6
|
-
module FromXUpChMsisdnHeader
|
7
|
-
|
8
|
-
extend ActiveSupport::Concern
|
9
|
-
|
10
|
-
module ClassMethods
|
11
|
-
def extract_from_x_up_ch_msisdn_http_request_header(request)
|
12
|
-
header_name = 'X-Up-Ch-Msisdn'
|
13
|
-
header_env_key = "HTTP_#{header_name.gsub('-','_').upcase}"
|
14
|
-
isdn_attributes = nil
|
15
|
-
|
16
|
-
if msisdn = request.env[header_env_key]
|
17
|
-
|
18
|
-
# Determinar la procedencia del MSISDN
|
19
|
-
# TODO: Validar por IP, etc.
|
20
|
-
isdn_attributes = case
|
21
|
-
|
22
|
-
# Claro BR (Claro):
|
23
|
-
when msisdn =~ /\A55/ then {
|
24
|
-
id: msisdn,
|
25
|
-
mobile_country_code: "724",
|
26
|
-
mobile_network_code: "05"
|
27
|
-
}
|
28
|
-
|
29
|
-
end if msisdn.length >= 8
|
30
|
-
|
31
|
-
end
|
32
|
-
isdn_attributes
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|