ruby_hlr_client 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,3 +1,3 @@
1
- pkg/*
2
- *.gem
1
+ pkg/*
2
+ *.gem
3
3
  .bundle
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'http://rubygems.org'
2
-
3
- # Specify dependencies in ruby_hlr_client.gemspec
4
- gemspec
1
+ source 'http://rubygems.org'
2
+
3
+ # Specify dependencies in ruby_hlr_client.gemspec
4
+ gemspec
@@ -1,23 +1,23 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'sinatra'
4
- require 'ruby_hlr_client/hlr_callback_handler'
5
-
6
- set :run, true
7
-
8
- get '/' do
9
-
10
- client = RubyHlrClient::HlrCallbackHandler.new
11
-
12
- # Parses an asynchronous HLR Lookup callback and returns a JSON string with the results.
13
- # @param params
14
- # @returns string (JSON)
15
- #
16
- # Return example: {"success":true,"results":[{"id":"40ebb8d9e7cc","msisdncountrycode":"DE","msisdn":"+491788735001","statuscode":"HLRSTATUS_DELIVERED","hlrerrorcodeid":null,"subscriberstatus":"SUBSCRIBERSTATUS_CONNECTED","imsi":"262032000000000","mccmnc":"26203","mcc":"262","mnc":"03","msin":"2000000000","servingmsc":"491770","servinghlr":null,"originalnetworkname":"178","originalcountryname":"Germany","originalcountrycode":"DE","originalcountryprefix":"+49","originalnetworkprefix":"178","roamingnetworkname":null,"roamingcountryname":null,"roamingcountrycode":null,"roamingcountryprefix":null,"roamingnetworkprefix":null,"portednetworkname":null,"portedcountryname":null,"portedcountrycode":null,"portedcountryprefix":null,"portednetworkprefix":null,"isvalid":"Yes","isroaming":"No","isported":"No","usercharge":"0.0100","inserttime":"2014-12-28 05:53:03.765798+08","storage":"ASYNC-API","route":"IP4"}]}
17
- print client.parse_callback(params)
18
-
19
- # send HTTP response body (OK)
20
- content_type :text
21
- return client.send_response
22
-
23
- end
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'sinatra'
4
+ require 'ruby_hlr_client/hlr_callback_handler'
5
+
6
+ set :run, true
7
+
8
+ get '/' do
9
+
10
+ client = RubyHlrClient::HlrCallbackHandler.new
11
+
12
+ # Parses an asynchronous HLR Lookup callback and returns a JSON string with the results.
13
+ # @param params
14
+ # @returns string (JSON)
15
+ #
16
+ # Return example: {"success":true,"results":[{"id":"40ebb8d9e7cc","msisdncountrycode":"DE","msisdn":"+491788735001","statuscode":"HLRSTATUS_DELIVERED","hlrerrorcodeid":null,"subscriberstatus":"SUBSCRIBERSTATUS_CONNECTED","imsi":"262032000000000","mccmnc":"26203","mcc":"262","mnc":"03","msin":"2000000000","servingmsc":"491770","servinghlr":null,"originalnetworkname":"178","originalcountryname":"Germany","originalcountrycode":"DE","originalcountryprefix":"+49","originalnetworkprefix":"178","roamingnetworkname":null,"roamingcountryname":null,"roamingcountrycode":null,"roamingcountryprefix":null,"roamingnetworkprefix":null,"portednetworkname":null,"portedcountryname":null,"portedcountrycode":null,"portedcountryprefix":null,"portednetworkprefix":null,"isvalid":"Yes","isroaming":"No","isported":"No","usercharge":"0.0100","inserttime":"2014-12-28 05:53:03.765798+08","storage":"ASYNC-API","route":"IP4"}]}
17
+ print client.parse_callback(params)
18
+
19
+ # send HTTP response body (OK)
20
+ content_type :text
21
+ return client.send_response
22
+
23
+ end
@@ -1,49 +1,84 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'ruby_hlr_client/hlr_client'
4
-
5
- # Initializes the HLR Lookup Client
6
- # @param username - www.hlr-lookups.com username
7
- # @param password - www.hlr-lookups.com password
8
- # @param ssl - set to false to disable SSL
9
- # @constructor
10
- client = RubyHlrClient::HlrClient.new(
11
- 'username',
12
- 'password'
13
- )
14
- print "\n"
15
-
16
- # Submits a synchronous HLR Lookup request. The HLR is queried in real time and results presented in the response body.
17
- # @param msisdn - An MSISDN in international format, e.g. +491788735000
18
- # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
19
- # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
20
- # @returns string (JSON)
21
- #
22
- # Return example: {"success":true,"results":[{"id":"e1fdf26531e4","msisdncountrycode":"DE","msisdn":"+491788735000","statuscode":"HLRSTATUS_DELIVERED","hlrerrorcodeid":null,"subscriberstatus":"SUBSCRIBERSTATUS_CONNECTED","imsi":"262031300000000","mccmnc":"26203","mcc":"262","mnc":"03","msin":"1300000000","servingmsc":"140445","servinghlr":null,"originalnetworkname":"E-Plus","originalcountryname":"Germany","originalcountrycode":"DE","originalcountryprefix":"+49","originalnetworkprefix":"178","roamingnetworkname":"Fixed Line Operators and Other Networks","roamingcountryname":"United States","roamingcountrycode":"US","roamingcountryprefix":"+1","roamingnetworkprefix":"404455","portednetworkname":null,"portedcountryname":null,"portedcountrycode":null,"portedcountryprefix":null,"portednetworkprefix":null,"isvalid":"Yes","isroaming":"Yes","isported":"No","usercharge":"0.0100","inserttime":"2014-12-28 06:22:00.328844+08","storage":"SDK-TEST-SYNC-API","route":"IP1"}]}
23
- print client.submit_sync_lookup_request('+491788735000', 'IP4', 'SDK-TEST')
24
- print "\n\n"
25
-
26
- # Sets the callback URL for asynchronous lookups. Read more about the concept of asynchronous HLR lookups @ http://www.hlr-lookups.com/en/asynchronous-hlr-lookup-api
27
- # @param url - callback url on your server
28
- # @returns string (JSON)
29
- #
30
- # Return example: {"success":true,"messages":[],"results":{"url":"http:\/\/user:pass@www.your-server.com\/path\/file"}}
31
- print client.set_async_callback_url('http://user:pass@www.your-server.com/path/file')
32
- print "\n\n"
33
-
34
- # Submits asynchronous HLR Lookups containing up to 1,000 MSISDNs per request. Results are sent back asynchronously to a callback URL on your server. Use \VmgLtd\HlrCallbackHandler to capture them.
35
- # @param msisdns - A list of MSISDNs in international format, e.g. +491788735000
36
- # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
37
- # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
38
- # @returns string (JSON)
39
- #
40
- # Return example: {"success":true,"messages":[],"results":{"acceptedMsisdns":[{"id":"e489a092eba7","msisdn":"+491788735000"},{"id":"23ad48bf0c26","msisdn":"+491788735001"}],"rejectedMsisdns":[],"acceptedMsisdnCount":2,"rejectedMsisdnCount":0,"totalCount":2,"charge":0.02,"storage":"SDK-TEST-ASYNC-API","route":"IP4"}}
41
- print client.submit_async_lookup_request(['+491788735000', '+491788735001'])
42
- print "\n\n"
43
-
44
- # Returns the remaining balance (EUR) in your account.
45
- # @returns string (JSON)
46
- #
47
- # Return example: {"success":true,"messages":[],"results":{"balance":"5878.24600"}}
48
- print client.get_balance
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'ruby_hlr_client/hlr_client'
4
+
5
+ # Initializes the HLR Lookup Client
6
+ # @param username - www.hlr-lookups.com username
7
+ # @param password - www.hlr-lookups.com password
8
+ # @param ssl - set to false to disable SSL
9
+ # @constructor
10
+ client = RubyHlrClient::HlrClient.new(
11
+ 'username',
12
+ 'password'
13
+ )
14
+ print "\n"
15
+
16
+ # Submits a synchronous HLR Lookup request. The HLR is queried in real time and results presented in the response body.
17
+ # @param msisdn - An MSISDN in international format, e.g. +491788735000
18
+ # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
19
+ # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
20
+ # @returns string (JSON)
21
+ #
22
+ # Return example: {"success":true,"results":[{"id":"e1fdf26531e4","msisdncountrycode":"DE","msisdn":"+491788735000","statuscode":"HLRSTATUS_DELIVERED","hlrerrorcodeid":null,"subscriberstatus":"SUBSCRIBERSTATUS_CONNECTED","imsi":"262031300000000","mccmnc":"26203","mcc":"262","mnc":"03","msin":"1300000000","servingmsc":"140445","servinghlr":null,"originalnetworkname":"E-Plus","originalcountryname":"Germany","originalcountrycode":"DE","originalcountryprefix":"+49","originalnetworkprefix":"178","roamingnetworkname":"Fixed Line Operators and Other Networks","roamingcountryname":"United States","roamingcountrycode":"US","roamingcountryprefix":"+1","roamingnetworkprefix":"404455","portednetworkname":null,"portedcountryname":null,"portedcountrycode":null,"portedcountryprefix":null,"portednetworkprefix":null,"isvalid":"Yes","isroaming":"Yes","isported":"No","usercharge":"0.0100","inserttime":"2014-12-28 06:22:00.328844+08","storage":"SDK-TEST-SYNC-API","route":"IP1"}]}
23
+ print client.submit_sync_lookup_request('+491788735000', 'IP4', 'SDK-TEST')
24
+ print "\n\n"
25
+
26
+ # Submits a synchronous number type lookup request. Results are presented in the response body.
27
+ # @param number - An number in international format, e.g. +4989702626
28
+ # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
29
+ # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
30
+ # @returns string (JSON)
31
+ #
32
+ # Return example: { "success":true, "results":[ { "id":"2ed0788379c6", "number":"+4989702626", "numbertype":"LANDLINE", "state":"COMPLETED", "isvalid":"Yes", "ispossiblyported":"No", "isvalidshortnumber":"No", "isvanitynumber":"No", "qualifiesforhlrlookup":"No", "originalcarrier":null, "mccmnc":null, "mcc":null, "mnc":null, "countrycode":"DE", "region":"Munich", "timezones":[ "Europe\/Berlin" ], "infotext":"This is a landline number.", "usercharge":"0.0050", "inserttime":"2015-12-04 10:36:41.866283+00", "storage":"SYNC-API-NT-2015-12", "route":"LC1" } ] }
33
+ print client.submit_sync_number_type_lookup_request('+4989702626', 'LC1', 'SDK-TEST')
34
+ print "\n\n"
35
+
36
+ # Sets the callback URL for asynchronous lookups. Read more about the concept of asynchronous HLR lookups @ http://www.hlr-lookups.com/en/asynchronous-hlr-lookup-api
37
+ # @param url - callback url on your server
38
+ # @returns string (JSON)
39
+ #
40
+ # Return example: {"success":true,"messages":[],"results":{"url":"http:\/\/user:pass@www.your-server.com\/path\/file"}}
41
+ print client.set_async_callback_url('http://user:pass@www.your-server.com/path/file')
42
+ print "\n\n"
43
+
44
+ # Sets the callback URL for asynchronous number type lookups.
45
+ # @param url - callback url on your server
46
+ # @returns string (JSON)
47
+ #
48
+ # Return example: {"success":true,"messages":[],"results":{"url":"http:\/\/user:pass@www.your-server.com\/path\/file"}}
49
+ print client.set_nt_async_callback_url('http://user:pass@www.your-server.com/path/file')
50
+ print "\n\n"
51
+
52
+ # Submits asynchronous HLR Lookups containing up to 1,000 MSISDNs per request. Results are sent back asynchronously to a callback URL on your server. Use \VmgLtd\HlrCallbackHandler to capture them.
53
+ # @param msisdns - A list of MSISDNs in international format, e.g. +491788735000
54
+ # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
55
+ # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
56
+ # @returns string (JSON)
57
+ #
58
+ # Return example: {"success":true,"messages":[],"results":{"acceptedMsisdns":[{"id":"e489a092eba7","msisdn":"+491788735000"},{"id":"23ad48bf0c26","msisdn":"+491788735001"}],"rejectedMsisdns":[],"acceptedMsisdnCount":2,"rejectedMsisdnCount":0,"totalCount":2,"charge":0.02,"storage":"SDK-TEST-ASYNC-API","route":"IP4"}}
59
+ print client.submit_async_lookup_request(['+491788735000', '+491788735001'])
60
+ print "\n\n"
61
+
62
+ # Submits asynchronous number type lookups containing up to 1,000 numbers per request. Results are sent back asynchronously to a callback URL on your server.
63
+ # @param numbers - A list of numbers in international format, e.g. +4989702626,+491788735000
64
+ # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
65
+ # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
66
+ # @returns string (JSON)
67
+ #
68
+ # Return example: { "success":true, "messages":[], "results":{ "acceptedNumbers":[ { "id":"f09b30014d5e", "number":"+4989702626" }, { "id":"364c0ad33c02", "number":"+491788735000" } ], "rejectedNumbers":[ { "id":null, "number":"asdf" } ], "acceptedNumberCount":2, "rejectedNumberCount":1, "totalCount":3, "charge":0.01, "storage":"ASYNC-API-NT-2015-12", "route":"LC1" } }
69
+ print client.submit_async_number_type_lookup_request(['+4989702626','+491788735000'])
70
+ print "\n\n"
71
+
72
+ # Returns the remaining balance (EUR) in your account.
73
+ # @returns string (JSON)
74
+ #
75
+ # Return example: {"success":true,"messages":[],"results":{"balance":"5878.24600"}}
76
+ print client.get_balance
77
+ print "\n\n"
78
+
79
+ # Performs a health check on the system status, the user account and availability of each route.
80
+ # @returns string (JSON)
81
+ #
82
+ # Return example: { "success":true, "results":{ "system":{ "state":"up" }, "routes":{ "states":{ "IP1":"up", "ST2":"up", "SV3":"up", "IP4":"up", "XT5":"up", "XT6":"up", "NT7":"up", "LC1":"up" } }, "account":{ "lookupsPermitted":true, "balance":"295.23000" } } }
83
+ print client.do_health_check
49
84
  print "\n"
@@ -1,2 +1,2 @@
1
- 1. rake install
1
+ 1. rake install
2
2
  2. cd pkg/; gem push ruby_hlr_client-VERSION.gem
@@ -1,3 +1,3 @@
1
- module RubyHlrClient
2
- # Your code goes here...
1
+ module RubyHlrClient
2
+ # Your code goes here...
3
3
  end
@@ -1,36 +1,36 @@
1
- require 'json'
2
-
3
- module RubyHlrClient
4
- class HlrCallbackHandler
5
-
6
- # Parses an asynchronous HLR Lookup callback and returns a JSON string with the results.
7
- # @param params
8
- # @returns {*}
9
- #
10
- # Return example: {"success":true,"results":[{"id":"40ebb8d9e7cc","msisdncountrycode":"DE","msisdn":"+491788735001","statuscode":"HLRSTATUS_DELIVERED","hlrerrorcodeid":null,"subscriberstatus":"SUBSCRIBERSTATUS_CONNECTED","imsi":"262032000000000","mccmnc":"26203","mcc":"262","mnc":"03","msin":"2000000000","servingmsc":"491770","servinghlr":null,"originalnetworkname":"178","originalcountryname":"Germany","originalcountrycode":"DE","originalcountryprefix":"+49","originalnetworkprefix":"178","roamingnetworkname":null,"roamingcountryname":null,"roamingcountrycode":null,"roamingcountryprefix":null,"roamingnetworkprefix":null,"portednetworkname":null,"portedcountryname":null,"portedcountrycode":null,"portedcountryprefix":null,"portednetworkprefix":null,"isvalid":"Yes","isroaming":"No","isported":"No","usercharge":"0.0100","inserttime":"2014-12-28 05:53:03.765798+08","storage":"ASYNC-API","route":"IP4"}]}
11
- def parse_callback(params)
12
-
13
- unless params.has_key?('json')
14
- return generate_error_result('Invalid callback parameters. Missing json payload.')
15
- end
16
-
17
- params['json']
18
-
19
- end
20
-
21
- def send_response
22
-
23
- 'OK'
24
-
25
- end
26
-
27
- def generate_error_result(message)
28
-
29
- result = {:success => false, :fieldErrors => [], :globalErrors => ["#{message}"]}
30
- result.to_json
31
-
32
- end
33
-
34
- end
35
-
36
- end
1
+ require 'json'
2
+
3
+ module RubyHlrClient
4
+ class HlrCallbackHandler
5
+
6
+ # Parses an asynchronous HLR Lookup callback and returns a JSON string with the results.
7
+ # @param params
8
+ # @returns {*}
9
+ #
10
+ # Return example: {"success":true,"results":[{"id":"40ebb8d9e7cc","msisdncountrycode":"DE","msisdn":"+491788735001","statuscode":"HLRSTATUS_DELIVERED","hlrerrorcodeid":null,"subscriberstatus":"SUBSCRIBERSTATUS_CONNECTED","imsi":"262032000000000","mccmnc":"26203","mcc":"262","mnc":"03","msin":"2000000000","servingmsc":"491770","servinghlr":null,"originalnetworkname":"178","originalcountryname":"Germany","originalcountrycode":"DE","originalcountryprefix":"+49","originalnetworkprefix":"178","roamingnetworkname":null,"roamingcountryname":null,"roamingcountrycode":null,"roamingcountryprefix":null,"roamingnetworkprefix":null,"portednetworkname":null,"portedcountryname":null,"portedcountrycode":null,"portedcountryprefix":null,"portednetworkprefix":null,"isvalid":"Yes","isroaming":"No","isported":"No","usercharge":"0.0100","inserttime":"2014-12-28 05:53:03.765798+08","storage":"ASYNC-API","route":"IP4"}]}
11
+ def parse_callback(params)
12
+
13
+ unless params.has_key?('json')
14
+ return generate_error_result('Invalid callback parameters. Missing json payload.')
15
+ end
16
+
17
+ params['json']
18
+
19
+ end
20
+
21
+ def send_response
22
+
23
+ 'OK'
24
+
25
+ end
26
+
27
+ def generate_error_result(message)
28
+
29
+ result = {:success => false, :fieldErrors => [], :globalErrors => ["#{message}"]}
30
+ result.to_json
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -1,151 +1,237 @@
1
- require 'rest_client'
2
- require 'json'
3
-
4
- module RubyHlrClient
5
-
6
- class HlrClient
7
-
8
- # Initializes the HLR Lookup Client
9
- # @param username - www.hlr-lookups.com username
10
- # @param password - www.hlr-lookups.com password
11
- # @param ssl - set to false to disable SSL
12
- # @constructor
13
- def initialize(username, password, ssl = true)
14
- @username = username
15
- @password = password
16
- @url = "#{ssl ? 'https' : 'http'}://www.hlr-lookups.com/api"
17
- end
18
-
19
- # Submits a synchronous HLR Lookup request. The HLR is queried in real time and results presented in the response body.
20
- # @param msisdn - An MSISDN in international format, e.g. +491788735000
21
- # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
22
- # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
23
- # @returns string (JSON)
24
- #
25
- # Return example: {"success":true,"results":[{"id":"e1fdf26531e4","msisdncountrycode":"DE","msisdn":"+491788735000","statuscode":"HLRSTATUS_DELIVERED","hlrerrorcodeid":null,"subscriberstatus":"SUBSCRIBERSTATUS_CONNECTED","imsi":"262031300000000","mccmnc":"26203","mcc":"262","mnc":"03","msin":"1300000000","servingmsc":"140445","servinghlr":null,"originalnetworkname":"E-Plus","originalcountryname":"Germany","originalcountrycode":"DE","originalcountryprefix":"+49","originalnetworkprefix":"178","roamingnetworkname":"Fixed Line Operators and Other Networks","roamingcountryname":"United States","roamingcountrycode":"US","roamingcountryprefix":"+1","roamingnetworkprefix":"404455","portednetworkname":null,"portedcountryname":null,"portedcountrycode":null,"portedcountryprefix":null,"portednetworkprefix":null,"isvalid":"Yes","isroaming":"Yes","isported":"No","usercharge":"0.0100","inserttime":"2014-12-28 06:22:00.328844+08","storage":"SDK-TEST-SYNC-API","route":"IP1"}]}
26
- def submit_sync_lookup_request(msisdn, route = nil, storage = nil)
27
-
28
- params = {
29
- :action => 'submitSyncLookupRequest',
30
- :msisdn => msisdn,
31
- :username => @username,
32
- :password => @password
33
- }
34
-
35
- unless route.nil?
36
- params.merge!(route: route)
37
- end
38
-
39
- unless storage.nil?
40
- params.merge!(storage: storage)
41
- end
42
-
43
- send_request(params)
44
-
45
- end
46
-
47
- # Submits asynchronous HLR Lookups containing up to 1,000 MSISDNs per request. Results are sent back asynchronously to a callback URL on your server. Use \VmgLtd\HlrCallbackHandler to capture them.
48
- # @param msisdns - A list of MSISDNs in international format, e.g. +491788735000
49
- # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
50
- # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
51
- # @returns string (JSON)
52
- #
53
- # Return example: {"success":true,"messages":[],"results":{"acceptedMsisdns":[{"id":"e489a092eba7","msisdn":"+491788735000"},{"id":"23ad48bf0c26","msisdn":"+491788735001"}],"rejectedMsisdns":[],"acceptedMsisdnCount":2,"rejectedMsisdnCount":0,"totalCount":2,"charge":0.02,"storage":"SDK-TEST-ASYNC-API","route":"IP4"}}
54
- def submit_async_lookup_request(msisdns, route = nil, storage = nil)
55
-
56
- params = {
57
- :action => 'submitAsyncLookupRequest',
58
- :msisdns => msisdns_to_string(msisdns),
59
- :username => @username,
60
- :password => @password
61
- }
62
-
63
- unless route.nil?
64
- params.merge!(route: route)
65
- end
66
-
67
- unless storage.nil?
68
- params.merge!(storage: storage)
69
- end
70
-
71
- send_request(params)
72
-
73
- end
74
-
75
- # Sets the callback URL for asynchronous lookups. Read more about the concept of asynchronous HLR lookups @ http://www.hlr-lookups.com/en/asynchronous-hlr-lookup-api
76
- # @param url - callback url on your server
77
- # @returns string (JSON)
78
- #
79
- # Return example: {"success":true,"messages":[],"results":{"url":"http:\/\/user:pass@www.your-server.com\/path\/file"}}
80
- def set_async_callback_url(url)
81
-
82
- send_request({
83
- :action => 'setAsyncCallbackUrl',
84
- :url => url,
85
- :username => @username,
86
- :password => @password
87
- })
88
-
89
- end
90
-
91
- # Returns the remaining balance (EUR) in your account.
92
- # @returns string (JSON)
93
- #
94
- # Return example: {"success":true,"messages":[],"results":{"balance":"5878.24600"}}
95
- def get_balance
96
-
97
- send_request({
98
- :action => 'getBalance',
99
- :username => @username,
100
- :password => @password
101
- })
102
-
103
- end
104
-
105
- private
106
- def send_request(query)
107
-
108
- begin
109
- response = RestClient.get @url, :params => query
110
- rescue => e
111
- return generate_error_result("HTTP Status Code #{e.message}")
112
- end
113
-
114
- unless response.code == 200
115
- return generate_error_result("HTTP Status Code #{response.code}")
116
- end
117
-
118
- response.to_str
119
-
120
- end
121
-
122
- private
123
- def generate_error_result(message)
124
-
125
- {:success => false, :fieldErrors => [], :globalErrors => ["#{message}"]}.to_json
126
-
127
- end
128
-
129
- def msisdns_to_string(msisdns)
130
-
131
- string = ''
132
- c = 0
133
- msisdns.each { |msisdn|
134
-
135
- if c > 0
136
- string += ','
137
- end
138
-
139
- string += msisdn
140
-
141
- c = c+1
142
-
143
- }
144
-
145
- string
146
-
147
- end
148
-
149
- end
150
-
151
- end
1
+ require 'rest_client'
2
+ require 'json'
3
+
4
+ module RubyHlrClient
5
+
6
+ class HlrClient
7
+
8
+ # Initializes the HLR Lookup Client
9
+ # @param username - www.hlr-lookups.com username
10
+ # @param password - www.hlr-lookups.com password
11
+ # @param ssl - set to false to disable SSL
12
+ # @constructor
13
+ def initialize(username, password, ssl = true)
14
+ @username = username
15
+ @password = password
16
+ @url = "#{ssl ? 'https' : 'http'}://www.hlr-lookups.com/api"
17
+ end
18
+
19
+ # Submits a synchronous HLR Lookup request. The HLR is queried in real time and results presented in the response body.
20
+ # @param msisdn - An MSISDN in international format, e.g. +491788735000
21
+ # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
22
+ # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
23
+ # @returns string (JSON)
24
+ #
25
+ # Return example: {"success":true,"results":[{"id":"e1fdf26531e4","msisdncountrycode":"DE","msisdn":"+491788735000","statuscode":"HLRSTATUS_DELIVERED","hlrerrorcodeid":null,"subscriberstatus":"SUBSCRIBERSTATUS_CONNECTED","imsi":"262031300000000","mccmnc":"26203","mcc":"262","mnc":"03","msin":"1300000000","servingmsc":"140445","servinghlr":null,"originalnetworkname":"E-Plus","originalcountryname":"Germany","originalcountrycode":"DE","originalcountryprefix":"+49","originalnetworkprefix":"178","roamingnetworkname":"Fixed Line Operators and Other Networks","roamingcountryname":"United States","roamingcountrycode":"US","roamingcountryprefix":"+1","roamingnetworkprefix":"404455","portednetworkname":null,"portedcountryname":null,"portedcountrycode":null,"portedcountryprefix":null,"portednetworkprefix":null,"isvalid":"Yes","isroaming":"Yes","isported":"No","usercharge":"0.0100","inserttime":"2014-12-28 06:22:00.328844+08","storage":"SDK-TEST-SYNC-API","route":"IP1"}]}
26
+ def submit_sync_lookup_request(msisdn, route = nil, storage = nil)
27
+
28
+ params = {
29
+ :action => 'submitSyncLookupRequest',
30
+ :msisdn => msisdn,
31
+ :username => @username,
32
+ :password => @password
33
+ }
34
+
35
+ unless route.nil?
36
+ params.merge!(route: route)
37
+ end
38
+
39
+ unless storage.nil?
40
+ params.merge!(storage: storage)
41
+ end
42
+
43
+ send_request(params)
44
+
45
+ end
46
+
47
+ # Submits a synchronous number type lookup request. Results are presented in the response body.
48
+ # @param number - An number in international format, e.g. +4989702626
49
+ # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
50
+ # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
51
+ # @returns string (JSON)
52
+ #
53
+ # Return example: { "success":true, "results":[ { "id":"2ed0788379c6", "number":"+4989702626", "numbertype":"LANDLINE", "state":"COMPLETED", "isvalid":"Yes", "ispossiblyported":"No", "isvalidshortnumber":"No", "isvanitynumber":"No", "qualifiesforhlrlookup":"No", "originalcarrier":null, "mccmnc":null, "mcc":null, "mnc":null, "countrycode":"DE", "region":"Munich", "timezones":[ "Europe\/Berlin" ], "infotext":"This is a landline number.", "usercharge":"0.0050", "inserttime":"2015-12-04 10:36:41.866283+00", "storage":"SYNC-API-NT-2015-12", "route":"LC1" } ] }
54
+ def submit_sync_lookup_request(number, route = nil, storage = nil)
55
+
56
+ params = {
57
+ :action => 'submitSyncLookupRequest',
58
+ :number => number,
59
+ :username => @username,
60
+ :password => @password
61
+ }
62
+
63
+ unless route.nil?
64
+ params.merge!(route: route)
65
+ end
66
+
67
+ unless storage.nil?
68
+ params.merge!(storage: storage)
69
+ end
70
+
71
+ send_request(params)
72
+
73
+ end
74
+
75
+ # Submits asynchronous HLR Lookups containing up to 1,000 MSISDNs per request. Results are sent back asynchronously to a callback URL on your server.
76
+ # @param msisdns - A list of MSISDNs in international format, e.g. +491788735000,+491788735001
77
+ # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
78
+ # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
79
+ # @returns string (JSON)
80
+ #
81
+ # Return example: {"success":true,"messages":[],"results":{"acceptedMsisdns":[{"id":"e489a092eba7","msisdn":"+491788735000"},{"id":"23ad48bf0c26","msisdn":"+491788735001"}],"rejectedMsisdns":[],"acceptedMsisdnCount":2,"rejectedMsisdnCount":0,"totalCount":2,"charge":0.02,"storage":"SDK-TEST-ASYNC-API","route":"IP4"}}
82
+ def submit_async_lookup_request(msisdns, route = nil, storage = nil)
83
+
84
+ params = {
85
+ :action => 'submitAsyncLookupRequest',
86
+ :msisdns => msisdns_to_string(msisdns),
87
+ :username => @username,
88
+ :password => @password
89
+ }
90
+
91
+ unless route.nil?
92
+ params.merge!(route: route)
93
+ end
94
+
95
+ unless storage.nil?
96
+ params.merge!(storage: storage)
97
+ end
98
+
99
+ send_request(params)
100
+
101
+ end
102
+
103
+ # Submits asynchronous number type lookups containing up to 1,000 numbers per request. Results are sent back asynchronously to a callback URL on your server.
104
+ # @param numbers - A list of numbers in international format, e.g. +4989702626,+491788735000
105
+ # @param route - An optional route assignment, see: http://www.hlr-lookups.com/en/routing-options
106
+ # @param storage - An optional storage assignment, see: http://www.hlr-lookups.com/en/storages
107
+ # @returns string (JSON)
108
+ #
109
+ # Return example: { "success":true, "messages":[], "results":{ "acceptedNumbers":[ { "id":"f09b30014d5e", "number":"+4989702626" }, { "id":"364c0ad33c02", "number":"+491788735000" } ], "rejectedNumbers":[ { "id":null, "number":"asdf" } ], "acceptedNumberCount":2, "rejectedNumberCount":1, "totalCount":3, "charge":0.01, "storage":"ASYNC-API-NT-2015-12", "route":"LC1" } }
110
+ def submit_async_number_type_lookup_request(msisdns, route = nil, storage = nil)
111
+
112
+ params = {
113
+ :action => 'submitAsyncNumberTypeLookupRequest',
114
+ :msisdns => msisdns_to_string(numbers),
115
+ :username => @username,
116
+ :password => @password
117
+ }
118
+
119
+ unless route.nil?
120
+ params.merge!(route: route)
121
+ end
122
+
123
+ unless storage.nil?
124
+ params.merge!(storage: storage)
125
+ end
126
+
127
+ send_request(params)
128
+
129
+ end
130
+
131
+ # Sets the callback URL for asynchronous HLR lookups. Read more about the concept of asynchronous HLR lookups @ http://www.hlr-lookups.com/en/asynchronous-hlr-lookup-api
132
+ # @param url - callback url on your server
133
+ # @returns string (JSON)
134
+ #
135
+ # Return example: {"success":true,"messages":[],"results":{"url":"http:\/\/user:pass@www.your-server.com\/path\/file"}}
136
+ def set_async_callback_url(url)
137
+
138
+ send_request({
139
+ :action => 'setAsyncCallbackUrl',
140
+ :url => url,
141
+ :username => @username,
142
+ :password => @password
143
+ })
144
+
145
+ end
146
+
147
+ # Sets the callback URL for asynchronous number type lookups.
148
+ # @param url - callback url on your server
149
+ # @returns string (JSON)
150
+ #
151
+ # Return example: {"success":true,"messages":[],"results":{"url":"http:\/\/user:pass@www.your-server.com\/path\/file"}}
152
+ def set_nt_async_callback_url(url)
153
+
154
+ send_request({
155
+ :action => 'setNtAsyncCallbackUrl',
156
+ :url => url,
157
+ :username => @username,
158
+ :password => @password
159
+ })
160
+
161
+ end
162
+
163
+ # Returns the remaining balance (EUR) in your account.
164
+ # @returns string (JSON)
165
+ #
166
+ # Return example: {"success":true,"messages":[],"results":{"balance":"5878.24600"}}
167
+ def get_balance
168
+
169
+ send_request({
170
+ :action => 'getBalance',
171
+ :username => @username,
172
+ :password => @password
173
+ })
174
+
175
+ end
176
+
177
+ # Performs a health check on the system status, the user account and availability of each route.
178
+ # @returns string (JSON)
179
+ #
180
+ # Return example: { "success":true, "results":{ "system":{ "state":"up" }, "routes":{ "states":{ "IP1":"up", "ST2":"up", "SV3":"up", "IP4":"up", "XT5":"up", "XT6":"up", "NT7":"up", "LC1":"up" } }, "account":{ "lookupsPermitted":true, "balance":"295.23000" } } }
181
+ def do_health_check
182
+
183
+ send_request({
184
+ :action => 'doHealthCheck',
185
+ :username => @username,
186
+ :password => @password
187
+ })
188
+
189
+ end
190
+
191
+ private
192
+ def send_request(query)
193
+
194
+ begin
195
+ response = RestClient.get @url, :params => query
196
+ rescue => e
197
+ return generate_error_result("HTTP Status Code #{e.message}")
198
+ end
199
+
200
+ unless response.code == 200
201
+ return generate_error_result("HTTP Status Code #{response.code}")
202
+ end
203
+
204
+ response.to_str
205
+
206
+ end
207
+
208
+ private
209
+ def generate_error_result(message)
210
+
211
+ {:success => false, :fieldErrors => [], :globalErrors => ["#{message}"]}.to_json
212
+
213
+ end
214
+
215
+ def msisdns_to_string(msisdns)
216
+
217
+ string = ''
218
+ c = 0
219
+ msisdns.each { |msisdn|
220
+
221
+ if c > 0
222
+ string += ','
223
+ end
224
+
225
+ string += msisdn
226
+
227
+ c = c+1
228
+
229
+ }
230
+
231
+ string
232
+
233
+ end
234
+
235
+ end
236
+
237
+ end
@@ -1,3 +1,3 @@
1
- module RubyHlrClient
2
- VERSION = '0.0.13'
3
- end
1
+ module RubyHlrClient
2
+ VERSION = '0.0.14'
3
+ end
@@ -1,26 +1,26 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path('../lib', __FILE__)
3
- require 'ruby_hlr_client/version'
4
-
5
- Gem::Specification.new do |s|
6
- s.name = 'ruby_hlr_client'
7
- s.version = RubyHlrClient::VERSION
8
- s.platform = Gem::Platform::RUBY
9
- s.authors = ['Velocity Made Good Ltd.']
10
- s.email = ['service@hlr-lookups.com']
11
- s.homepage = 'http://www.hlr-lookups.com'
12
- s.summary = %q{Official HLR Lookup API Ruby SDK by www.hlr-lookups.com}
13
- s.licenses = ['Apache-2.0']
14
-
15
-
16
- s.add_dependency 'sinatra'
17
- s.add_dependency 'rest_client'
18
- s.add_dependency 'json'
19
-
20
- s.rubyforge_project = 'ruby_hlr_client'
21
-
22
- s.files = `git ls-files`.split("\n")
23
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
24
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
25
- s.require_paths = ['lib']
26
- end
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'ruby_hlr_client/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'ruby_hlr_client'
7
+ s.version = RubyHlrClient::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ['Velocity Made Good Ltd.']
10
+ s.email = ['service@hlr-lookups.com']
11
+ s.homepage = 'http://www.hlr-lookups.com'
12
+ s.summary = %q{Official HLR Lookup API Ruby SDK by www.hlr-lookups.com}
13
+ s.licenses = ['Apache-2.0']
14
+
15
+
16
+ s.add_dependency 'sinatra'
17
+ s.add_dependency 'rest_client'
18
+ s.add_dependency 'json'
19
+
20
+ s.rubyforge_project = 'ruby_hlr_client'
21
+
22
+ s.files = `git ls-files`.split("\n")
23
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
24
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
25
+ s.require_paths = ['lib']
26
+ end
metadata CHANGED
@@ -1,66 +1,76 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby_hlr_client
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.13
3
+ version: !ruby/object:Gem::Version
4
+ hash: 3
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 14
10
+ version: 0.0.14
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Velocity Made Good Ltd.
8
14
  autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
- date: 2015-01-06 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2015-12-04 00:00:00 +00:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
14
22
  name: sinatra
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ! '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
23
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ! '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rest_client
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ! '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
34
33
  type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rest_client
35
37
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ! '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: json
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ! '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
48
47
  type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: json
49
51
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :runtime
62
+ version_requirements: *id003
55
63
  description:
56
- email:
64
+ email:
57
65
  - service@hlr-lookups.com
58
- executables:
66
+ executables:
59
67
  - test_callback_handler.rb
60
68
  - test_client.rb
61
69
  extensions: []
70
+
62
71
  extra_rdoc_files: []
63
- files:
72
+
73
+ files:
64
74
  - .gitignore
65
75
  - Gemfile
66
76
  - Rakefile
@@ -72,28 +82,39 @@ files:
72
82
  - lib/ruby_hlr_client/hlr_client.rb
73
83
  - lib/ruby_hlr_client/version.rb
74
84
  - ruby_hlr_client.gemspec
85
+ has_rdoc: true
75
86
  homepage: http://www.hlr-lookups.com
76
- licenses:
87
+ licenses:
77
88
  - Apache-2.0
78
- metadata: {}
79
89
  post_install_message:
80
90
  rdoc_options: []
81
- require_paths:
91
+
92
+ require_paths:
82
93
  - lib
83
- required_ruby_version: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
87
- version: '0'
88
- required_rubygems_version: !ruby/object:Gem::Requirement
89
- requirements:
90
- - - ! '>='
91
- - !ruby/object:Gem::Version
92
- version: '0'
94
+ required_ruby_version: !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
102
+ version: "0"
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ hash: 3
109
+ segments:
110
+ - 0
111
+ version: "0"
93
112
  requirements: []
113
+
94
114
  rubyforge_project: ruby_hlr_client
95
- rubygems_version: 2.4.5
115
+ rubygems_version: 1.3.7
96
116
  signing_key:
97
- specification_version: 4
117
+ specification_version: 3
98
118
  summary: Official HLR Lookup API Ruby SDK by www.hlr-lookups.com
99
119
  test_files: []
120
+
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YzUyM2U2YTFkNmQ2YWNmNDBmMzVhNWVjZWFhMjViYmE4MDUyMDIzYQ==
5
- data.tar.gz: !binary |-
6
- NmJmZGE2MzMyY2I1OTFhZjllMzU0ZmM3YzYxZTBlZGY0NmM0ZTFiOQ==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- NDZlMmE5Y2IyYzkxN2IzOWVkZGQyYzE2ZTI5Njg1MWMzOGUwZWYyMmZlZTdl
10
- NjMwM2EyZDk0N2RlMWQ0ZTE0NzQ5MzZhNjMyYzgxYzcwYzdiZjdjZmYyNmY1
11
- MDgyNzEzZDJhMjlmODAxN2NhY2NmYWIzMGFhYWNkNGJlMGUzM2M=
12
- data.tar.gz: !binary |-
13
- ZTBjNGM0NDFlOTU3ZWFmZDA2OGE1ZTQwMWJkZWNkODNkMDMxZDc2ZWJiNzVl
14
- MGY5Y2IyMGI5OGE4YTMwOWMyYTEyNWUwMTU2NWVkODYyM2U2NDlmOTAwM2Jk
15
- ZmRiODdlYjNiMWJjZDQ5NWMxZjYyYjk2M2I0YzY4ZGM1YzgxYTk=