From d00976a66955ef02fd78966217cd920991b44eb2 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Wed, 5 Feb 2025 10:37:15 -0300 Subject: [PATCH] curl: assume POST when there is data and no method is specified. --- curl.go | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/curl.go b/curl.go index 25c4525..52fe474 100644 --- a/curl.go +++ b/curl.go @@ -28,7 +28,22 @@ var curl = &cli.Command{ // cowboy parsing of curl flags to get the data we need for nip98 var url string - method := "GET" + var method string + var presumedMethod string + + curlBodyBuildingFlags := []string{ + "-d", + "--data", + "--data-binary", + "--data-ascii", + "--data-raw", + "--data-urlencode", + "-F", + "--form", + "--form-string", + "--form-escape", + "--upload-file", + } nextIsMethod := false for _, f := range curlFlags { @@ -42,6 +57,11 @@ var curl = &cli.Command{ } else if f == "--request" || f == "-X" { nextIsMethod = true continue + } else if slices.Contains(curlBodyBuildingFlags, f) || + slices.ContainsFunc(curlBodyBuildingFlags, func(s string) bool { + return strings.HasPrefix(f, s) + }) { + presumedMethod = "POST" } nextIsMethod = false } @@ -50,6 +70,14 @@ var curl = &cli.Command{ return fmt.Errorf("can't create nip98 event: target url is empty") } + if method == "" { + if presumedMethod != "" { + method = presumedMethod + } else { + method = "GET" + } + } + // make and sign event evt := nostr.Event{ Kind: 27235,