@ 57cd687b81d1640c584c2673280ec456a5463380 | history
package main
import (
"fmt"
"html/template"
"io/ioutil"
"log"
"net/http"
"github.com/google/uuid"
"github.com/ianschenck/envflag"
)
func getTemplate(desc string, funcMap template.FuncMap) *template.Template {
t, _ := ioutil.ReadFile(
fmt.Sprintf("templates/%s.gohtml", desc),
)
return template.Must(template.New(desc).Funcs(funcMap).Parse(string(t)))
}
type tmpchatHandler struct {
signalingURL string
}
func (h tmpchatHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
channelName := r.URL.Path[1:] // Omit leading slash in path
var tmpl *template.Template
fm := template.FuncMap{
"safeURL": func(u string) template.URL { return template.URL(u) },
}
if channelName == "" {
tmpl = getTemplate("tmpchat-index", fm)
} else {
tmpl = getTemplate("tmpchat-channel", fm)
}
userID := uuid.New().String()
d := tmpchatPageData{
channelName,
userID,
h.signalingURL,
}
_ = tmpl.Execute(w, d)
}
type tmpchatPageData struct {
ChannelName string
UserID string
SignalingURL string
}
func main() {
var signalingURL string
envflag.StringVar(&signalingURL, "TMPCHAT_SIGNALING_URL", "ws://signaling:5050", "URL for tmpchat signaling server")
envflag.Parse()
http.Handle("/", tmpchatHandler{signalingURL})
log.Fatal(http.ListenAndServe(":8080", nil))
}