tomba 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 14fc88b877a55b993f2d26a344212ba05c3e95caecc23c544340c33938a0cc2b
4
+ data.tar.gz: 3c083ee97a506e80b081dd8c1316bf396e5f0f6f445d402cb70d0c40d82a2e63
5
+ SHA512:
6
+ metadata.gz: 79fa611ff51ae93ff978c716e9461e0a8677889fd0b880deac9ee75af5b76d11f7c4719fcb5427cdbdffd956310dd6a7d62a267d76514d17a9937f8d68b8bf1b
7
+ data.tar.gz: 47132687b7c2f5788bc1aafc47c0ad1318d9e1d69231323509bdceb1322fe1cf68966c72050d8d847a78ab51a26c41b520aa78fb6f6efbe604e92992837f0493
@@ -0,0 +1,122 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'json'
4
+ require 'cgi'
5
+
6
+ module Tomba
7
+ class Client
8
+
9
+ METHOD_GET = 'get'
10
+ METHOD_POST = 'post'
11
+ METHOD_PUT = 'put'
12
+ METHOD_PATCH = 'patch'
13
+ METHOD_DELETE = 'delete'
14
+ METHOD_HEAD = 'head'
15
+ METHOD_OPTIONS = 'options'
16
+ METHOD_CONNECT = 'connect'
17
+ METHOD_TRACE = 'trace'
18
+
19
+ def initialize()
20
+ @headers = {
21
+ 'content-type' => '',
22
+ 'user-agent' => RUBY_PLATFORM + ':ruby-' + RUBY_VERSION,
23
+ 'x-sdk-version' => 'tomba:ruby:v1.0.0'
24
+
25
+ }
26
+ @endpoint = 'https://api.tomba.io/v1';
27
+ end
28
+
29
+ def set_key(value)
30
+ add_header('x-tomba-key', value)
31
+
32
+ return self
33
+ end
34
+
35
+ def set_secret(value)
36
+ add_header('x-tomba-secret', value)
37
+
38
+ return self
39
+ end
40
+
41
+ def set_endpoint(endpoint)
42
+ @endpoint = endpoint
43
+
44
+ return self
45
+ end
46
+
47
+ def add_header(key, value)
48
+ @headers[key.downcase] = value
49
+
50
+ return self
51
+ end
52
+
53
+ def call(method, path = '', headers = {}, params = {})
54
+ uri = URI.parse(@endpoint + path + ((method == METHOD_GET && params.length) ? '?' + encode(params) : ''))
55
+ return fetch(method, uri, headers, params)
56
+ end
57
+
58
+ protected
59
+
60
+ private
61
+
62
+ def fetch(method, uri, headers, params, limit = 5)
63
+ raise ArgumentError, 'Too Many HTTP Redirects' if limit == 0
64
+
65
+ http = Net::HTTP.new(uri.host, uri.port)
66
+ http.use_ssl = (uri.scheme == 'https')
67
+ payload = ''
68
+
69
+ headers = @headers.merge(headers)
70
+ @BOUNDARY = "----A30#3ad1"
71
+ if (method != METHOD_GET)
72
+ case headers['content-type'][0, headers['content-type'].index(';') || headers['content-type'].length]
73
+ when 'application/json'
74
+ payload = params.to_json
75
+ else
76
+ payload = encode(params)
77
+ end
78
+ end
79
+
80
+ begin
81
+ response = http.send_request(method.upcase, uri.request_uri, payload, headers)
82
+ rescue => error
83
+ raise Tomba::Exception.new(error.message)
84
+ end
85
+
86
+ # Handle Redirects
87
+ if (response.class == Net::HTTPRedirection || response.class == Net::HTTPMovedPermanently)
88
+ location = response['location']
89
+ uri = URI.parse(uri.scheme + "://" + uri.host + "" + location)
90
+
91
+ return fetch(method, uri, headers, {}, limit - 1)
92
+ end
93
+
94
+ begin
95
+ res = JSON.parse(response.body);
96
+ rescue JSON::ParserError => e
97
+ raise Tomba::Exception.new(response.body, response.code, nil)
98
+ end
99
+
100
+ if(response.code.to_i >= 400)
101
+ raise Tomba::Exception.new(res['errors']['message'], res['errors']['code'], res)
102
+ end
103
+
104
+ return res;
105
+ end
106
+
107
+
108
+ def encode(value, key = nil)
109
+ case value
110
+ when Hash then value.map { |k,v| encode(v, append_key(key,k)) }.join('&')
111
+ when Array then value.map { |v| encode(v, "#{key}[]") }.join('&')
112
+ when nil then ''
113
+ else
114
+ "#{key}=#{CGI.escape(value.to_s)}"
115
+ end
116
+ end
117
+
118
+ def append_key(root_key, key)
119
+ root_key.nil? ? key : "#{root_key}[#{key.to_s}]"
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,14 @@
1
+ module Tomba
2
+ class Exception < StandardError
3
+ @code = 0;
4
+ @response = nil;
5
+
6
+ def initialize(message, code, response)
7
+ super(message)
8
+ @code = code
9
+ @response = response
10
+ end
11
+ attr_reader :code
12
+ attr_reader :response
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ module Tomba
2
+ class Service
3
+
4
+ def initialize(client)
5
+ @client = client
6
+ end
7
+
8
+ protected
9
+
10
+ private
11
+ end
12
+ end
@@ -0,0 +1,19 @@
1
+ module Tomba
2
+ class Account < Service
3
+
4
+ def get_account()
5
+ path = '/me'
6
+
7
+ params = {}
8
+
9
+ return @client.call('get', path, {
10
+ 'content-type' => 'application/json',
11
+ }, params);
12
+ end
13
+
14
+
15
+ protected
16
+
17
+ private
18
+ end
19
+ end
@@ -0,0 +1,27 @@
1
+ module Tomba
2
+ class Count < Service
3
+
4
+ def email_count(domain:)
5
+ if domain.nil?
6
+ raise Tomba::Exception.new('Missing required parameter: "domain"')
7
+ end
8
+
9
+ path = '/email-count'
10
+
11
+ params = {}
12
+
13
+ if !domain.nil?
14
+ params[:domain] = domain
15
+ end
16
+
17
+ return @client.call('get', path, {
18
+ 'content-type' => 'application/json',
19
+ }, params);
20
+ end
21
+
22
+
23
+ protected
24
+
25
+ private
26
+ end
27
+ end
@@ -0,0 +1,36 @@
1
+ module Tomba
2
+ class Domain < Service
3
+
4
+ def domain_search(domain:, page: nil, limit: nil, department: nil)
5
+ if domain.nil?
6
+ raise Tomba::Exception.new('Missing required parameter: "domain"')
7
+ end
8
+
9
+ path = '/domain-search/{domain}'
10
+ .gsub('{domain}', domain)
11
+
12
+ params = {}
13
+
14
+ if !page.nil?
15
+ params[:page] = page
16
+ end
17
+
18
+ if !limit.nil?
19
+ params[:limit] = limit
20
+ end
21
+
22
+ if !department.nil?
23
+ params[:department] = department
24
+ end
25
+
26
+ return @client.call('get', path, {
27
+ 'content-type' => 'application/json',
28
+ }, params);
29
+ end
30
+
31
+
32
+ protected
33
+
34
+ private
35
+ end
36
+ end
@@ -0,0 +1,40 @@
1
+ module Tomba
2
+ class Finder < Service
3
+
4
+ def email_finder(domain:, first_name:, last_name:)
5
+ if domain.nil?
6
+ raise Tomba::Exception.new('Missing required parameter: "domain"')
7
+ end
8
+
9
+ if first_name.nil?
10
+ raise Tomba::Exception.new('Missing required parameter: "firstName"')
11
+ end
12
+
13
+ if last_name.nil?
14
+ raise Tomba::Exception.new('Missing required parameter: "lastName"')
15
+ end
16
+
17
+ path = '/email-finder/{domain}'
18
+ .gsub('{domain}', domain)
19
+
20
+ params = {}
21
+
22
+ if !first_name.nil?
23
+ params[:first_name] = first_name
24
+ end
25
+
26
+ if !last_name.nil?
27
+ params[:last_name] = last_name
28
+ end
29
+
30
+ return @client.call('get', path, {
31
+ 'content-type' => 'application/json',
32
+ }, params);
33
+ end
34
+
35
+
36
+ protected
37
+
38
+ private
39
+ end
40
+ end
@@ -0,0 +1,59 @@
1
+ module Tomba
2
+ class Keys < Service
3
+
4
+ def get_keys()
5
+ path = '/keys/{id}'
6
+
7
+ params = {}
8
+
9
+ return @client.call('get', path, {
10
+ 'content-type' => 'application/json',
11
+ }, params);
12
+ end
13
+
14
+ def delete_key(id:)
15
+ if id.nil?
16
+ raise Tomba::Exception.new('Missing required parameter: "id"')
17
+ end
18
+
19
+ path = '/keys/{id}'
20
+ .gsub('{id}', id)
21
+
22
+ params = {}
23
+
24
+ return @client.call('delete', path, {
25
+ 'content-type' => 'application/json',
26
+ }, params);
27
+ end
28
+
29
+ def create_key()
30
+ path = '/keys/{id}'
31
+
32
+ params = {}
33
+
34
+ return @client.call('post', path, {
35
+ 'content-type' => 'application/json',
36
+ }, params);
37
+ end
38
+
39
+ def reset_key(id:)
40
+ if id.nil?
41
+ raise Tomba::Exception.new('Missing required parameter: "id"')
42
+ end
43
+
44
+ path = '/keys/{id}'
45
+ .gsub('{id}', id)
46
+
47
+ params = {}
48
+
49
+ return @client.call('put', path, {
50
+ 'content-type' => 'application/json',
51
+ }, params);
52
+ end
53
+
54
+
55
+ protected
56
+
57
+ private
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ module Tomba
2
+ class LeadsAttributes < Service
3
+
4
+ def get_lead_attributes()
5
+ path = '/leads/attributes/{id}'
6
+
7
+ params = {}
8
+
9
+ return @client.call('get', path, {
10
+ 'content-type' => 'application/json',
11
+ }, params);
12
+ end
13
+
14
+ def delete_lead_attribute(id:)
15
+ if id.nil?
16
+ raise Tomba::Exception.new('Missing required parameter: "id"')
17
+ end
18
+
19
+ path = '/leads/attributes/{id}'
20
+ .gsub('{id}', id)
21
+
22
+ params = {}
23
+
24
+ return @client.call('delete', path, {
25
+ 'content-type' => 'application/json',
26
+ }, params);
27
+ end
28
+
29
+ def create_lead_attribute()
30
+ path = '/leads/attributes/{id}'
31
+
32
+ params = {}
33
+
34
+ return @client.call('post', path, {
35
+ 'content-type' => 'application/json',
36
+ }, params);
37
+ end
38
+
39
+ def update_lead_attribute(id:)
40
+ if id.nil?
41
+ raise Tomba::Exception.new('Missing required parameter: "id"')
42
+ end
43
+
44
+ path = '/leads/attributes/{id}'
45
+ .gsub('{id}', id)
46
+
47
+ params = {}
48
+
49
+ return @client.call('put', path, {
50
+ 'content-type' => 'application/json',
51
+ }, params);
52
+ end
53
+
54
+
55
+ protected
56
+
57
+ private
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ module Tomba
2
+ class LeadsLists < Service
3
+
4
+ def get_lists()
5
+ path = '/leads_lists/{id}'
6
+
7
+ params = {}
8
+
9
+ return @client.call('get', path, {
10
+ 'content-type' => 'application/json',
11
+ }, params);
12
+ end
13
+
14
+ def delete_list_id(id:)
15
+ if id.nil?
16
+ raise Tomba::Exception.new('Missing required parameter: "id"')
17
+ end
18
+
19
+ path = '/leads_lists/{id}'
20
+ .gsub('{id}', id)
21
+
22
+ params = {}
23
+
24
+ return @client.call('delete', path, {
25
+ 'content-type' => 'application/json',
26
+ }, params);
27
+ end
28
+
29
+ def create_list()
30
+ path = '/leads_lists/{id}'
31
+
32
+ params = {}
33
+
34
+ return @client.call('post', path, {
35
+ 'content-type' => 'application/json',
36
+ }, params);
37
+ end
38
+
39
+ def update_list_id(id:)
40
+ if id.nil?
41
+ raise Tomba::Exception.new('Missing required parameter: "id"')
42
+ end
43
+
44
+ path = '/leads_lists/{id}'
45
+ .gsub('{id}', id)
46
+
47
+ params = {}
48
+
49
+ return @client.call('put', path, {
50
+ 'content-type' => 'application/json',
51
+ }, params);
52
+ end
53
+
54
+
55
+ protected
56
+
57
+ private
58
+ end
59
+ end
@@ -0,0 +1,19 @@
1
+ module Tomba
2
+ class Logs < Service
3
+
4
+ def get_logs()
5
+ path = '/logs'
6
+
7
+ params = {}
8
+
9
+ return @client.call('get', path, {
10
+ 'content-type' => 'application/json',
11
+ }, params);
12
+ end
13
+
14
+
15
+ protected
16
+
17
+ private
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ module Tomba
2
+ class Sources < Service
3
+
4
+ def email_sources(email:)
5
+ if email.nil?
6
+ raise Tomba::Exception.new('Missing required parameter: "email"')
7
+ end
8
+
9
+ path = '/email-sources/{email}'
10
+ .gsub('{email}', email)
11
+
12
+ params = {}
13
+
14
+ return @client.call('get', path, {
15
+ 'content-type' => 'application/json',
16
+ }, params);
17
+ end
18
+
19
+
20
+ protected
21
+
22
+ private
23
+ end
24
+ end
@@ -0,0 +1,45 @@
1
+ module Tomba
2
+ class Status < Service
3
+
4
+ def domain_status(domain:)
5
+ if domain.nil?
6
+ raise Tomba::Exception.new('Missing required parameter: "domain"')
7
+ end
8
+
9
+ path = '/domain-status'
10
+
11
+ params = {}
12
+
13
+ if !domain.nil?
14
+ params[:domain] = domain
15
+ end
16
+
17
+ return @client.call('get', path, {
18
+ 'content-type' => 'application/json',
19
+ }, params);
20
+ end
21
+
22
+ def auto_complete(query:)
23
+ if query.nil?
24
+ raise Tomba::Exception.new('Missing required parameter: "query"')
25
+ end
26
+
27
+ path = '/domains-suggestion'
28
+
29
+ params = {}
30
+
31
+ if !query.nil?
32
+ params[:query] = query
33
+ end
34
+
35
+ return @client.call('get', path, {
36
+ 'content-type' => 'application/json',
37
+ }, params);
38
+ end
39
+
40
+
41
+ protected
42
+
43
+ private
44
+ end
45
+ end
@@ -0,0 +1,19 @@
1
+ module Tomba
2
+ class Usage < Service
3
+
4
+ def get_usage()
5
+ path = '/usage'
6
+
7
+ params = {}
8
+
9
+ return @client.call('get', path, {
10
+ 'content-type' => 'application/json',
11
+ }, params);
12
+ end
13
+
14
+
15
+ protected
16
+
17
+ private
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ module Tomba
2
+ class Verifier < Service
3
+
4
+ def email_verifier(email:)
5
+ if email.nil?
6
+ raise Tomba::Exception.new('Missing required parameter: "email"')
7
+ end
8
+
9
+ path = '/email-verifier/{email}'
10
+ .gsub('{email}', email)
11
+
12
+ params = {}
13
+
14
+ return @client.call('get', path, {
15
+ 'content-type' => 'application/json',
16
+ }, params);
17
+ end
18
+
19
+
20
+ protected
21
+
22
+ private
23
+ end
24
+ end
@@ -0,0 +1,4 @@
1
+
2
+ module Tomba
3
+ VERSION = '1.0.0'
4
+ end
data/lib/tomba.rb ADDED
@@ -0,0 +1,18 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'json'
4
+ require_relative 'tomba/client'
5
+ require_relative 'tomba/service'
6
+ require_relative 'tomba/exception'
7
+ require_relative 'tomba/services/account'
8
+ require_relative 'tomba/services/domain'
9
+ require_relative 'tomba/services/finder'
10
+ require_relative 'tomba/services/verifier'
11
+ require_relative 'tomba/services/sources'
12
+ require_relative 'tomba/services/status'
13
+ require_relative 'tomba/services/count'
14
+ require_relative 'tomba/services/usage'
15
+ require_relative 'tomba/services/logs'
16
+ require_relative 'tomba/services/keys'
17
+ require_relative 'tomba/services/leads-lists'
18
+ require_relative 'tomba/services/leads-attributes'
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tomba
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Mohamed Ben rebia
8
+ - Tomba technology web service LLC
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2021-10-19 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: official Ruby library for Tomba
15
+ email:
16
+ - b.mohamed@tomba.io
17
+ - info@tomba.io
18
+ executables: []
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - lib/tomba.rb
23
+ - lib/tomba/client.rb
24
+ - lib/tomba/exception.rb
25
+ - lib/tomba/service.rb
26
+ - lib/tomba/services/account.rb
27
+ - lib/tomba/services/count.rb
28
+ - lib/tomba/services/domain.rb
29
+ - lib/tomba/services/finder.rb
30
+ - lib/tomba/services/keys.rb
31
+ - lib/tomba/services/leads-attributes.rb
32
+ - lib/tomba/services/leads-lists.rb
33
+ - lib/tomba/services/logs.rb
34
+ - lib/tomba/services/sources.rb
35
+ - lib/tomba/services/status.rb
36
+ - lib/tomba/services/usage.rb
37
+ - lib/tomba/services/verifier.rb
38
+ - lib/tomba/version.rb
39
+ homepage: https://tomba.io
40
+ licenses:
41
+ - Apache-2.0
42
+ metadata: {}
43
+ post_install_message:
44
+ rdoc_options: []
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: 2.5.0
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ requirements: []
58
+ rubygems_version: 3.0.6
59
+ signing_key:
60
+ specification_version: 4
61
+ summary: Tomba.io is an Email Finder for B2B sales and email marketing
62
+ test_files: []