diff options
author | 2023-07-07 11:34:12 +0200 | |
---|---|---|
committer | 2023-07-07 11:34:12 +0200 | |
commit | e70bf8a6c82e3d5c943550b364fc6f8120f6f07e (patch) | |
tree | f408ccff2e6f2451bf95ee9a5d96e5b678d686d5 /internal/api/util/parsequery.go | |
parent | [chore/performance] Remove remaining 'whereEmptyOrNull' funcs (#1946) (diff) | |
download | gotosocial-e70bf8a6c82e3d5c943550b364fc6f8120f6f07e.tar.xz |
[chore/bugfix] Domain block tidying up, Implement first pass of `207 Multi-Status` (#1886)
* [chore/refactor] update domain block processing
* expose domain block import errors a lil better
* move/remove unused query keys
Diffstat (limited to 'internal/api/util/parsequery.go')
-rw-r--r-- | internal/api/util/parsequery.go | 132 |
1 files changed, 58 insertions, 74 deletions
diff --git a/internal/api/util/parsequery.go b/internal/api/util/parsequery.go index 460ca3e05..f5966bca1 100644 --- a/internal/api/util/parsequery.go +++ b/internal/api/util/parsequery.go @@ -27,6 +27,7 @@ import ( const ( /* Common keys */ + IDKey = "id" LimitKey = "limit" LocalKey = "local" MaxIDKey = "max_id" @@ -41,6 +42,11 @@ const ( SearchQueryKey = "q" SearchResolveKey = "resolve" SearchTypeKey = "type" + + /* Domain block keys */ + + DomainBlockExportKey = "export" + DomainBlockImportKey = "import" ) // parseError returns gtserror.WithCode set to 400 Bad Request, to indicate @@ -50,6 +56,8 @@ func parseError(key string, value, defaultValue any, err error) gtserror.WithCod return gtserror.NewErrorBadRequest(err, err.Error()) } +// requiredError returns gtserror.WithCode set to 400 Bad Request, to indicate +// to the caller a required key value was not provided, or was empty. func requiredError(key string) gtserror.WithCode { err := fmt.Errorf("required key %s was not set or had empty value", key) return gtserror.NewErrorBadRequest(err, err.Error()) @@ -60,59 +68,76 @@ func requiredError(key string) gtserror.WithCode { */ func ParseLimit(value string, defaultValue int, max, min int) (int, gtserror.WithCode) { - key := LimitKey + return parseInt(value, defaultValue, max, min, LimitKey) +} - if value == "" { - return defaultValue, nil - } +func ParseLocal(value string, defaultValue bool) (bool, gtserror.WithCode) { + return parseBool(value, defaultValue, LocalKey) +} - i, err := strconv.Atoi(value) - if err != nil { - return defaultValue, parseError(key, value, defaultValue, err) - } +func ParseSearchExcludeUnreviewed(value string, defaultValue bool) (bool, gtserror.WithCode) { + return parseBool(value, defaultValue, SearchExcludeUnreviewedKey) +} - if i > max { - i = max - } else if i < min { - i = min - } +func ParseSearchFollowing(value string, defaultValue bool) (bool, gtserror.WithCode) { + return parseBool(value, defaultValue, SearchFollowingKey) +} - return i, nil +func ParseSearchOffset(value string, defaultValue int, max, min int) (int, gtserror.WithCode) { + return parseInt(value, defaultValue, max, min, SearchOffsetKey) } -func ParseLocal(value string, defaultValue bool) (bool, gtserror.WithCode) { - key := LimitKey +func ParseSearchResolve(value string, defaultValue bool) (bool, gtserror.WithCode) { + return parseBool(value, defaultValue, SearchResolveKey) +} - if value == "" { - return defaultValue, nil - } +func ParseDomainBlockExport(value string, defaultValue bool) (bool, gtserror.WithCode) { + return parseBool(value, defaultValue, DomainBlockExportKey) +} - i, err := strconv.ParseBool(value) - if err != nil { - return defaultValue, parseError(key, value, defaultValue, err) +func ParseDomainBlockImport(value string, defaultValue bool) (bool, gtserror.WithCode) { + return parseBool(value, defaultValue, DomainBlockImportKey) +} + +/* + Parse functions for *REQUIRED* parameters. +*/ + +func ParseID(value string) (string, gtserror.WithCode) { + key := IDKey + + if value == "" { + return "", requiredError(key) } - return i, nil + return value, nil } -func ParseSearchExcludeUnreviewed(value string, defaultValue bool) (bool, gtserror.WithCode) { - key := SearchExcludeUnreviewedKey +func ParseSearchLookup(value string) (string, gtserror.WithCode) { + key := SearchLookupKey if value == "" { - return defaultValue, nil + return "", requiredError(key) } - i, err := strconv.ParseBool(value) - if err != nil { - return defaultValue, parseError(key, value, defaultValue, err) + return value, nil +} + +func ParseSearchQuery(value string) (string, gtserror.WithCode) { + key := SearchQueryKey + + if value == "" { + return "", requiredError(key) } - return i, nil + return value, nil } -func ParseSearchFollowing(value string, defaultValue bool) (bool, gtserror.WithCode) { - key := SearchFollowingKey +/* + Internal functions +*/ +func parseBool(value string, defaultValue bool, key string) (bool, gtserror.WithCode) { if value == "" { return defaultValue, nil } @@ -125,9 +150,7 @@ func ParseSearchFollowing(value string, defaultValue bool) (bool, gtserror.WithC return i, nil } -func ParseSearchOffset(value string, defaultValue int, max, min int) (int, gtserror.WithCode) { - key := SearchOffsetKey - +func parseInt(value string, defaultValue int, max int, min int, key string) (int, gtserror.WithCode) { if value == "" { return defaultValue, nil } @@ -145,42 +168,3 @@ func ParseSearchOffset(value string, defaultValue int, max, min int) (int, gtser return i, nil } - -func ParseSearchResolve(value string, defaultValue bool) (bool, gtserror.WithCode) { - key := SearchResolveKey - - if value == "" { - return defaultValue, nil - } - - i, err := strconv.ParseBool(value) - if err != nil { - return defaultValue, parseError(key, value, defaultValue, err) - } - - return i, nil -} - -/* - Parse functions for *REQUIRED* parameters. -*/ - -func ParseSearchLookup(value string) (string, gtserror.WithCode) { - key := SearchLookupKey - - if value == "" { - return "", requiredError(key) - } - - return value, nil -} - -func ParseSearchQuery(value string) (string, gtserror.WithCode) { - key := SearchQueryKey - - if value == "" { - return "", requiredError(key) - } - - return value, nil -} |