| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package http
- import "strings"
- // JoinPath returns an absolute URL path composed of the two paths provided.
- // Enforces that the returned path begins with '/'. If added path is empty the
- // returned path suffix will match the first parameter suffix.
- func JoinPath(a, b string) string {
- if len(a) == 0 {
- a = "/"
- } else if a[0] != '/' {
- a = "/" + a
- }
- if len(b) != 0 && b[0] == '/' {
- b = b[1:]
- }
- if len(b) != 0 && len(a) > 1 && a[len(a)-1] != '/' {
- a = a + "/"
- }
- return a + b
- }
- // JoinRawQuery returns an absolute raw query expression. Any duplicate '&'
- // will be collapsed to single separator between values.
- func JoinRawQuery(a, b string) string {
- a = strings.TrimFunc(a, isAmpersand)
- b = strings.TrimFunc(b, isAmpersand)
- if len(a) == 0 {
- return b
- }
- if len(b) == 0 {
- return a
- }
- return a + "&" + b
- }
- func isAmpersand(v rune) bool {
- return v == '&'
- }
|