diff options
Diffstat (limited to 'url_misc.go')
-rw-r--r-- | url_misc.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/url_misc.go b/url_misc.go index cbb30d6..e4bfd92 100644 --- a/url_misc.go +++ b/url_misc.go @@ -4,6 +4,9 @@ import ( "errors" "net/http" "net/url" + "strings" + + "go.lindenii.runxiyu.org/lindenii-common/misc" ) var ( @@ -40,3 +43,20 @@ func get_param_ref_and_type(r *http.Request) (ref_type, ref string, err error) { } return } + +func parse_request_uri(request_uri string) (segments []string, params url.Values, err error) { + path, params_string, _ := strings.Cut(request_uri, "?") + + segments = strings.Split(strings.TrimPrefix(path, "/"), "/") + + for i, segment := range segments { + segments[i], _ = url.QueryUnescape(segment) + } + + params, err = url.ParseQuery(params_string) + if err != nil { + return nil, nil, misc.Wrap_one_error(err_bad_request, err) + } + + return +} |