mobile-subscriber 0.0.1.alpha2 → 0.0.1.alpha3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|