From 345af74bd15e0aceec6f8bdeec19d428fb7915bd Mon Sep 17 00:00:00 2001 From: Hedy Li Date: Fri, 9 Jul 2021 13:42:30 +0800 Subject: [PATCH] initial input support --- sparte.go | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/sparte.go b/sparte.go index f93bbfa..6a100f8 100644 --- a/sparte.go +++ b/sparte.go @@ -12,7 +12,7 @@ import ( ) // SpartanURL parses u and calls SpartanParsedURL with the parsed url -func SpartanURL(u string) bool { +func SpartanURL(u, input string) bool { parsed, err := url.Parse(u) if parsed.Host == "" { parsed, err = url.Parse("spartan://" + u) @@ -24,11 +24,11 @@ func SpartanURL(u string) bool { if parsed.Scheme != "spartan" { fmt.Println("Unsupported scheme") } - return SpartanParsedURL(*parsed) + return SpartanParsedURL(*parsed, input) } // SpartanParsedURL fetches u and displays the page -func SpartanParsedURL(u url.URL) bool { +func SpartanParsedURL(u url.URL, input string) bool { host := u.Host if u.Port() == "" { host += ":300" @@ -46,7 +46,8 @@ func SpartanParsedURL(u url.URL) bool { if u.Path == "" { path = "/" } - conn.Write([]byte(fmt.Sprintf("%s %s 0\r\n", u.Hostname(), path))) + conn.Write([]byte(fmt.Sprintf("%s %s %d\r\n", u.Hostname(), path, len(input)))) + conn.Write([]byte(input)) // Receive and parse response header reader := bufio.NewReader(conn) header, err := reader.ReadString(byte('\n')) @@ -78,7 +79,8 @@ func SpartanParsedURL(u url.URL) bool { body := string(bodyBytes) fmt.Print(body) case 3: - SpartanURL("spartan://" + u.Host + meta) + fmt.Println(u.Host + meta) + SpartanURL("spartan://" + u.Host + meta, "") case 4: fmt.Println("Error: " + meta) case 5: @@ -89,11 +91,27 @@ func SpartanParsedURL(u url.URL) bool { } func main() { - args := os.Args - if len(args) == 0 || args[1] == "--help" { - fmt.Println("Usage: [--help] [URL]") - return + args := os.Args[1:] + if len(args) == 0 { + fmt.Println("do --help for help") } - // TODO: support multiple args - SpartanURL(args[1]) + for i, arg := range args { + if arg == "--help" { + fmt.Println("Usage: [--help] [URL]") + return + } + if arg == "-i" { + if len(args) < i+2 { + fmt.Println("argument needed for -i") + return + } + if i == 0 { + fmt.Println("try this format instead: URL -i INPUT") + return + } + SpartanURL(args[i-1], args[i+1]) + return + } + } + SpartanURL(args[0], "") }