[http] adding first draft of server-side message number limit.

This commit is contained in:
Blallo 2018-11-04 23:13:27 +01:00
parent d380deae37
commit 89c59e5713
No known key found for this signature in database
GPG key ID: 0CBE577C9B72DC3F

View file

@ -1,7 +1,10 @@
package main
import (
"fmt"
"net/http"
"os"
"strconv"
"time"
"git.lattuga.net/boyska/circolog"
@ -21,9 +24,45 @@ func getHTTPHandler(hub circolog.Hub) http.HandlerFunc {
Nofollow: true}
hub.Register <- client
err := r.ParseForm()
if err != nil {
fmt.Fprintln(os.Stderr, "error parsing http request", err)
}
// Looking for known parameter in the request
// TODO: write specialized function
var requestMessageLen int
if reqL, ok := r.Form["l"]; ok {
var err error
switch {
case len(reqL) == 1:
requestMessageLen, err = strconv.Atoi(reqL[0])
if requestMessageLen <= 0 {
fmt.Fprintln(os.Stderr, "malformed request, l non positive:", requestMessageLen)
//requestMessageLen := 0
}
if err != nil {
fmt.Fprintln(os.Stderr, "malformed request on parameter l:", err)
}
case len(reqL) > 1:
requestMessageLen, err = strconv.Atoi(reqL[len(reqL)-1])
fmt.Fprintln(os.Stderr, "multiple values of l parameter, taking last:",
requestMessageLen)
if err != nil {
fmt.Fprintln(os.Stderr, "malformed request on parameter l:", err)
}
default:
fmt.Fprintln(os.Stderr, "empty parameter l in request")
}
}
i := 1
for x := range client.Messages {
w.Write([]byte(circolog.FormatSyslog(x)))
w.Write([]byte("\n"))
if requestMessageLen != 0 && i >= requestMessageLen {
break
}
i++
}
}
}