first commit
This commit is contained in:
63
httpServer.go
Normal file
63
httpServer.go
Normal file
@ -0,0 +1,63 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type Data struct {
|
||||
Type string `json:"type"`
|
||||
DisplayName string `json:"displayName"`
|
||||
DeathType string `json:"deathType"`
|
||||
KillerName string `json:"killerName"`
|
||||
EntityName string `json:"entityName"`
|
||||
NewLevel int `json:"newLevel"`
|
||||
}
|
||||
|
||||
type httpHandler struct {
|
||||
ctx context.Context
|
||||
}
|
||||
|
||||
func newHttpHandler(ctx context.Context) *httpHandler {
|
||||
return &httpHandler{
|
||||
ctx: ctx,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *httpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
data := Data{}
|
||||
|
||||
err := json.NewDecoder(r.Body).Decode(&data)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
getLogger(h.ctx).Debugf("[http server] Data: %v", data)
|
||||
|
||||
switch data.Type {
|
||||
case "join":
|
||||
getCommandHandler(h.ctx).handle(&joinCommand{
|
||||
name: data.DisplayName,
|
||||
})
|
||||
case "quit":
|
||||
getCommandHandler(h.ctx).handle(&quitCommand{
|
||||
name: data.DisplayName,
|
||||
})
|
||||
case "death":
|
||||
getCommandHandler(h.ctx).handle(&deathCommand{
|
||||
name: data.DisplayName,
|
||||
deathType: data.DeathType,
|
||||
})
|
||||
case "playerKilledEntity":
|
||||
getCommandHandler(h.ctx).handle(&killCommand{
|
||||
name: data.DisplayName,
|
||||
entity: data.EntityName,
|
||||
})
|
||||
case "playerLevelChange":
|
||||
getCommandHandler(h.ctx).handle(&changeLevelCommand{
|
||||
name: data.DisplayName,
|
||||
newLevel: data.NewLevel,
|
||||
})
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user