aboutsummaryrefslogtreecommitdiff
path: root/example/client/client.go
diff options
context:
space:
mode:
authoradnano <[email protected]>2020-09-21 18:25:31 -0400
committeradnano <[email protected]>2020-09-21 18:25:31 -0400
commit0b6d3d8633d9770e5692bb54dfe81d4b8ea72bb0 (patch)
tree7b78b4d9b537abf8a2aa4cd6608bd651e48367c9 /example/client/client.go
parentAdd support for client-side certificates (diff)
downloadgo-gemini-0b6d3d8633d9770e5692bb54dfe81d4b8ea72bb0.tar.xz
go-gemini-0b6d3d8633d9770e5692bb54dfe81d4b8ea72bb0.zip
Rename example directory to examples
Diffstat (limited to 'example/client/client.go')
-rw-r--r--example/client/client.go73
1 files changed, 0 insertions, 73 deletions
diff --git a/example/client/client.go b/example/client/client.go
deleted file mode 100644
index 0dac61b..0000000
--- a/example/client/client.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// +build example
-
-package main
-
-import (
- "bufio"
- "crypto/tls"
- "fmt"
- "log"
- "os"
-
- "git.sr.ht/~adnano/go-gemini"
-)
-
-var client gemini.Client
-
-func init() {
- // Configure a client side certificate.
- // To generate a certificate, run:
- //
- // openssl genrsa -out client.key 2048
- // openssl ecparam -genkey -name secp384r1 -out client.key
- // openssl req -new -x509 -sha256 -key client.key -out client.crt -days 3650
- //
- config := tls.Config{}
- cert, err := tls.LoadX509KeyPair("example/client/client.crt", "example/client/client.key")
- if err != nil {
- log.Fatal(err)
- }
- config.Certificates = append(config.Certificates, cert)
- client.TLSConfig = config
-}
-
-func makeRequest(url string) {
- resp, err := client.Request(url)
- if err != nil {
- log.Fatal(err)
- }
-
- fmt.Println("Status code:", resp.Status)
- fmt.Println("Meta:", resp.Meta)
-
- switch resp.Status / 10 {
- case gemini.StatusClassInput:
- scanner := bufio.NewScanner(os.Stdin)
- fmt.Printf("%s: ", resp.Meta)
- scanner.Scan()
- query := scanner.Text()
- makeRequest(url + "?" + query)
- return
- case gemini.StatusClassSuccess:
- fmt.Print("Body:\n", string(resp.Body))
- case gemini.StatusClassRedirect:
- log.Print("Redirecting to ", resp.Meta)
- makeRequest(resp.Meta)
- return
- case gemini.StatusClassTemporaryFailure:
- log.Fatal("Temporary failure")
- case gemini.StatusClassPermanentFailure:
- log.Fatal("Permanent failure")
- case gemini.StatusClassClientCertificateRequired:
- log.Fatal("Client Certificate Required")
- default:
- log.Fatal("Protocol Error")
- }
-}
-
-func main() {
- if len(os.Args) < 2 {
- log.Fatalf("usage: %s gemini://...", os.Args[0])
- }
- makeRequest(os.Args[1])
-}