package router

import "strings"

func isBackendReservedPath(path string) bool {
	switch {
	case path == "/healthz" || path == "/readyz":
		return true
	case strings.HasPrefix(path, "/healthz/") || strings.HasPrefix(path, "/readyz/"):
		return true
	case strings.HasPrefix(path, "/api/") || path == "/api":
		return true
	case strings.HasPrefix(path, "/internal/") || path == "/internal":
		return true
	case strings.HasPrefix(path, "/debug/pprof"):
		return true
	case path == "/auth/connected" || strings.HasPrefix(path, "/auth/connected/"):
		return true
	case path == "/avatars" || strings.HasPrefix(path, "/avatars/"):
		return true
	case path == "/login/device" || strings.HasPrefix(path, "/login/device/"):
		return true
	case path == "/login/oauth" || strings.HasPrefix(path, "/login/oauth/"):
		return true
	case isUnqualifiedRepositoryProtocolPath(path):
		return true
	default:
		return false
	}
}

func isUnqualifiedRepositoryProtocolPath(path string) bool {
	parts := strings.Split(strings.Trim(path, "/"), "/")
	if len(parts) < 2 || parts[0] == "" || parts[1] == "" {
		return false
	}
	if strings.HasSuffix(parts[1], ".git") {
		return true
	}
	return len(parts) >= 3 && parts[2] == "raw"
}
