aboutsummaryrefslogtreecommitdiff
path: root/example
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
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')
-rw-r--r--example/client/.gitignore2
-rw-r--r--example/client/client.go73
-rw-r--r--example/server/.gitignore2
-rw-r--r--example/server/server.go41
4 files changed, 0 insertions, 118 deletions
diff --git a/example/client/.gitignore b/example/client/.gitignore
deleted file mode 100644
index 37278c1..0000000
--- a/example/client/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-client.crt
-client.key
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])
-}
diff --git a/example/server/.gitignore b/example/server/.gitignore
deleted file mode 100644
index 10cdeb2..0000000
--- a/example/server/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-server.crt
-server.key
diff --git a/example/server/server.go b/example/server/server.go
deleted file mode 100644
index dbb23a0..0000000
--- a/example/server/server.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// +build example
-
-package main
-
-import (
- "crypto/tls"
- "git.sr.ht/~adnano/go-gemini"
- "log"
- "net/url"
-)
-
-func main() {
- // Load a TLS key pair.
- // To generate a TLS key pair, run:
- //
- // openssl genrsa -out server.key 2048
- // openssl ecparam -genkey -name secp384r1 -out server.key
- // openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650
- //
- config := tls.Config{}
- cert, err := tls.LoadX509KeyPair("example/server/server.crt", "example/server/server.key")
- if err != nil {
- log.Fatal(err)
- }
- config.Certificates = append(config.Certificates, cert)
-
- mux := &gemini.Mux{}
- mux.HandleFunc("/", func(url *url.URL) *gemini.Response {
- return &gemini.Response{
- Status: gemini.StatusSuccess,
- Meta: "text/gemini",
- Body: []byte("You requested " + url.String()),
- }
- })
-
- server := gemini.Server{
- TLSConfig: config,
- Handler: mux,
- }
- server.ListenAndServe()
-}