package core import ( "fmt" "net/url" "strings" ) // ReencodeURL re-encodes URLs for RFC3986 compliance; as CurseForge URLs aren't properly encoded func ReencodeURL(u string) (string, error) { // Go's URL library isn't entirely RFC3986 compliant :( // Manually replace [ and ] with %5B and %5D u = strings.ReplaceAll(u, "[", "%5B") u = strings.ReplaceAll(u, "]", "%5D") parsed, err := url.Parse(u) if err != nil { return "", fmt.Errorf("failed to parse url: %s, %v", u, err) } return parsed.String(), nil }