initial input support
This commit is contained in:
parent
8eb1a1cd36
commit
345af74bd1
40
sparte.go
40
sparte.go
|
@ -12,7 +12,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// SpartanURL parses u and calls SpartanParsedURL with the parsed url
|
// 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)
|
parsed, err := url.Parse(u)
|
||||||
if parsed.Host == "" {
|
if parsed.Host == "" {
|
||||||
parsed, err = url.Parse("spartan://" + u)
|
parsed, err = url.Parse("spartan://" + u)
|
||||||
|
@ -24,11 +24,11 @@ func SpartanURL(u string) bool {
|
||||||
if parsed.Scheme != "spartan" {
|
if parsed.Scheme != "spartan" {
|
||||||
fmt.Println("Unsupported scheme")
|
fmt.Println("Unsupported scheme")
|
||||||
}
|
}
|
||||||
return SpartanParsedURL(*parsed)
|
return SpartanParsedURL(*parsed, input)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SpartanParsedURL fetches u and displays the page
|
// SpartanParsedURL fetches u and displays the page
|
||||||
func SpartanParsedURL(u url.URL) bool {
|
func SpartanParsedURL(u url.URL, input string) bool {
|
||||||
host := u.Host
|
host := u.Host
|
||||||
if u.Port() == "" {
|
if u.Port() == "" {
|
||||||
host += ":300"
|
host += ":300"
|
||||||
|
@ -46,7 +46,8 @@ func SpartanParsedURL(u url.URL) bool {
|
||||||
if u.Path == "" {
|
if u.Path == "" {
|
||||||
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
|
// Receive and parse response header
|
||||||
reader := bufio.NewReader(conn)
|
reader := bufio.NewReader(conn)
|
||||||
header, err := reader.ReadString(byte('\n'))
|
header, err := reader.ReadString(byte('\n'))
|
||||||
|
@ -78,7 +79,8 @@ func SpartanParsedURL(u url.URL) bool {
|
||||||
body := string(bodyBytes)
|
body := string(bodyBytes)
|
||||||
fmt.Print(body)
|
fmt.Print(body)
|
||||||
case 3:
|
case 3:
|
||||||
SpartanURL("spartan://" + u.Host + meta)
|
fmt.Println(u.Host + meta)
|
||||||
|
SpartanURL("spartan://" + u.Host + meta, "")
|
||||||
case 4:
|
case 4:
|
||||||
fmt.Println("Error: " + meta)
|
fmt.Println("Error: " + meta)
|
||||||
case 5:
|
case 5:
|
||||||
|
@ -89,11 +91,27 @@ func SpartanParsedURL(u url.URL) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
args := os.Args
|
args := os.Args[1:]
|
||||||
if len(args) == 0 || args[1] == "--help" {
|
if len(args) == 0 {
|
||||||
fmt.Println("Usage: <program> [--help] [URL]")
|
fmt.Println("do --help for help")
|
||||||
return
|
|
||||||
}
|
}
|
||||||
// TODO: support multiple args
|
for i, arg := range args {
|
||||||
SpartanURL(args[1])
|
if arg == "--help" {
|
||||||
|
fmt.Println("Usage: <program> [--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: <program> URL -i INPUT")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
SpartanURL(args[i-1], args[i+1])
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SpartanURL(args[0], "")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue