diff --git a/main.go b/main.go
index ee36d60..e8aa5ea 100644
--- a/main.go
+++ b/main.go
@@ -2,6 +2,7 @@ package main
import (
"context"
+ _ "embed"
"log"
"net/http"
"os"
@@ -13,6 +14,22 @@ import (
"github.com/jackc/pgx/v5"
)
+//go:embed openapi.yaml
+var openapiFile []byte
+
+var rapidocHtml = `
+
+
+
+
+
+
+
+
+
+
+`
+
func main() {
// This is rude but at least we can configure the database URL securely.
psqlUrl := os.Getenv("DATABASE_URL")
@@ -40,8 +57,19 @@ func main() {
log.Fatalf("failed te create OpenAPI server: %v", err)
}
+ mux := http.NewServeMux()
+ mux.Handle("/", srv)
+ mux.Handle("/docs", serveContent([]byte(rapidocHtml), "text/html"))
+ mux.Handle("/docs/openapi.yaml", serveContent(openapiFile, "application/yaml"))
log.Println("Listening on :8080")
- if err = http.ListenAndServe(":8080", srv); err != nil {
+ if err = http.ListenAndServe(":8080", mux); err != nil {
log.Fatal(err)
}
}
+
+func serveContent(content []byte, contentType string) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ w.Header().Add("Content-Type", contentType)
+ w.Write(content)
+ })
+}