forked from NdoleStudio/httpsms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrequest.go
More file actions
112 lines (93 loc) · 2.18 KB
/
Copy pathrequest.go
File metadata and controls
112 lines (93 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package requests
import (
"net/url"
"strconv"
"strings"
"unicode"
"github.com/nyaruka/phonenumbers"
)
type request struct{}
// getLimit gets the take as a string
func (input *request) sanitizeAddress(value string) string {
value = strings.TrimRight(value, " ")
if len(value) > 0 && value[0] == ' ' {
value = strings.Replace(value, " ", "+", 1)
}
if !strings.HasPrefix(value, "+") && input.isDigits(value) && len(value) > 9 {
value = "+" + value
}
if number, err := phonenumbers.Parse(value, phonenumbers.UNKNOWN_REGION); err == nil {
value = phonenumbers.Format(number, phonenumbers.E164)
}
return value
}
// sanitizeBool sanitizes a boolean string
func (input *request) sanitizeBool(value string) string {
value = strings.TrimSpace(value)
if value == "1" || strings.ToLower(value) == "true" {
value = "true"
}
if value == "0" || strings.ToLower(value) == "false" {
value = "false"
}
return value
}
func (input *request) sanitizeURL(value string) string {
value = strings.TrimSpace(value)
website, err := url.Parse(value)
if err != nil {
return value
}
if website.Scheme == "" {
return "https://" + value
}
return value
}
func (input *request) sanitizeStringPointer(value string) *string {
value = strings.TrimSpace(value)
if value == "" {
return nil
}
return &value
}
func (input *request) removeStringDuplicates(values []string) []string {
cache := map[string]struct{}{}
for _, value := range values {
cache[value] = struct{}{}
}
var result []string
for key := range cache {
result = append(result, key)
}
return result
}
func (input *request) sanitizeMessageID(value string) string {
id := strings.Builder{}
for _, char := range value {
if char == '.' {
return id.String()
}
id.WriteRune(char)
}
return id.String()
}
// getLimit gets the take as a string
func (input *request) getBool(value string) bool {
if value == "true" {
return true
}
return false
}
// getLimit gets the take as a string
func (input *request) getInt(value string) int {
val, _ := strconv.Atoi(value)
return val
}
func (input *request) isDigits(value string) bool {
for _, c := range value {
if !unicode.IsDigit(c) {
return false
}
}
return true
}