ruby_hlr_client 0.0.13 → 0.0.14

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/.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=