Add internal/server/user/mux/handlerbuilder{,_test}.go

Co-authored-by: Roberto Abdelkader Martínez Pérez <robertomartinezp@gmail.com>
This commit is contained in:
pancho horrillo
2019-10-10 18:14:26 +02:00
parent 2129c4a1f6
commit 463382bfb2
3 changed files with 223 additions and 1 deletions
@@ -0,0 +1,40 @@
package mux
import (
"log"
"net/http"
"github.com/google/uuid"
"github.com/BBVA/kapow/internal/server/data"
"github.com/BBVA/kapow/internal/server/model"
"github.com/BBVA/kapow/internal/server/user/spawn"
)
var spawner = spawn.Spawn
var idGenerator = uuid.NewUUID
func handlerBuilder(route model.Route) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
id, err := idGenerator()
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
return
}
h := &model.Handler{
ID: id.String(),
Route: route,
Request: r,
Writer: w,
}
data.Handlers.Add(h)
defer data.Handlers.Remove(h.ID)
err = spawner(h, nil)
if err != nil {
log.Println(err)
}
})
}