Skip to content

Commit e68f117

Browse files
committed
readded tryParseInt()
1 parent a81c035 commit e68f117

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

internals/proxy/proxy.go

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ const (
2828

2929
func parseRawQuery(raw string) map[string][]string {
3030
result := make(map[string][]string)
31-
pairs := strings.Split(raw, "&")
31+
pairs := strings.SplitSeq(raw, "&")
3232

33-
for _, pair := range pairs {
33+
for pair := range pairs {
3434
if pair == "" {
3535
continue
3636
}
@@ -50,12 +50,30 @@ func parseRawQuery(raw string) map[string][]string {
5050
return result
5151
}
5252

53+
func tryParseInt(str string) (int, bool) {
54+
isInt, err := regexp.MatchString(`^\d+$`, str)
55+
56+
if err != nil {
57+
log.Error("Encountered Error while Parsing Int", err.Error())
58+
}
59+
60+
if isInt && err == nil {
61+
intValue, err := strconv.Atoi(str)
62+
63+
if err == nil {
64+
return intValue, true
65+
}
66+
}
67+
68+
return 0, false
69+
}
70+
5371
func parseTypedQuery(values []string) interface{} {
5472
var result interface{}
5573

5674
raw := values[0]
5775

58-
intValue, err := strconv.Atoi(raw)
76+
intValue, isInt := tryParseInt(raw)
5977

6078
if strings.Contains(raw, ",") || (strings.Contains(raw, "[") && strings.Contains(raw, "]")) {
6179
if strings.Contains(raw, "[") && strings.Contains(raw, "]") {
@@ -69,16 +87,16 @@ func parseTypedQuery(values []string) interface{} {
6987
var list []interface{}
7088

7189
for _, part := range parts {
72-
intVal, err := strconv.Atoi(part)
90+
_intValue, _isInt := tryParseInt(part)
7391

74-
if err == nil {
75-
list = append(list, intVal)
92+
if _isInt {
93+
list = append(list, _intValue)
7694
} else {
7795
list = append(list, part)
7896
}
7997
}
8098
result = list
81-
} else if err == nil {
99+
} else if isInt {
82100
result = intValue
83101
} else {
84102
result = raw

0 commit comments

Comments
 (0)