diff options
| author | adnano <[email protected]> | 2020-09-27 20:34:59 -0400 |
|---|---|---|
| committer | adnano <[email protected]> | 2020-09-27 20:34:59 -0400 |
| commit | f6be76f8b80b0f2e76e3fb7b61ca48785ac0d7c6 (patch) | |
| tree | 5e5acf1e03d83e7c73c7d70ab83b28b09b2c820f /examples/client | |
| parent | Change package name to gmi (diff) | |
| download | go-gemini-f6be76f8b80b0f2e76e3fb7b61ca48785ac0d7c6.tar.xz go-gemini-f6be76f8b80b0f2e76e3fb7b61ca48785ac0d7c6.zip | |
examples/client: Handle relative redirects
Diffstat (limited to 'examples/client')
| -rw-r--r-- | examples/client/client.go | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/examples/client/client.go b/examples/client/client.go index b209d0e..c83fb88 100644 --- a/examples/client/client.go +++ b/examples/client/client.go @@ -64,12 +64,16 @@ func sendRequest(req *gmi.Request) error { fmt.Print(string(resp.Body)) return nil case gmi.StatusClassRedirect: - fmt.Println("Redirecting to ", resp.Meta) - req, err := gmi.NewRequest(resp.Meta) + fmt.Println("Redirecting to", resp.Meta) + // Make the request to the same host + red, err := gmi.NewProxyRequest(req.Host, resp.Meta) if err != nil { return err } - return sendRequest(req) + // Handle relative redirects + red.URL = req.URL.ResolveReference(red.URL) + fmt.Println(red.URL, red.Host) + return sendRequest(red) case gmi.StatusClassTemporaryFailure: return fmt.Errorf("Temporary failure: %s", resp.Meta) case gmi.StatusClassPermanentFailure: |