comcetera 0.2.0 → 0.3.1
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.
- data/README.rdoc +17 -6
- data/VERSION +1 -1
- data/lib/comcetera.rb +13 -4
- data/spec/comcetera_spec.rb +1 -0
- metadata +5 -5
data/README.rdoc
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
= comcetera
|
2
2
|
|
3
|
-
|
3
|
+
A simple wrapper for the NumberPortabilityLookup service of Comcetera. Give them a msisdn and they (usually) give you an operator code. Compile your own list of relevant codes based on wikipedia.
|
4
4
|
|
5
|
-
I'm scratching my own itch here, so I'm only adding what I use. Feedback and patches are welcome
|
5
|
+
I'm scratching my own itch here, so I'm only adding what I use. Feedback and patches are welcome.
|
6
|
+
|
7
|
+
For more info about the service, take a look at: http://numberportabilitylookup.com/
|
6
8
|
|
7
9
|
== Example
|
8
10
|
|
@@ -11,17 +13,21 @@ The usual way you'd do a lookup
|
|
11
13
|
Comcetera.username = "meeeeee"
|
12
14
|
Comcetera.password = "verysecret"
|
13
15
|
comcetera = Comcetera.detect(31612345678)
|
14
|
-
comcetera.operator_code # => "
|
16
|
+
comcetera.operator_code # => "20415"
|
15
17
|
comcetera.msisdn # => "31612345678"
|
16
18
|
|
17
19
|
When the lookup does not work due to a timeout
|
20
|
+
|
18
21
|
Comcetera.detect(31612345678) # => nil
|
19
22
|
|
20
|
-
|
23
|
+
This means that the amount of retries specified as Comcetera.retries have all timed out after Comcetera.timeout seconds. You can retry at a later time or do something else. This is great if, as is my use case, the lookup is used as a type of pre-selection for numbers.
|
24
|
+
|
25
|
+
The API can return a couple of errors. In this case, there is no operator code, but an error code and the full response as debug info.
|
21
26
|
|
22
27
|
comcetera = Comcetera.detect(31612345678)
|
23
|
-
comcetera.
|
24
|
-
comcetera.
|
28
|
+
comcetera.operator_code # => nil
|
29
|
+
comcetera.error_code # => "ERR21"
|
30
|
+
comcetera.debug # => "QUERYOK\n31612345678 ERR21\nENDBATCH"
|
25
31
|
|
26
32
|
== Operator codes
|
27
33
|
|
@@ -39,6 +45,11 @@ Example: Wikipedia mentions T-Mobile in the Netherlands as: MCC 204, MNC 16. Com
|
|
39
45
|
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
40
46
|
* Send me a pull request. Bonus points for topic branches.
|
41
47
|
|
48
|
+
== Contributors
|
49
|
+
|
50
|
+
* Wes 'Narnach' Oldenbeuving
|
51
|
+
* Gerard 'smeevil' de Brieder
|
52
|
+
|
42
53
|
== Copyright
|
43
54
|
|
44
55
|
Copyright (c) 2010 Wes Oldenbeuving. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.1
|
data/lib/comcetera.rb
CHANGED
@@ -2,8 +2,17 @@ require 'open-uri'
|
|
2
2
|
require 'timeout'
|
3
3
|
|
4
4
|
class Comcetera
|
5
|
+
ERROR_CODES={
|
6
|
+
"1"=>"Unknown subscriber",
|
7
|
+
"29"=>"Absent subscriber",
|
8
|
+
"21"=>"Facility not supported",
|
9
|
+
"11"=>"Teleserice not provisioned",
|
10
|
+
"13"=>"Call barred",
|
11
|
+
"36"=>"System Failure"
|
12
|
+
}
|
13
|
+
|
5
14
|
attr_accessor :operator_code, :msisdn
|
6
|
-
attr_accessor :error_code, :debug
|
15
|
+
attr_accessor :error_code, :error_message, :debug
|
7
16
|
|
8
17
|
def initialize(attributes={})
|
9
18
|
attributes.each do |key, value|
|
@@ -21,7 +30,7 @@ class Comcetera
|
|
21
30
|
def retries
|
22
31
|
@retries ||= 2
|
23
32
|
end
|
24
|
-
|
33
|
+
|
25
34
|
def password
|
26
35
|
@password || raise("No password set for Comcetera")
|
27
36
|
end
|
@@ -39,10 +48,10 @@ class Comcetera
|
|
39
48
|
Timeout::timeout(self.timeout) do
|
40
49
|
body=open("http://api.comcetera.com/npl?user=#{self.username}&pass=#{self.password}&msisdn=#{msisdn}").read
|
41
50
|
msisdn, operator_code = body.split("\n")[1].split(" ") # 2nd line, last word is the operator hexcode
|
42
|
-
unless operator_code.to_s =~ /ERR\d
|
51
|
+
unless operator_code.to_s =~ /ERR(\d+)/
|
43
52
|
return new(:operator_code => operator_code, :msisdn => msisdn)
|
44
53
|
else
|
45
|
-
return new(:operator_code => nil, :msisdn => msisdn, :error_code=>operator_code, :debug=>body)
|
54
|
+
return new(:operator_code => nil, :msisdn => msisdn, :error_code=>operator_code, :error_message=>ERROR_CODES[$1]||"Unknown Error", :debug=>body)
|
46
55
|
end
|
47
56
|
end
|
48
57
|
rescue Timeout::Error, SystemCallError => e
|
data/spec/comcetera_spec.rb
CHANGED
@@ -47,6 +47,7 @@ describe "Comcetera" do
|
|
47
47
|
@comcetera = Comcetera.detect(31612345621)
|
48
48
|
@comcetera.operator_code.should be_nil
|
49
49
|
@comcetera.error_code.should == "ERR21"
|
50
|
+
@comcetera.error_message.should == "Facility not supported"
|
50
51
|
@comcetera.debug.should == <<-MSG
|
51
52
|
QUERYOK
|
52
53
|
31612345621 ERR21
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: comcetera
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 3
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Wes Oldenbeuving
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-09-29 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|