diff options
author | Runxi Yu <me@runxiyu.org> | 2025-02-12 11:01:52 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-02-12 11:01:52 +0800 |
commit | 88d054811df785b92b1b76dd91265849af8f29b3 (patch) | |
tree | 522a9175290322cbe615ba98acf07a8a81888fcc /url_misc.go | |
parent | git_format_patch.go: Remove garbage printf (diff) | |
download | forge-88d054811df785b92b1b76dd91265849af8f29b3.tar.gz forge-88d054811df785b92b1b76dd91265849af8f29b3.tar.zst forge-88d054811df785b92b1b76dd91265849af8f29b3.zip |
*: Migrate to the new path scheme
Diffstat (limited to '')
-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 +} |