diff options
Diffstat (limited to 'internal/api/util')
-rw-r--r-- | internal/api/util/parsequery.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/internal/api/util/parsequery.go b/internal/api/util/parsequery.go index 662870910..a87c77aeb 100644 --- a/internal/api/util/parsequery.go +++ b/internal/api/util/parsequery.go @@ -20,11 +20,18 @@ package util import ( "fmt" "strconv" + "strings" "github.com/superseriousbusiness/gotosocial/internal/gtserror" ) const ( + /* API version keys */ + + APIVersionKey = "api_version" + APIv1 = "v1" + APIv2 = "v2" + /* Common keys */ IDKey = "id" @@ -44,6 +51,10 @@ const ( SearchResolveKey = "resolve" SearchTypeKey = "type" + /* Tag keys */ + + TagNameKey = "tag_name" + /* Web endpoint keys */ WebUsernameKey = "username" @@ -122,6 +133,26 @@ func ParseDomainBlockImport(value string, defaultValue bool) (bool, gtserror.Wit Parse functions for *REQUIRED* parameters. */ +func ParseAPIVersion(value string, availableVersion ...string) (string, gtserror.WithCode) { + key := APIVersionKey + + if value == "" { + return "", requiredError(key) + } + + for _, av := range availableVersion { + if value == av { + return value, nil + } + } + + err := fmt.Errorf( + "invalid API version, valid versions for this path are [%s]", + strings.Join(availableVersion, ", "), + ) + return "", gtserror.NewErrorBadRequest(err, err.Error()) +} + func ParseID(value string) (string, gtserror.WithCode) { key := IDKey @@ -152,6 +183,16 @@ func ParseSearchQuery(value string) (string, gtserror.WithCode) { return value, nil } +func ParseTagName(value string) (string, gtserror.WithCode) { + key := TagNameKey + + if value == "" { + return "", requiredError(key) + } + + return value, nil +} + func ParseWebUsername(value string) (string, gtserror.WithCode) { key := WebUsernameKey |