aboutsummaryrefslogtreecommitdiff
path: root/cmd/example/example.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/example/example.go')
-rw-r--r--cmd/example/example.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/cmd/example/example.go b/cmd/example/example.go
new file mode 100644
index 0000000..6e7ece2
--- /dev/null
+++ b/cmd/example/example.go
@@ -0,0 +1,38 @@
+package main
+
+import (
+ "io/ioutil"
+ "log"
+ "net/url"
+ "strings"
+
+ gemini "git.sr.ht/~yotam/go-gemini"
+)
+
+type ExampleHandler struct {
+}
+
+func (h ExampleHandler) Handle(r gemini.Request) gemini.Response {
+ u, err := url.Parse(r.URL)
+ if err != nil {
+ body := ioutil.NopCloser(strings.NewReader(err.Error()))
+ return gemini.Response{40, "text/gemini", body}
+ }
+
+ if u.Path != "/" {
+ body := ioutil.NopCloser(strings.NewReader("Not Found"))
+ return gemini.Response{50, "text/gemini", body}
+ }
+
+ body := ioutil.NopCloser(strings.NewReader("Hello World"))
+ return gemini.Response{20, "text/gemini", body}
+}
+
+func main() {
+ handler := ExampleHandler{}
+
+ err := gemini.ListenAndServe(":1965", "server.crt", "server.key", handler)
+ if err != nil {
+ log.Fatal(err)
+ }
+}