mobile-subscriber 1.0.0.alpha4 → 1.0.0.alpha5

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mobile-subscriber.rb +13 -3
  3. data/lib/mobile_subscriber/dictionaries/dialing_and_country_codes.rb +468 -28
  4. data/lib/mobile_subscriber/http/known_imsi_headers.rb +22 -0
  5. data/lib/mobile_subscriber/http/known_msisdn_headers.rb +68 -0
  6. data/lib/mobile_subscriber/http/request_info.rb +166 -0
  7. data/lib/mobile_subscriber/identity.rb +97 -1
  8. data/lib/mobile_subscriber/version.rb +1 -1
  9. data/mobile_subscriber.thor +41 -0
  10. data/spec/factories/mobile_requests.rb +28 -0
  11. data/spec/factories/mobile_requests_from_claro.rb +257 -0
  12. data/spec/factories/mobile_requests_from_iusacell.rb +13 -0
  13. data/spec/factories/mobile_requests_from_movistar.rb +15 -0
  14. data/spec/factories/mobile_requests_from_telcel.rb +14 -0
  15. data/spec/factories/mobile_requests_from_vivo.rb +13 -0
  16. data/spec/features/claro_user_detection_spec.rb +170 -0
  17. data/spec/features/iusacell_user_detection_spec.rb +19 -0
  18. data/spec/features/movistar_user_detection_spec.rb +19 -0
  19. data/spec/features/telcel_user_detection_spec.rb +19 -0
  20. data/spec/models/{isdn_spec.rb → identity_spec.rb} +5 -5
  21. data/spec/shared_examples/identity_detection_in_argentina.rb +11 -0
  22. data/spec/shared_examples/identity_detection_in_brazil.rb +12 -0
  23. data/spec/shared_examples/identity_detection_in_chile.rb +12 -0
  24. data/spec/shared_examples/identity_detection_in_colombia.rb +12 -0
  25. data/spec/shared_examples/identity_detection_in_costa_rica.rb +15 -0
  26. data/spec/shared_examples/identity_detection_in_dominican_republic.rb +12 -0
  27. data/spec/shared_examples/identity_detection_in_ecuador.rb +12 -0
  28. data/spec/shared_examples/identity_detection_in_el_salvador.rb +15 -0
  29. data/spec/shared_examples/identity_detection_in_guatemala.rb +15 -0
  30. data/spec/shared_examples/identity_detection_in_honduras.rb +11 -0
  31. data/spec/shared_examples/identity_detection_in_mexico.rb +11 -0
  32. data/spec/shared_examples/identity_detection_in_nicaragua.rb +12 -0
  33. data/spec/shared_examples/identity_detection_in_panama.rb +12 -0
  34. data/spec/shared_examples/identity_detection_in_peru.rb +12 -0
  35. data/spec/shared_examples/identity_detection_in_puerto_rico.rb +14 -0
  36. data/spec/shared_examples/of_msisdn_detection_from_http_request.rb +3 -188
  37. data/templates/dialing_and_country_codes.rb.erb +20 -0
  38. metadata +58 -28
  39. data/lib/mobile_subscriber/detection/from_msisdn_http_request_header.rb +0 -48
  40. data/lib/mobile_subscriber/detection/from_x_nokia_msisdn_http_request_header.rb +0 -58
  41. data/lib/mobile_subscriber/detection/from_x_up_calling_line_id_http_request_header.rb +0 -65
  42. data/lib/mobile_subscriber/detection/from_x_up_ch_msisdn_http_request_header.rb +0 -35
  43. data/lib/mobile_subscriber/detection/from_x_up_subno_http_request_header.rb +0 -44
  44. data/lib/mobile_subscriber/detection/from_x_wap_msisdn_http_request_header.rb +0 -37
  45. data/lib/mobile_subscriber/detection/from_x_wap_sesiones3g_mdn_http_request_header.rb +0 -39
  46. data/lib/mobile_subscriber/detection/from_x_ztgo_beareraddress_http_request_header.rb +0 -36
  47. data/lib/mobile_subscriber/detection/http_request_info.rb +0 -77
  48. data/lib/mobile_subscriber/isdn.rb +0 -89
  49. data/spec/detection/from_msisdn_http_request_header_spec.rb +0 -53
  50. data/spec/detection/from_x_nokia_msisdn_http_request_header_spec.rb +0 -99
  51. data/spec/detection/from_x_up_calling_line_id_http_request_header_spec.rb +0 -39
  52. data/spec/detection/from_x_up_subno_http_request_header_spec.rb +0 -43
  53. data/spec/detection/from_x_wap_msisdn_http_request_header_spec.rb +0 -32
  54. data/spec/detection/from_x_wap_sesiones3g_mdn_http_request_header_spec.rb +0 -29
  55. data/spec/factories/requests.rb +0 -229
@@ -1,53 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe MobileSubscriber::Detection::FromMsisdnHttpRequestHeader do
4
-
5
- include described_class
6
-
7
- let :test_request do
8
- build :mobile_request_from_claro_brasil
9
- end
10
-
11
- let :test_request_info do
12
- MobileSubscriber::Detection::HttpRequestInfo.new test_request.env
13
- end
14
-
15
- describe "the returned object of self.extract_from_msisdn_http_request_header" do
16
-
17
- subject do
18
- extract_from_msisdn_http_request_header test_request_info
19
- end
20
-
21
- context "when given a request made from Claro Brasil" do
22
- let(:test_request) { build :mobile_request_from_claro_brasil }
23
-
24
- include_examples "of detection of msisdn from a valid brazilian mobile network http request"
25
-
26
- it "has a :mobile_network_code value of '05' or '38'" do
27
- expect(subject[:mobile_network_code]).to match /05|38/i
28
- end
29
- end
30
-
31
- context "when given a request made from Claro Ecuador" do
32
- let(:test_request) { build :mobile_request_from_claro_ecuador }
33
-
34
- include_examples "of detection of msisdn from a valid ecuadorian mobile network http request"
35
-
36
- it "has a :mobile_network_code value of '01'" do
37
- expect(subject[:mobile_network_code]).to eq '01'
38
- end
39
- end
40
-
41
- context "when given a request made from Claro República Dominicana" do
42
- let(:test_request) { build :mobile_request_from_claro_dominican_republic }
43
-
44
- include_examples "of detection of msisdn from a valid dominican mobile network http request"
45
-
46
- it "has a :mobile_network_code value of '02'" do
47
- expect(subject[:mobile_network_code]).to eq '02'
48
- end
49
- end
50
-
51
- end
52
-
53
- end
@@ -1,99 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe MobileSubscriber::Detection::FromXNokiaMsisdnHttpRequestHeader do
4
-
5
- include described_class
6
-
7
- let :test_request_info do
8
- MobileSubscriber::Detection::HttpRequestInfo.new test_request.env
9
- end
10
-
11
- describe "the returned object of self.extract_from_msisdn_http_request_header" do
12
-
13
- subject do
14
- extract_from_x_nokia_msisdn_http_request_header test_request_info
15
- end
16
-
17
- context "when given a request made from Telcel México" do
18
- let(:test_request) { build :mobile_request_from_telcel_mexico }
19
-
20
- include_examples "of detection of msisdn from a valid mexican mobile network http request"
21
-
22
- it "has a :mobile_network_code value of '020'" do
23
- expect(subject[:mobile_network_code]).to eq '020'
24
- end
25
- end
26
-
27
- context "when given a request made from Claro Argentina" do
28
- let(:test_request) { build :mobile_request_from_claro_argentina }
29
-
30
- include_examples "of detection of msisdn from a valid argentinian mobile network http request"
31
-
32
- # TODO: Bad test... we need to test for each network code, if it can be determined:
33
- it "has a :mobile_network_code value of '310', '320', or '330'" do
34
- expect(subject[:mobile_network_code]).to match /310|320|330/
35
- end
36
- end
37
-
38
- context "when given a request made from Claro Costa Rica" do
39
- let(:test_request) { build :mobile_request_from_claro_costa_rica }
40
-
41
- include_examples "of detection of msisdn from a valid costa rican mobile network http request"
42
-
43
- it "has a :mobile_network_code value of '03'" do
44
- expect(subject[:mobile_network_code]).to eq '03'
45
- end
46
- end
47
-
48
- context "when given a request made from Claro Puerto Rico" do
49
- let(:test_request) { build :mobile_request_from_claro_puerto_rico }
50
-
51
- include_examples "of detection of msisdn from a valid puerto rican mobile network http request"
52
-
53
- it "has a :mobile_network_code value of '110'" do
54
- expect(subject[:mobile_network_code]).to eq '110'
55
- end
56
- end
57
-
58
- context "when given a request made from Claro Guatemala" do
59
- let(:test_request) { build :mobile_request_from_claro_guatemala }
60
-
61
- include_examples "of detection of msisdn from a valid guatemalan mobile network http request"
62
-
63
- it "has a :mobile_network_code value of '01'" do
64
- expect(subject[:mobile_network_code]).to eq '01'
65
- end
66
- end
67
-
68
- context "when given a request made from Claro Honduras" do
69
- let(:test_request) { build :mobile_request_from_claro_honduras }
70
-
71
- include_examples "of detection of msisdn from a valid honduran mobile network http request"
72
-
73
- it "has a :mobile_network_code value of '001'" do
74
- expect(subject[:mobile_network_code]).to eq '001'
75
- end
76
- end
77
-
78
- context "when given a request made from Claro Nicaragua" do
79
- let(:test_request) { build :mobile_request_from_claro_nicaragua }
80
-
81
- include_examples "of detection of msisdn from a valid nicaraguan mobile network http request"
82
-
83
- it "has a :mobile_network_code value of '21'" do
84
- expect(subject[:mobile_network_code]).to eq '21'
85
- end
86
- end
87
-
88
- context "when given a request made from Claro El Salvador" do
89
- let(:test_request) { build :mobile_request_from_claro_el_salvador }
90
-
91
- include_examples "of detection of msisdn from a valid salvadoran mobile network http request"
92
-
93
- it "has a :mobile_network_code value of '01'" do
94
- expect(subject[:mobile_network_code]).to eq '01'
95
- end
96
- end
97
- end
98
-
99
- end
@@ -1,39 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe MobileSubscriber::Detection::FromXUpCallingLineIdHttpRequestHeader do
4
-
5
- include described_class
6
-
7
- let :test_request_info do
8
- MobileSubscriber::Detection::HttpRequestInfo.new test_request.env
9
- end
10
-
11
- describe "the returned object of self.extract_from_msisdn_http_request_header" do
12
-
13
- subject do
14
- extract_from_x_up_calling_line_id_http_request_header test_request_info
15
- end
16
-
17
- context "when given a request made from Claro Perú" do
18
- let(:test_request) { build :mobile_request_from_claro_peru }
19
-
20
- include_examples "of detection of msisdn from a valid peruvian mobile network http request"
21
-
22
- it "has a :mobile_network_code value of '10'" do
23
- expect(subject[:mobile_network_code]).to eq '10'
24
- end
25
- end
26
-
27
- context "when given a request made from Movistar Perú" do
28
- let(:test_request) { build :mobile_request_from_movistar_peru }
29
-
30
- include_examples "of detection of msisdn from a valid peruvian mobile network http request"
31
-
32
- it "has a :mobile_network_code value of '06'" do
33
- expect(subject[:mobile_network_code]).to eq '06'
34
- end
35
- end
36
-
37
- end
38
-
39
- end
@@ -1,43 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe MobileSubscriber::Detection::FromXUpSubnoHttpRequestHeader do
4
-
5
- include described_class
6
-
7
- let :test_request do
8
- build :mobile_request_from_claro_colombia
9
- end
10
-
11
- let :test_request_info do
12
- MobileSubscriber::Detection::HttpRequestInfo.new test_request.env
13
- end
14
-
15
- describe "the returned object of self.extract_from_msisdn_http_request_header" do
16
-
17
- subject do
18
- extract_from_x_up_subno_http_request_header test_request_info
19
- end
20
-
21
- context "when given a request made from Claro Colombia" do
22
-
23
- include_examples "of detection of msisdn from a valid colombian mobile network http request"
24
-
25
- it "has a :mobile_network_code value of '101'" do
26
- expect(subject[:mobile_network_code]).to eq '101'
27
- end
28
- end
29
-
30
- context "when given a request made from Claro Panamá" do
31
-
32
- let(:test_request) { build :mobile_request_from_claro_panama }
33
-
34
- include_examples "of detection of msisdn from a valid panamanian mobile network http request"
35
-
36
- it "has a :mobile_network_code value of '03'" do
37
- expect(subject[:mobile_network_code]).to eq '03'
38
- end
39
- end
40
-
41
- end
42
-
43
- end
@@ -1,32 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe MobileSubscriber::Detection::FromXWapMsisdnHttpRequestHeader do
4
-
5
- include described_class
6
-
7
- let :test_request do
8
- build :mobile_request_from_claro_chile
9
- end
10
-
11
- let :test_request_info do
12
- MobileSubscriber::Detection::HttpRequestInfo.new test_request.env
13
- end
14
-
15
- describe "the returned object of self.extract_from_msisdn_http_request_header" do
16
-
17
- subject do
18
- extract_from_x_wap_msisdn_http_request_header test_request_info
19
- end
20
-
21
- context "when given a request made from Claro Chile" do
22
-
23
- include_examples "of detection of msisdn from a valid chilean mobile network http request"
24
-
25
- it "has a :mobile_network_code value of '03'" do
26
- expect(subject[:mobile_network_code]).to eq '03'
27
- end
28
- end
29
-
30
- end
31
-
32
- end
@@ -1,29 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe MobileSubscriber::Detection::FromXWapSesiones3gMdnHttpRequestHeader do
4
-
5
- include described_class
6
-
7
- let :test_request_info do
8
- MobileSubscriber::Detection::HttpRequestInfo.new test_request.env
9
- end
10
-
11
- describe "the returned object of self.extract_from_msisdn_http_request_header" do
12
-
13
- subject do
14
- extract_from_x_wap_sesiones3g_mdn_http_request_header test_request_info
15
- end
16
-
17
- context "when given a request made from Iusacell Mexico" do
18
- let(:test_request) { build :mobile_request_from_iusacell_mexico }
19
-
20
- include_examples "of detection of msisdn from a valid mexican mobile network http request"
21
-
22
- it "has a :mobile_network_code value of '040' or '050'" do
23
- expect(subject[:mobile_network_code]).to match /040|050/i
24
- end
25
- end
26
-
27
- end
28
-
29
- end
@@ -1,229 +0,0 @@
1
- # Read about factories at https://github.com/thoughtbot/factory_girl
2
-
3
- FactoryGirl.define do
4
-
5
- factory :common_mobile_request_env, class: Hash do
6
- initialize_with do
7
- {
8
- "HTTP_HOST" => "www.example.com",
9
- "HTTP_CONNECTION" => "close",
10
- "HTTP_CACHE_CONTROL" => "no-cache, max-age=0",
11
- "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
12
- "HTTP_USER_AGENT" => "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
13
- "HTTP_ACCEPT_ENCODING" => "gzip, deflate, sdch",
14
- "HTTP_ACCEPT_LANGUAGE" => "en-US,en;q=0.8,es;q=0.6",
15
- "HTTP_VERSION" => "HTTP/1.1"
16
- }
17
- end
18
- end
19
-
20
- factory :mobile_request, class: Rack::Request do
21
-
22
- initialize_with do
23
- new build(:common_mobile_request_env).merge(
24
- "REMOTE_ADDR" => "201.144.162.4"
25
- )
26
- end
27
-
28
- factory :mobile_request_from_iusacell_mexico do
29
- initialize_with do
30
- new build(:common_mobile_request_env).merge(
31
- "REMOTE_ADDR" => "201.144.162.4",
32
- "HTTP_X_WAP_SESIONES3G_MDN" => "528110000000"
33
- )
34
- end
35
- end
36
-
37
- factory :mobile_request_from_telcel_mexico do
38
- initialize_with do
39
- new build(:common_mobile_request_env).merge(
40
- "REMOTE_ADDR" => "201.144.162.4",
41
- "HTTP_X_NOKIA_MSISDN" => "528110000000"
42
- )
43
- end
44
- end
45
-
46
- factory :mobile_request_from_claro_argentina do
47
- initialize_with do
48
- new build(:common_mobile_request_env).merge(
49
- "REMOTE_ADDR" => "170.51.255.240",
50
- "HTTP_X_NOKIA_MSISDN" => "5491141090000"
51
- )
52
- end
53
- end
54
-
55
- factory :mobile_request_from_claro_brasil do
56
- initialize_with do
57
- new build(:common_mobile_request_env).merge(
58
- "REMOTE_ADDR" => "201.23.176.202",
59
- "HTTP_MSISDN" => "5500000000000"
60
- )
61
- end
62
- end
63
-
64
- # TODO: Replace with a real example:
65
- factory :mobile_request_from_claro_dominican_republic do
66
- initialize_with do
67
- new build(:common_mobile_request_env).merge(
68
- "REMOTE_ADDR" => "181.37.104.3",
69
- "HTTP_MSISDN" => "18098591800"
70
- )
71
- end
72
- end
73
-
74
- # http://ns.myip.ms/view/ip_owners/181034/Claro_Chile_S_a.html
75
- factory :mobile_request_from_claro_chile do
76
- initialize_with do
77
- new build(:common_mobile_request_env).merge(
78
- "REMOTE_ADDR" => "191.116.39.114",
79
- "HTTP_X_WAP_MSISDN" => "56024440000"
80
- )
81
- end
82
- end
83
-
84
- factory :mobile_request_from_claro_colombia do
85
- initialize_with do
86
- new build(:common_mobile_request_env).merge(
87
- "REMOTE_ADDR" => "200.26.137.100",
88
- "HTTP_X_UP_SUBNO" => "57000000000"
89
- )
90
- end
91
- end
92
-
93
- # TODO: Replace with a real example request:
94
- factory :mobile_request_from_claro_costa_rica do
95
- initialize_with do
96
- new build(:common_mobile_request_env).merge(
97
- "REMOTE_ADDR" => "186.26.126.37",
98
- "HTTP_X_NOKIA_MSISDN" => "50600000000"
99
- )
100
- end
101
- end
102
-
103
- # TODO: Replace with a real example request:
104
- factory :mobile_request_from_claro_puerto_rico do
105
- initialize_with do
106
- new build(:common_mobile_request_env).merge(
107
- "REMOTE_ADDR" => "64.237.130.12",
108
- "HTTP_X_NOKIA_MSISDN" => "17872889401" # 1-787-XXXXXXXX
109
- )
110
- end
111
- end
112
-
113
- # http://myip.ms/view/ip_owners/80612/Conecel.html
114
- factory :mobile_request_from_claro_ecuador do
115
- initialize_with do
116
- new build(:common_mobile_request_env).merge(
117
- "REMOTE_ADDR" => "190.63.1.10",
118
- "HTTP_MSISDN" => "59342690000"
119
- )
120
- end
121
- end
122
-
123
- # Request from a client through Claro Guatemala network:
124
- # (Built from an actual ATP test)
125
- factory :mobile_request_from_claro_guatemala do
126
- initialize_with do
127
- new build(:common_mobile_request_env).merge(
128
- "REMOTE_ADDR" => "216.230.152.158",
129
- "HTTP_X_NOKIA_MSISDN" => "50241865146",
130
- "HTTP_X_NOKIA_IMSI" => "704012013128442",
131
- "HTTP_X_FORWARDED_FOR" => "190.212.233.218, 204.0.3.199"
132
- )
133
- end
134
- end
135
-
136
- # TODO: Replace with a real example:
137
- factory :mobile_request_from_claro_honduras do
138
- initialize_with do
139
- new build(:common_mobile_request_env).merge(
140
- "REMOTE_ADDR" => "190.107.157.31",
141
- "HTTP_X_NOKIA_MSISDN" => "50430000000"
142
- )
143
- end
144
- end
145
-
146
- # TODO: Replace with a real example request:
147
- factory :mobile_request_from_claro_nicaragua do
148
- initialize_with do
149
- new build(:common_mobile_request_env).merge(
150
- "REMOTE_ADDR" => "190.212.88.8",
151
- "HTTP_X_NOKIA_MSISDN" => "50500000000"
152
- )
153
- end
154
- end
155
-
156
- # TODO: Replace with a real example request:
157
- factory :mobile_request_from_claro_el_salvador do
158
- initialize_with do
159
- new build(:common_mobile_request_env).merge(
160
- "REMOTE_ADDR" => "190.86.139.225",
161
- "HTTP_X_NOKIA_MSISDN" => "50300000000"
162
- )
163
- end
164
- end
165
-
166
- # Real request recorded at claroapps.com at 2015-03-24
167
- factory :mobile_request_from_claro_peru do
168
- initialize_with do
169
- new build(:common_mobile_request_env).merge(
170
- "REMOTE_ADDR" => "216.246.75.208", # This IP belongs to a U.S. datacenter which acts as proxy for the real user...
171
-
172
- "HTTP_ACCEPT_LANGUAGE" => "es-PE,es-419;q=0.8,es;q=0.6",
173
- "HTTP_AKAMAI_ORIGIN_HOP" => "1",
174
- "HTTP_CONNECT_TIME" => "3",
175
- "HTTP_PRAGMA" => "no-cache",
176
- "HTTP_TOTAL_ROUTE_TIME" => "5",
177
- "HTTP_VERSION" => "HTTP/1.1",
178
- "HTTP_VIA" => "1.1 akamai.net(ghost) (AkamaiGHost), 1.1 vegur",
179
-
180
- # X Headers:
181
- "HTTP_X_AKAMAI_CONFIG_LOG_DETAIL" => "true",
182
-
183
- # The leftmost IP is the:
184
- # - Closer to the User (or the actual user IP)
185
- # - Less trustable
186
- "HTTP_X_FORWARDED_FOR" => "190.113.210.147, 216.246.75.208",
187
- "HTTP_X_NOKIA_IMSI" => "716100316259449",
188
- "HTTP_X_REQUEST" => "272aa345-55cc-45b2-b879-79678957817f",
189
-
190
- "HTTP_X_REQUEST_START" => "1427225820026",
191
- "HTTP_X_FORWARDED_PORT" => "80",
192
- "HTTP_X_FORWARDED_PROTO" => "http",
193
- "HTTP_X_UP_CALLING_LINE_ID" => "51941037249"
194
- )
195
- end
196
- end
197
-
198
- factory :mobile_request_from_vivo_brasil do
199
- initialize_with do
200
- new build(:common_mobile_request_env).merge(
201
- "REMOTE_ADDR" => "187.26.59.4",
202
- "HTTP_X_UP_CH_MSISDN" => "5500000000000"
203
- )
204
- end
205
- end
206
-
207
- # TODO: Replace with a real example:
208
- factory :mobile_request_from_claro_panama do
209
- initialize_with do
210
- new build(:common_mobile_request_env).merge(
211
- "REMOTE_ADDR" => "181.178.231.8",
212
- "HTTP_X_UP_SUBNO" => "5070000000"
213
- )
214
- end
215
- end
216
-
217
- # http://myip.ms/view/ip_owners/7424/Telefonica_Del_Peru_Saa.html
218
- factory :mobile_request_from_movistar_peru do
219
- initialize_with do
220
- new build(:common_mobile_request_env).merge(
221
- "REMOTE_ADDR" => "190.42.165.87",
222
- "HTTP_X_UP_CALLING_LINE_ID" => "5112100000"
223
- )
224
- end
225
- end
226
-
227
-
228
- end
229
- end