git: percent-decode relay and identifier segments in nostr://

copied from https://gitworkshop.dev/fiatjaf.com/nak/prs/nevent1qqswm2nmw68uqf9d66f3c4vspt0fna8g0vd24z5yyeq35a0p33kmpach2gch6/files
This commit is contained in:
fiatjaf
2026-07-23 09:25:02 -03:00
parent 5a82298d95
commit 160afb540c
+13 -3
View File
@@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
"net/url"
"os"
"os/exec"
"path/filepath"
@@ -3363,8 +3364,14 @@ func parseRepositoryAddress(
return nostr.PubKey{}, "", nil, fmt.Errorf("invalid owner in URL: %w", err)
}
relayHost := parts[3]
identifier = parts[4]
relayHost, err := url.PathUnescape(parts[3])
if err != nil {
return nostr.PubKey{}, "", nil, fmt.Errorf("invalid relay in URL: %w", err)
}
identifier, err = url.PathUnescape(parts[4])
if err != nil {
return nostr.PubKey{}, "", nil, fmt.Errorf("invalid identifier in URL: %w", err)
}
if strings.HasPrefix(relayHost, "wss:") || strings.HasPrefix(relayHost, "ws:") {
relayHints = []string{relayHost}
@@ -3380,7 +3387,10 @@ func parseRepositoryAddress(
return nostr.PubKey{}, "", nil, fmt.Errorf("invalid owner in URL: %w", err)
}
identifier = parts[3]
identifier, err = url.PathUnescape(parts[3])
if err != nil {
return nostr.PubKey{}, "", nil, fmt.Errorf("invalid identifier in URL: %w", err)
}
return owner, identifier, nil, nil
} else {
return nostr.PubKey{}, "", nil, fmt.Errorf(