auth/internal/util/path/shift.go

23 lines
505 B
Go

package path
import (
"path"
"strings"
)
// Shift splits off the first component of p, which will be cleaned of relative
// components before processing. head will never contain a slash and tail will
// always be a rooted path without trailing slash.
//
// See: https://blog.merovius.de/posts/2017-06-18-how-not-to-use-an-http-router/
func Shift(p string) (head, tail string) {
p = path.Clean("/" + p)
i := strings.Index(p[1:], "/") + 1
if i <= 0 {
return p[1:], "/"
}
return p[1:i], p[i:]
}