1
1
package start
2
2
3
3
import (
4
- "strings"
5
-
6
4
"github.com/gofiber/fiber/v2"
7
5
"github.com/gofiber/fiber/v2/log"
6
+ "github.com/tomba-io/go/tomba"
7
+ "github.com/tomba-io/tomba/pkg/slack"
8
8
_domain "github.com/tomba-io/tomba/pkg/validation/domain"
9
9
_email "github.com/tomba-io/tomba/pkg/validation/email"
10
10
_url "github.com/tomba-io/tomba/pkg/validation/url"
11
11
)
12
12
13
+ // Request structure
14
+ type Request struct {
15
+ URL string `json:"url" form:"url"`
16
+ Domain string `json:"domain" form:"domain"`
17
+ Email string `json:"email" form:"email"`
18
+ Slack bool `json:"slack" form:"slack"`
19
+ }
20
+
21
+ func request (c * fiber.Ctx ) Request {
22
+ req := Request {}
23
+ c .BodyParser (& req )
24
+ return req
25
+ }
26
+
13
27
// Home redirect to tomba home page
14
28
func (d * Conn ) Home (c * fiber.Ctx ) error {
15
29
return c .Redirect ("http://tomba.io?ref=tomba_cli" , 301 )
16
30
}
17
31
18
32
// Author query author finder
19
33
func (init * Conn ) Author (c * fiber.Ctx ) error {
20
- url := strings . ToLower ( c . Query ( "url" ) )
21
- if ! _url .IsValidURL (url ) {
34
+ req := request ( c )
35
+ if ! _url .IsValidURL (req . URL ) {
22
36
log .Error (ErrArgumentsURL .Error ())
23
37
return c .Status (400 ).JSON (fiber.Map {"status" : "error" , "message" : ErrArgumentsURL .Error ()})
24
38
}
25
- result , err := init .Tomba .AuthorFinder (url )
39
+ result , err := init .Tomba .AuthorFinder (req . URL )
26
40
if err != nil {
27
41
log .Error (ErrErrInvalidLogin .Error ())
28
42
return c .Status (401 ).JSON (fiber.Map {"status" : "error" , "message" : ErrErrInvalidLogin .Error ()})
29
43
}
30
44
if result .Data .Email == "" {
31
45
return c .Status (404 ).JSON (fiber.Map {"status" : "error" , "message" : "Why doesn't the author finder return any result? https://help.tomba.io/en/questions/reasons-why-author-finder-don-t-find-any-result" })
32
46
}
33
-
47
+ if req .Slack {
48
+ return c .Status (200 ).JSON (slack .FinderResponse (result ))
49
+ }
34
50
return c .Status (200 ).JSON (result )
35
-
36
51
}
37
52
38
53
// Count query email counter
39
54
func (init * Conn ) Count (c * fiber.Ctx ) error {
40
- domain := strings . ToLower ( c . Query ( "domain" ) )
41
- if ! _domain .IsValidDomain (domain ) {
55
+ req := request ( c )
56
+ if ! _domain .IsValidDomain (req . Domain ) {
42
57
log .Error (ErrArgumentsDomain .Error ())
43
58
return c .Status (400 ).JSON (fiber.Map {"status" : "error" , "message" : ErrArgumentsDomain .Error ()})
44
59
}
45
- result , err := init .Tomba .Count (domain )
60
+ result , err := init .Tomba .Count (req . Domain )
46
61
if err != nil {
47
62
log .Error (ErrErrInvalidLogin .Error ())
48
63
return c .Status (401 ).JSON (fiber.Map {"status" : "error" , "message" : ErrErrInvalidLogin .Error ()})
@@ -55,39 +70,43 @@ func (init *Conn) Count(c *fiber.Ctx) error {
55
70
56
71
// Enrich query enrichment
57
72
func (init * Conn ) Enrich (c * fiber.Ctx ) error {
58
- email := strings .ToLower (c .Query ("email" ))
59
-
60
- if ! _email .IsValidEmail (email ) {
73
+ req := request (c )
74
+ if ! _email .IsValidEmail (req .Email ) {
61
75
log .Error (ErrArgumentEmail .Error ())
62
76
return c .Status (400 ).JSON (fiber.Map {"status" : "error" , "message" : ErrArgumentEmail .Error ()})
63
77
}
64
- result , err := init .Tomba .Enrichment (email )
78
+ result , err := init .Tomba .Enrichment (req . Email )
65
79
if err != nil {
66
80
log .Error (ErrErrInvalidLogin .Error ())
67
81
return c .Status (401 ).JSON (fiber.Map {"status" : "error" , "message" : ErrErrInvalidLogin .Error ()})
68
82
}
69
83
if result .Data .Email == "" {
70
84
return c .Status (404 ).JSON (fiber.Map {"status" : "error" , "message" : "Why doesn't the enrichment return any result? https://help.tomba.io/en/questions/reasons-why-enrichment-don-t-find-any-emails" })
71
85
}
86
+ if req .Slack {
87
+ return c .Status (200 ).JSON (slack .FinderResponse (result ))
88
+ }
72
89
return c .Status (200 ).JSON (result )
73
90
}
74
91
75
92
// Linkedin query linkedin finder
76
93
func (init * Conn ) Linkedin (c * fiber.Ctx ) error {
77
- url := strings .ToLower (c .Query ("url" ))
78
-
79
- if ! _url .IsValidURL (url ) {
94
+ req := request (c )
95
+ if ! _url .IsValidURL (req .URL ) {
80
96
log .Error (ErrArgumentsURL .Error ())
81
97
return c .Status (400 ).JSON (fiber.Map {"status" : "error" , "message" : ErrArgumentsURL .Error ()})
82
98
}
83
- result , err := init .Tomba .LinkedinFinder (url )
99
+ result , err := init .Tomba .LinkedinFinder (req . URL )
84
100
if err != nil {
85
101
log .Error (ErrErrInvalidLogin .Error ())
86
102
return c .Status (401 ).JSON (fiber.Map {"status" : "error" , "message" : ErrErrInvalidLogin .Error ()})
87
103
}
88
104
if result .Data .Email == "" {
89
105
return c .Status (404 ).JSON (fiber.Map {"status" : "error" , "message" : "Why doesn't the Linkedin return any result? https://help.tomba.io/en/questions/reasons-why-linkedin-don-t-find-any-emails" })
90
106
}
107
+ if req .Slack {
108
+ return c .Status (200 ).JSON (slack .FinderResponse (result ))
109
+ }
91
110
return c .Status (200 ).JSON (result )
92
111
}
93
112
@@ -103,33 +122,33 @@ func (init *Conn) Logs(c *fiber.Ctx) error {
103
122
104
123
// Search query domain search
105
124
func (init * Conn ) Search (c * fiber.Ctx ) error {
106
- domain := strings .ToLower (c .Query ("domain" ))
107
-
108
- if ! _domain .IsValidDomain (domain ) {
125
+ req := request (c )
126
+ if ! _domain .IsValidDomain (req .Domain ) {
109
127
log .Error (ErrArgumentsDomain .Error ())
110
128
return c .Status (400 ).JSON (fiber.Map {"status" : "error" , "message" : ErrArgumentsDomain .Error ()})
111
129
}
112
- result , err := init .Tomba .DomainSearch (domain , "10" , "0" )
130
+ result , err := init .Tomba .DomainSearch (tomba. Params { " domain" : req . Domain } )
113
131
if err != nil {
114
132
log .Error (ErrErrInvalidLogin .Error ())
115
133
return c .Status (401 ).JSON (fiber.Map {"status" : "error" , "message" : ErrErrInvalidLogin .Error ()})
116
134
}
117
135
if result .Meta .Total == 0 {
118
136
return c .Status (404 ).JSON (fiber.Map {"status" : "error" , "message" : "TombaPublicWebCrawler is searching the internet for the best leads that relate to this company, but we don't have any for it yet. That said, we're working on it" })
119
137
}
138
+ if req .Slack {
139
+ return c .Status (200 ).JSON (slack .SearchResponse (result ))
140
+ }
120
141
return c .Status (200 ).JSON (result )
121
-
122
142
}
123
143
124
144
// Status query Domain status
125
145
func (init * Conn ) Status (c * fiber.Ctx ) error {
126
- domain := strings .ToLower (c .Query ("domain" ))
127
-
128
- if ! _domain .IsValidDomain (domain ) {
146
+ req := request (c )
147
+ if ! _domain .IsValidDomain (req .Domain ) {
129
148
log .Error (ErrArgumentsDomain .Error ())
130
149
return c .Status (400 ).JSON (fiber.Map {"status" : "error" , "message" : ErrArgumentsDomain .Error ()})
131
150
}
132
- result , err := init .Tomba .Status (domain )
151
+ result , err := init .Tomba .Status (req . Domain )
133
152
if err != nil {
134
153
log .Error (ErrErrInvalidLogin .Error ())
135
154
return c .Status (401 ).JSON (fiber.Map {"status" : "error" , "message" : ErrErrInvalidLogin .Error ()})
@@ -149,14 +168,12 @@ func (init *Conn) Usage(c *fiber.Ctx) error {
149
168
150
169
// Verify query email verifier
151
170
func (init * Conn ) Verify (c * fiber.Ctx ) error {
152
- email := strings .ToLower (c .Query ("email" ))
153
-
154
- if ! _email .IsValidEmail (email ) {
171
+ req := request (c )
172
+ if ! _email .IsValidEmail (req .Email ) {
155
173
log .Error (ErrArgumentEmail .Error ())
156
174
return c .Status (400 ).JSON (fiber.Map {"status" : "error" , "message" : ErrArgumentEmail .Error ()})
157
175
}
158
-
159
- result , err := init .Tomba .EmailVerifier (email )
176
+ result , err := init .Tomba .EmailVerifier (req .Email )
160
177
if err != nil {
161
178
log .Error (ErrErrInvalidLogin .Error ())
162
179
return c .Status (401 ).JSON (fiber.Map {"status" : "error" , "message" : ErrErrInvalidLogin .Error ()})
@@ -168,6 +185,9 @@ func (init *Conn) Verify(c *fiber.Ctx) error {
168
185
if result .Data .Email .Webmail {
169
186
return c .Status (404 ).JSON (fiber.Map {"status" : "error" , "message" : "The domain name is webmail provider." })
170
187
}
188
+ if req .Slack {
189
+ return c .Status (200 ).JSON (slack .VerifyResponse (result ))
190
+ }
171
191
return c .Status (200 ).JSON (result )
172
192
}
173
193
return c .Status (222 ).JSON (fiber.Map {"status" : "error" , "message" : "The Email Verification failed because of an unexpected response from the remote SMTP server. This failure is outside of our control. We advise you to retry later." })
0 commit comments