From a912ef996ad4d4d13e3837a3b6d3854c69b9dad3 Mon Sep 17 00:00:00 2001 From: Adnan Maolood Date: Fri, 18 Dec 2020 12:31:37 -0500 Subject: [PATCH] Add examples/stream.go --- examples/stream.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 examples/stream.go diff --git a/examples/stream.go b/examples/stream.go new file mode 100644 index 0000000..9bda175 --- /dev/null +++ b/examples/stream.go @@ -0,0 +1,43 @@ +// +build ignore + +// This example illustrates a streaming Gemini server. + +package main + +import ( + "crypto/tls" + "crypto/x509/pkix" + "fmt" + "log" + "time" + + "git.sr.ht/~adnano/go-gemini" +) + +func main() { + var server gemini.Server + if err := server.Certificates.Load("/var/lib/gemini/certs"); err != nil { + log.Fatal(err) + } + server.CreateCertificate = func(hostname string) (tls.Certificate, error) { + return gemini.CreateCertificate(gemini.CertificateOptions{ + Subject: pkix.Name{ + CommonName: hostname, + }, + DNSNames: []string{hostname}, + Duration: 365 * 24 * time.Hour, + }) + } + + server.RegisterFunc("localhost", stream) + if err := server.ListenAndServe(); err != nil { + log.Fatal(err) + } +} + +func stream(w *gemini.ResponseWriter, r *gemini.Request) { + for { + fmt.Fprintln(w, time.Now()) + time.Sleep(time.Second) + } +}