ruby_hlr_client 0.0.15 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f06ae6d66949dab9f751c2e4adf7449c8f11e7f9f8a804ee1f32d4bfa42c2087
4
+ data.tar.gz: 384409e63b9cfa4813be4f95f06c20d850f29cd697278094081317d7d9c5b852
5
+ SHA512:
6
+ metadata.gz: dcc01c7198d6123c466b0b34e5702ba829858cb9e39ac0d462ca9a4410ac95e8ab02eab4ef298b3b6a002dd65338fbed67114101304b6e83ed320c00dd7660d1
7
+ data.tar.gz: e52e634fcfb799b5b57dbc228b9998863abe5973165a04ff5630e2c8893b8d64473147e8924117182d0750a4603bdc6c2027ebd78f85115c3f8d0ab8d0ea7cee
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  # Specify dependencies in ruby_hlr_client.gemspec
4
- gemspec
4
+ gemspec
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env ruby
2
+ require 'ruby_hlr_client/client'
3
+
4
+ # This file contains examples on how to interact with the HLR Lookup API.
5
+ # All endpoints of the API are documented here: https://www.hlr-lookups.com/en/api-docs
6
+
7
+ # Create an HLR Lookups API client
8
+ # The constructor takes your API Key, API Secret and an optional log file location as parameters
9
+ # Your API Key and Secret can be obtained here: https://www.hlr-lookups.com.com/en/api-settings
10
+
11
+ client = HlrLookupsSDK::Client.new(
12
+ 'YOUR-API-KEY',
13
+ 'YOUR-API-SECRET',
14
+ '/var/log/hlr-lookups-api.log' # an optional log file location
15
+ )
16
+
17
+ # Invoke a request to GET /auth-test (https://www.hlr-lookups.com/en/api-docs#get-auth-test) to see if everything worked
18
+ response = client.get('/auth-test')
19
+
20
+ # The API returns an HTTP status code of 200 if the request was successfully processed, let's have a look.
21
+ print "Status Code: " + response.code.to_s + "\n"
22
+ print "Response Body: " + response.body + "\n"
23
+
24
+ # Submit an HLR Lookup via POST /hlr-lookup (https://www.hlr-lookups.com/en/api-docs#post-hlr-lookup)
25
+ response = client.post('/hlr-lookup', msisdn: '+905536939460')
26
+
27
+ print "HLR Lookup Status Code: " + response.code.to_s + "\n"
28
+ print "HLR Lookup Response Body: " + response.body + "\n"
29
+
30
+ if response.code != 200
31
+ # something went wrong
32
+ print "Received non-OK status code from server." + "\n"
33
+ end
34
+
35
+ # do something with the HLR data
36
+ data = JSON.parse(response.body)
37
+
38
+ # Submit an NT Lookup via POST /nt-lookup (https://www.hlr-lookups.com/en/api-docs#post-nt-lookup)
39
+ response = client.post('/nt-lookup', number: '+905536939460')
40
+
41
+ print "NT Lookup Status Code: " + response.code.to_s + "\n"
42
+ print "NT Lookup Response Body: " + response.body + "\n"
43
+
44
+ if response.code != 200
45
+ # something went wrong
46
+ print "Received non-OK status code from server." + "\n"
47
+ end
48
+
49
+ # do something with the NT data
50
+ data = JSON.parse(response.body)
51
+
52
+ # Submit an MNP Lookup via POST /mnp-lookup (https://www.hlr-lookups.com/en/api-docs#post-mnp-lookup)
53
+ response = client.post('/mnp-lookup', msisdn: '+905536939460')
54
+
55
+ print "MNP Lookup Status Code: " + response.code.to_s + "\n"
56
+ print "MNP Lookup Response Body: " + response.body + "\n"
57
+
58
+ if response.code != 200
59
+ # something went wrong
60
+ print "Received non-OK status code from server." + "\n"
61
+ end
62
+
63
+ # do something with the MNP data
64
+ data = JSON.parse(response.body)
@@ -1,3 +1,3 @@
1
- module RubyHlrClient
1
+ module HlrLookupsSDK
2
2
  # Your code goes here...
3
3
  end
@@ -0,0 +1,185 @@
1
+ require 'rest-client'
2
+ require 'json'
3
+ require 'time'
4
+ require 'ruby_hlr_client/config'
5
+ require 'uri'
6
+ require 'openssl'
7
+
8
+ # Ruby implementation of a REST client for the HLR Lookups API
9
+ # see https://www.hlr-lookups.com/en/api-docs
10
+ module HlrLookupsSDK
11
+
12
+ class Client
13
+
14
+ # HLR Lookups API client constructor, initialize this with the API key and secret as given by https://www.hlr-lookups.com/en/api-settings
15
+ # @param key; as given by https://www.hlr-lookups.com/en/api-settings
16
+ # @param secret; as given by https://www.hlr-lookups.com/en/api-settings
17
+ # @param log_file; optional log file path
18
+ # @constructor
19
+ def initialize(key, secret, log_file = NIL)
20
+
21
+ # @string The API Key as given by https://www.hlr-lookups.com/en/api-settings
22
+ @key = key
23
+
24
+ # @string The API Secret as given by https://www.hlr-lookups.com/en/api-settings
25
+ @secret = secret
26
+
27
+ # @string The API version to which we connect (leave it as is)
28
+ @api_version = HlrLookupsSDK::API_VERSION
29
+
30
+ # @string Used in the HTTP user agent (leave it as is)
31
+ @client_name = HlrLookupsSDK::CLIENT_NAME
32
+
33
+ # @string The current version of this SDK, used in the HTTP user agent (leave it as is)
34
+ @client_version = HlrLookupsSDK::CLIENT_VERSION
35
+
36
+ # @string HLR Lookup connect url
37
+ @connect_url = HlrLookupsSDK::CONNECT_URL
38
+
39
+ # @string|NIL Specifies the log file to which to write, if any.
40
+ @log_file = log_file ? log_file : NIL
41
+
42
+ end
43
+
44
+ # Use this method to communicate with GET endpoints
45
+ # @param endpoint (string), e.g. GET /auth-test
46
+ # @param params (hash), a list of GET parameters to be included in the request
47
+ # @return RestClient::Response, https://github.com/rest-client/rest-client/blob/2c72a2e77e2e87d25ff38feba0cf048d51bd5eca/lib/restclient/response.rb
48
+ def get(endpoint, params = {})
49
+
50
+ path = build_connect_url(endpoint) + '?' + URI.encode_www_form(params)
51
+ headers = build_headers(endpoint, 'GET', params)
52
+
53
+ log "GET " + path
54
+ log headers.to_s
55
+
56
+ begin
57
+ response = RestClient::Request.execute(method: :get, url: path, headers: headers, timeout: 15)
58
+ rescue RestClient::ExceptionWithResponse => e
59
+ log e.http_code.to_s + " " + e.response.to_s
60
+ return e.response
61
+ end
62
+
63
+ log response.code.to_s + " " + response.to_s
64
+
65
+ response
66
+
67
+ end
68
+
69
+ # Use this method to communicate with POST endpoints
70
+ # @param endpoint (string), e.g. POST /hlr-lookup
71
+ # @param params (hash), a list of parameters to be included in the request
72
+ # @return RestClient::Response, https://github.com/rest-client/rest-client/blob/2c72a2e77e2e87d25ff38feba0cf048d51bd5eca/lib/restclient/response.rb
73
+ def post(endpoint, params = {})
74
+
75
+ path = build_connect_url(endpoint)
76
+ headers = build_headers(endpoint, 'POST', params)
77
+
78
+ log "POST " + path + " " + params.to_s
79
+ log headers.to_s
80
+
81
+ begin
82
+ response = RestClient::Request.execute(method: :post, url: path, payload: params.to_json, headers: headers, timeout: 15)
83
+ rescue RestClient::ExceptionWithResponse => e
84
+ log e.http_code.to_s + " " + e.response.to_s
85
+ return e.response
86
+ end
87
+
88
+ log response.code.to_s + " " + response.to_s
89
+
90
+ response
91
+
92
+ end
93
+
94
+ # Use this method to communicate with PUT endpoints
95
+ # @param endpoint (string)
96
+ # @param params (hash), a list of parameters to be included in the request
97
+ # @return RestClient::Response, https://github.com/rest-client/rest-client/blob/2c72a2e77e2e87d25ff38feba0cf048d51bd5eca/lib/restclient/response.rb
98
+ def put(endpoint, params = {})
99
+
100
+ path = build_connect_url(endpoint)
101
+ headers = build_headers(endpoint, 'PUT', params)
102
+
103
+ log "PUT " + path + " " + params.to_s
104
+ log headers.to_s
105
+
106
+ begin
107
+ response = RestClient::Request.execute(method: :put, url: path, payload: params.to_json, headers: headers, timeout: 15)
108
+ rescue RestClient::ExceptionWithResponse => e
109
+ log e.http_code.to_s + " " + e.response.to_s
110
+ return e.response
111
+ end
112
+
113
+ log response.code.to_s + " " + response.to_s
114
+
115
+ response
116
+
117
+ end
118
+
119
+ # Use this method to communicate with DELETE endpoints
120
+ # @param endpoint (string)
121
+ # @param params (hash), a list of parameters to be included in the request
122
+ # @return RestClient::Response, https://github.com/rest-client/rest-client/blob/2c72a2e77e2e87d25ff38feba0cf048d51bd5eca/lib/restclient/response.rb
123
+ def delete(endpoint, params = {})
124
+
125
+ path = build_connect_url(endpoint)
126
+ headers = build_headers(endpoint, 'DELETE', params)
127
+
128
+ log "DELETE " + path + " " + params.to_s
129
+ log headers.to_s
130
+
131
+ begin
132
+ response = RestClient::Request.execute(method: :delete, url: path, payload: params.to_json, headers: headers, timeout: 15)
133
+ rescue RestClient::ExceptionWithResponse => e
134
+ log e.http_code.to_s + " " + e.response.to_s
135
+ return e.response
136
+ end
137
+
138
+ log response.code.to_s + " " + response.to_s
139
+
140
+ response
141
+
142
+ end
143
+
144
+ # private class to generate connect url on HLR Lookups servers
145
+ private
146
+ def build_connect_url(endpoint)
147
+ @connect_url + @api_version + endpoint
148
+ end
149
+
150
+ # private class to generate authentication headers
151
+ private
152
+ def build_headers(endpoint, method, params)
153
+
154
+ timestamp = Time.now.to_i
155
+ body = nil
156
+ if method != 'GET'
157
+ body = params.length > 0 ? params.to_json : nil
158
+ end
159
+ data = endpoint + timestamp.to_s + method + body.to_s
160
+
161
+ {
162
+ :"X-Digest-Key" => @key,
163
+ :"X-Digest-Signature" => OpenSSL::HMAC.hexdigest('sha256', @secret, data),
164
+ :"X-Digest-Timestamp" => timestamp,
165
+ :"User-Agent" => @client_name + " " + @client_version + " (" + @key + ")"
166
+ }
167
+
168
+ end
169
+
170
+
171
+ private
172
+ def log(text)
173
+
174
+ if @log_file == nil
175
+ return
176
+ end
177
+
178
+ File.open(@log_file, 'a') { |f| f.write(Time.now.utc.rfc822 + " [HlrLookupsSDK] " + text + "\n") }
179
+ # print Time.now.utc.rfc822 + " [HlrLookupsSDK] " + text + "\n"
180
+
181
+ end
182
+
183
+ end
184
+
185
+ end
@@ -0,0 +1,11 @@
1
+ module HlrLookupsSDK
2
+
3
+ CLIENT_VERSION = '2.0.1'
4
+
5
+ CLIENT_NAME = 'ruby_hlr_client'
6
+
7
+ API_VERSION = 'v2'
8
+
9
+ CONNECT_URL = 'https://www.hlr-lookups.com/api/'
10
+
11
+ end
@@ -1,26 +1,23 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path('../lib', __FILE__)
3
- require 'ruby_hlr_client/version'
3
+ require 'ruby_hlr_client/config'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'ruby_hlr_client'
7
- s.version = RubyHlrClient::VERSION
7
+ s.version = HlrLookupsSDK::CLIENT_VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ['Velocity Made Good Ltd.']
10
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}
11
+ s.homepage = 'https://www.hlr-lookups.com'
12
+ s.summary = %q{HLR Lookups SDK. Obtain live mobile phone connectivity and portability data from network operators directly.}
13
13
  s.licenses = ['Apache-2.0']
14
+ s.required_ruby_version = '>= 2.0.0'
14
15
 
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'
16
+ s.add_runtime_dependency 'rest-client', '~> 2.1', '>= 2.1.0'
17
+ s.add_runtime_dependency 'json', '~> 2.3', '>= 2.3.0'
21
18
 
22
19
  s.files = `git ls-files`.split("\n")
23
20
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
24
21
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
25
22
  s.require_paths = ['lib']
26
- end
23
+ end
metadata CHANGED
@@ -1,120 +1,91 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby_hlr_client
3
- version: !ruby/object:Gem::Version
4
- hash: 1
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 15
10
- version: 0.0.15
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.1
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Velocity Made Good Ltd.
14
- autorequire:
8
+ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2015-12-04 00:00:00 +00:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: sinatra
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
11
+ date: 2020-08-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
27
20
  - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
21
+ - !ruby/object:Gem::Version
22
+ version: 2.1.0
33
23
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: rest_client
37
24
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.1'
41
30
  - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
47
- type: :runtime
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
31
+ - !ruby/object:Gem::Version
32
+ version: 2.1.0
33
+ - !ruby/object:Gem::Dependency
50
34
  name: json
51
- prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.3'
55
40
  - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
41
+ - !ruby/object:Gem::Version
42
+ version: 2.3.0
61
43
  type: :runtime
62
- version_requirements: *id003
63
- description:
64
- email:
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.3'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.3.0
53
+ description:
54
+ email:
65
55
  - service@hlr-lookups.com
66
- executables:
67
- - test_callback_handler.rb
68
- - test_client.rb
56
+ executables: []
69
57
  extensions: []
70
-
71
58
  extra_rdoc_files: []
72
-
73
- files:
74
- - .gitignore
59
+ files:
60
+ - ".gitignore"
75
61
  - Gemfile
76
- - Rakefile
77
- - bin/test_callback_handler.rb
78
- - bin/test_client.rb
79
- - create_gem.txt
62
+ - examples/example.rb
80
63
  - lib/ruby_hlr_client.rb
81
- - lib/ruby_hlr_client/hlr_callback_handler.rb
82
- - lib/ruby_hlr_client/hlr_client.rb
83
- - lib/ruby_hlr_client/version.rb
64
+ - lib/ruby_hlr_client/client.rb
65
+ - lib/ruby_hlr_client/config.rb
84
66
  - ruby_hlr_client.gemspec
85
- has_rdoc: true
86
- homepage: http://www.hlr-lookups.com
87
- licenses:
67
+ homepage: https://www.hlr-lookups.com
68
+ licenses:
88
69
  - Apache-2.0
89
- post_install_message:
70
+ metadata: {}
71
+ post_install_message:
90
72
  rdoc_options: []
91
-
92
- require_paths:
73
+ require_paths:
93
74
  - lib
94
- required_ruby_version: !ruby/object:Gem::Requirement
95
- none: false
96
- requirements:
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
97
77
  - - ">="
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:
78
+ - !ruby/object:Gem::Version
79
+ version: 2.0.0
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
106
82
  - - ">="
107
- - !ruby/object:Gem::Version
108
- hash: 3
109
- segments:
110
- - 0
111
- version: "0"
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
112
85
  requirements: []
113
-
114
- rubyforge_project: ruby_hlr_client
115
- rubygems_version: 1.3.7
116
- signing_key:
117
- specification_version: 3
118
- summary: Official HLR Lookup API Ruby SDK by www.hlr-lookups.com
86
+ rubygems_version: 3.1.2
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: HLR Lookups SDK. Obtain live mobile phone connectivity and portability data
90
+ from network operators directly.
119
91
  test_files: []
120
-
data/Rakefile DELETED
@@ -1 +0,0 @@
1
- require 'bundler/gem_tasks'
@@ -1,23 +0,0 @@
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,84 +0,0 @@
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
84
- print "\n"
@@ -1,2 +0,0 @@
1
- 1. rake install
2
- 2. cd pkg/; gem push ruby_hlr_client-VERSION.gem
@@ -1,36 +0,0 @@
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,237 +0,0 @@
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_number_type_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 +0,0 @@
1
- module RubyHlrClient
2
- VERSION = '0.0.15'
3
- end