aboutsummaryrefslogtreecommitdiff
path: root/url_misc.go
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-02-12 11:01:52 +0800
committerRunxi Yu <me@runxiyu.org>2025-02-12 11:01:52 +0800
commit88d054811df785b92b1b76dd91265849af8f29b3 (patch)
tree522a9175290322cbe615ba98acf07a8a81888fcc /url_misc.go
parentgit_format_patch.go: Remove garbage printf (diff)
downloadforge-88d054811df785b92b1b76dd91265849af8f29b3.tar.gz
forge-88d054811df785b92b1b76dd91265849af8f29b3.tar.zst
forge-88d054811df785b92b1b76dd91265849af8f29b3.zip
*: Migrate to the new path scheme
Diffstat (limited to 'url_misc.go')
-rw-r--r--url_misc.go20
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
+}