diff --git a/encode.go b/encode.go index c8090b2..5fb2071 100644 --- a/encode.go +++ b/encode.go @@ -3,7 +3,6 @@ package main import ( "encoding/hex" "fmt" - "net/url" "strings" "github.com/nbd-wtf/go-nostr/nip19" @@ -220,22 +219,3 @@ func validate32BytesHex(target string) error { return nil } - -func validateRelayURLs(wsurls []string) error { - for _, wsurl := range wsurls { - u, err := url.Parse(wsurl) - if err != nil { - return fmt.Errorf("invalid relay url '%s': %s", wsurl, err) - } - - if u.Scheme != "ws" && u.Scheme != "wss" { - return fmt.Errorf("relay url must use wss:// or ws:// schemes, got '%s'", wsurl) - } - - if u.Host == "" { - return fmt.Errorf("relay url '%s' is missing the hostname", wsurl) - } - } - - return nil -} diff --git a/fetch.go b/fetch.go index 6b6fd2f..d626f32 100644 --- a/fetch.go +++ b/fetch.go @@ -10,11 +10,19 @@ import ( ) var fetch = &cli.Command{ - Name: "fetch", - Usage: "fetches events related to the given nip19 code from the included relay hints", - Description: ``, - Flags: []cli.Flag{}, - ArgsUsage: "[nip19code]", + Name: "fetch", + Usage: "fetches events related to the given nip19 code from the included relay hints", + Description: `example usage: + nak fetch nevent1qqsxrwm0hd3s3fddh4jc2574z3xzufq6qwuyz2rvv3n087zvym3dpaqprpmhxue69uhhqatzd35kxtnjv4kxz7tfdenju6t0xpnej4 + echo npub1h8spmtw9m2huyv6v2j2qd5zv956z2zdugl6mgx02f2upffwpm3nqv0j4ps | nak fetch --relay wss://relay.nostr.band`, + Flags: []cli.Flag{ + &cli.StringSliceFlag{ + Name: "relay", + Aliases: []string{"r"}, + Usage: "also use these relays to fetch from", + }, + }, + ArgsUsage: "[nip19code]", Action: func(c *cli.Context) error { filter := nostr.Filter{} code := getStdinOrFirstArgument(c) @@ -24,7 +32,10 @@ var fetch = &cli.Command{ return err } - var relays []string + relays := c.StringSlice("relay") + if err := validateRelayURLs(relays); err != nil { + return err + } var authorHint string switch prefix { diff --git a/helpers.go b/helpers.go index d71c02a..d319ede 100644 --- a/helpers.go +++ b/helpers.go @@ -2,7 +2,9 @@ package main import ( "bytes" + "fmt" "io" + "net/url" "os" "github.com/urfave/cli/v2" @@ -27,3 +29,22 @@ func getStdinOrFirstArgument(c *cli.Context) string { } return getStdin() } + +func validateRelayURLs(wsurls []string) error { + for _, wsurl := range wsurls { + u, err := url.Parse(wsurl) + if err != nil { + return fmt.Errorf("invalid relay url '%s': %s", wsurl, err) + } + + if u.Scheme != "ws" && u.Scheme != "wss" { + return fmt.Errorf("relay url must use wss:// or ws:// schemes, got '%s'", wsurl) + } + + if u.Host == "" { + return fmt.Errorf("relay url '%s' is missing the hostname", wsurl) + } + } + + return nil +}