split server

master
bel 2023-03-26 08:46:31 -06:00
parent a3650642ca
commit 02c9dce1b3
1 changed files with 26 additions and 13 deletions

View File

@ -21,6 +21,7 @@ func (v01 *V01) _listen() {
s := &http.Server{
Addr: v01.cfg.Feedback.Addr,
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
r = r.WithContext(v01.ctx)
if r.Method == http.MethodGet {
mutex.RLock()
defer mutex.RUnlock()
@ -44,19 +45,7 @@ func (v01 *V01) _listen() {
}
func (v01 *V01) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet {
r = r.WithContext(v01.ctx)
user, ok := v01.cfg.Users[r.URL.Query().Get("user")]
if !ok {
user = v01.cfg.Users["broadcast"]
}
w.Write([]byte(user.Message))
} else if r.URL.Path == "/broadcast" {
b, _ := io.ReadAll(r.Body)
v := v01.cfg.Users["broadcast"]
v.Message = string(b)
v01.cfg.Users["broadcast"] = v
}
v01.serveHTTP(w, r)
if _, ok := r.URL.Query()["refresh"]; ok {
select {
case wrap.ChSigUsr1 <- syscall.SIGUSR1:
@ -64,3 +53,27 @@ func (v01 *V01) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
}
}
func (v01 *V01) serveHTTP(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case "/":
v01.getUserFeedback(w, r)
case "/broadcast":
v01.putBroadcast(w, r)
}
}
func (v01 *V01) getUserFeedback(w http.ResponseWriter, r *http.Request) {
user, ok := v01.cfg.Users[r.URL.Query().Get("user")]
if !ok {
user = v01.cfg.Users["broadcast"]
}
w.Write([]byte(user.Message))
}
func (v01 *V01) putBroadcast(w http.ResponseWriter, r *http.Request) {
b, _ := io.ReadAll(r.Body)
v := v01.cfg.Users["broadcast"]
v.Message = string(b)
v01.cfg.Users["broadcast"] = v
}