aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorAdnan Maolood <[email protected]>2020-10-27 13:27:52 -0400
committerAdnan Maolood <[email protected]>2020-10-27 13:27:52 -0400
commit8ab40648418c1770985b2a159343442453bd40c4 (patch)
tree5fa00e55cc5f2507daf2d5c7f2bf35e3dc49af68 /examples
parentRemove (Text).HTML function (diff)
downloadgo-gemini-8ab40648418c1770985b2a159343442453bd40c4.tar.xz
go-gemini-8ab40648418c1770985b2a159343442453bd40c4.zip
Add NewRequestFromURL function
Diffstat (limited to 'examples')
-rw-r--r--examples/client.go15
1 files changed, 9 insertions, 6 deletions
diff --git a/examples/client.go b/examples/client.go
index eb25301..af94d44 100644
--- a/examples/client.go
+++ b/examples/client.go
@@ -7,6 +7,7 @@ import (
"crypto/tls"
"crypto/x509"
"fmt"
+ "net/url"
"os"
"time"
@@ -76,21 +77,23 @@ func sendRequest(req *gmi.Request) error {
case gmi.StatusClassInput:
fmt.Printf("%s: ", resp.Meta)
scanner.Scan()
- req.URL.RawQuery = scanner.Text()
+ req.URL.RawQuery = url.QueryEscape(scanner.Text())
return sendRequest(req)
case gmi.StatusClassSuccess:
fmt.Print(string(resp.Body))
return nil
case gmi.StatusClassRedirect:
fmt.Println("Redirecting to", resp.Meta)
- // Make the request to the same host
- red, err := gmi.NewRequestTo(resp.Meta, req.Host)
+ target, err := url.Parse(resp.Meta)
if err != nil {
return err
}
- // Handle relative redirects
- red.URL = req.URL.ResolveReference(red.URL)
- return sendRequest(red)
+ // TODO: Prompt the user if the redirect is to another domain.
+ redirect, err := gmi.NewRequestFromURL(req.URL.ResolveReference(target))
+ if err != nil {
+ return err
+ }
+ return sendRequest(redirect)
case gmi.StatusClassTemporaryFailure:
return fmt.Errorf("Temporary failure: %s", resp.Meta)
case gmi.StatusClassPermanentFailure: