africas-talking #50
@ -232,7 +232,7 @@ func main() {
|
|||||||
|
|
||||||
rp := &atRequestParser{}
|
rp := &atRequestParser{}
|
||||||
bsh := handlers.NewBaseSessionHandler(cfg, rs, stateStore, userdataStore, rp, hl)
|
bsh := handlers.NewBaseSessionHandler(cfg, rs, stateStore, userdataStore, rp, hl)
|
||||||
sh := httpserver.ToSessionHandler(bsh)
|
sh := httpserver.ToSessionHandler(bsh, httpserver.WithAtOutput())
|
||||||
s := &http.Server{
|
s := &http.Server{
|
||||||
Addr: fmt.Sprintf("%s:%s", host, strconv.Itoa(int(port))),
|
Addr: fmt.Sprintf("%s:%s", host, strconv.Itoa(int(port))),
|
||||||
Handler: sh,
|
Handler: sh,
|
||||||
|
@ -43,14 +43,30 @@ func(rp *DefaultRequestParser) GetInput(rq any) ([]byte, error) {
|
|||||||
return v, nil
|
return v, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type SessionHandler struct {
|
|
||||||
handlers.RequestHandler
|
|
||||||
|
type SessionHandlerOption func(*SessionHandler)
|
||||||
|
|
||||||
|
func WithAtOutput() SessionHandlerOption {
|
||||||
|
return func(sh *SessionHandler) {
|
||||||
|
sh.useAtOutput = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ToSessionHandler(h handlers.RequestHandler) *SessionHandler {
|
type SessionHandler struct {
|
||||||
return &SessionHandler{
|
handlers.RequestHandler
|
||||||
|
useAtOutput bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func ToSessionHandler(h handlers.RequestHandler, opts ...SessionHandlerOption) *SessionHandler {
|
||||||
|
sh := &SessionHandler{
|
||||||
RequestHandler: h,
|
RequestHandler: h,
|
||||||
|
useAtOutput: false,
|
||||||
}
|
}
|
||||||
|
for _, opt := range opts {
|
||||||
|
opt(sh)
|
||||||
|
}
|
||||||
|
return sh
|
||||||
}
|
}
|
||||||
|
|
||||||
func(f *SessionHandler) writeError(w http.ResponseWriter, code int, err error) {
|
func(f *SessionHandler) writeError(w http.ResponseWriter, code int, err error) {
|
||||||
@ -108,7 +124,11 @@ func(f *SessionHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
|
|||||||
|
|
||||||
w.WriteHeader(200)
|
w.WriteHeader(200)
|
||||||
w.Header().Set("Content-Type", "text/plain")
|
w.Header().Set("Content-Type", "text/plain")
|
||||||
rqs, err = f.Output(rqs)
|
if f.useAtOutput {
|
||||||
|
rqs, err = f.AtOutput(rqs)
|
||||||
|
} else {
|
||||||
|
rqs, err = f.Output(rqs)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
f.writeError(w, 500, err)
|
f.writeError(w, 500, err)
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user