Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sundowndev
GitHub Repository: sundowndev/phoneinfoga
Path: blob/master/web/controllers.go
988 views
1
package web
2
3
import (
4
"github.com/gin-gonic/gin"
5
"github.com/sundowndev/phoneinfoga/v2/build"
6
"github.com/sundowndev/phoneinfoga/v2/lib/number"
7
"github.com/sundowndev/phoneinfoga/v2/lib/remote"
8
"github.com/sundowndev/phoneinfoga/v2/lib/remote/suppliers"
9
"github.com/sundowndev/phoneinfoga/v2/web/errors"
10
"net/http"
11
)
12
13
type ScanResultResponse struct {
14
JSONResponse
15
Result interface{} `json:"result"`
16
}
17
18
type getAllNumbersResponse struct {
19
JSONResponse
20
Numbers []number.Number `json:"numbers"`
21
}
22
23
type healthResponse struct {
24
Success bool `json:"success"`
25
Version string `json:"version"`
26
Commit string `json:"commit"`
27
Demo bool `json:"demo"`
28
}
29
30
// @ID getAllNumbers
31
// @Tags Numbers
32
// @Summary Fetch all previously scanned numbers.
33
// @Description This route is actually not used yet.
34
// @Deprecated
35
// @Produce json
36
// @Success 200 {object} getAllNumbersResponse
37
// @Router /numbers [get]
38
func getAllNumbers(c *gin.Context) {
39
c.JSON(http.StatusOK, getAllNumbersResponse{
40
JSONResponse: JSONResponse{Success: true},
41
Numbers: []number.Number{},
42
})
43
}
44
45
// @ID validate
46
// @Tags Numbers
47
// @Summary Check if a number is valid and possible.
48
// @Produce json
49
// @Deprecated
50
// @Success 200 {object} JSONResponse
51
// @Success 400 {object} JSONResponse
52
// @Router /numbers/{number}/validate [get]
53
// @Param number path string true "Input phone number" validate(required)
54
func validate(c *gin.Context) {
55
_, err := number.NewNumber(c.Param("number"))
56
if err != nil {
57
handleError(c, errors.NewBadRequest(err))
58
return
59
}
60
c.JSON(http.StatusOK, successResponse("The number is valid"))
61
}
62
63
// @ID localScan
64
// @Tags Numbers
65
// @Summary Perform a scan using local phone number library.
66
// @Produce json
67
// @Deprecated
68
// @Success 200 {object} ScanResultResponse{result=number.Number}
69
// @Success 400 {object} JSONResponse
70
// @Router /numbers/{number}/scan/local [get]
71
// @Param number path string true "Input phone number" validate(required)
72
func localScan(c *gin.Context) {
73
num, err := number.NewNumber(c.Param("number"))
74
if err != nil {
75
handleError(c, errors.NewBadRequest(err))
76
return
77
}
78
79
result, err := remote.NewLocalScanner().Run(*num, make(remote.ScannerOptions))
80
if err != nil {
81
handleError(c, errors.NewInternalError(err))
82
return
83
}
84
85
c.JSON(http.StatusOK, ScanResultResponse{
86
JSONResponse: JSONResponse{Success: true},
87
Result: result,
88
})
89
}
90
91
// @ID numverifyScan
92
// @Tags Numbers
93
// @Summary Perform a scan using Numverify's API.
94
// @Deprecated
95
// @Produce json
96
// @Success 200 {object} ScanResultResponse{result=remote.NumverifyScannerResponse}
97
// @Success 400 {object} JSONResponse
98
// @Router /numbers/{number}/scan/numverify [get]
99
// @Param number path string true "Input phone number" validate(required)
100
func numverifyScan(c *gin.Context) {
101
num, err := number.NewNumber(c.Param("number"))
102
if err != nil {
103
handleError(c, errors.NewBadRequest(err))
104
return
105
}
106
107
result, err := remote.NewNumverifyScanner(suppliers.NewNumverifySupplier()).Run(*num, make(remote.ScannerOptions))
108
if err != nil {
109
handleError(c, errors.NewInternalError(err))
110
return
111
}
112
113
c.JSON(http.StatusOK, ScanResultResponse{
114
JSONResponse: JSONResponse{Success: true},
115
Result: result,
116
})
117
}
118
119
// @ID googleSearchScan
120
// @Tags Numbers
121
// @Summary Perform a scan using Google Search engine.
122
// @Deprecated
123
// @Produce json
124
// @Success 200 {object} ScanResultResponse{result=remote.GoogleSearchResponse}
125
// @Success 400 {object} JSONResponse
126
// @Router /numbers/{number}/scan/googlesearch [get]
127
// @Param number path string true "Input phone number" validate(required)
128
func googleSearchScan(c *gin.Context) {
129
num, err := number.NewNumber(c.Param("number"))
130
if err != nil {
131
handleError(c, errors.NewBadRequest(err))
132
return
133
}
134
135
result, err := remote.NewGoogleSearchScanner().Run(*num, make(remote.ScannerOptions))
136
if err != nil {
137
handleError(c, errors.NewInternalError(err))
138
return
139
}
140
141
c.JSON(http.StatusOK, ScanResultResponse{
142
JSONResponse: JSONResponse{Success: true},
143
Result: result,
144
})
145
}
146
147
// @ID ovhScan
148
// @Tags Numbers
149
// @Summary Perform a scan using OVH's API.
150
// @Deprecated
151
// @Produce json
152
// @Success 200 {object} ScanResultResponse{result=remote.OVHScannerResponse}
153
// @Success 400 {object} JSONResponse
154
// @Router /numbers/{number}/scan/ovh [get]
155
// @Param number path string true "Input phone number" validate(required)
156
func ovhScan(c *gin.Context) {
157
num, err := number.NewNumber(c.Param("number"))
158
if err != nil {
159
handleError(c, errors.NewBadRequest(err))
160
return
161
}
162
163
result, err := remote.NewOVHScanner(suppliers.NewOVHSupplier()).Run(*num, make(remote.ScannerOptions))
164
if err != nil {
165
handleError(c, errors.NewInternalError(err))
166
return
167
}
168
169
c.JSON(http.StatusOK, ScanResultResponse{
170
JSONResponse: JSONResponse{Success: true},
171
Result: result,
172
})
173
}
174
175
// @ID healthCheck
176
// @Tags General
177
// @Summary Check if service is healthy.
178
// @Produce json
179
// @Success 200 {object} healthResponse
180
// @Success 500 {object} JSONResponse
181
// @Router / [get]
182
func healthHandler(c *gin.Context) {
183
c.JSON(http.StatusOK, healthResponse{
184
Success: true,
185
Version: build.Version,
186
Commit: build.Commit,
187
Demo: build.IsDemo(),
188
})
189
}
190
191