package wordle import ( "fmt" "io" "net/http" "gitea.konchin.com/ytshih/inp2025/middlewares" "gitea.konchin.com/ytshih/inp2025/utils" "github.com/uptrace/bunrouter" "github.com/vmihailenco/msgpack/v5" "go.uber.org/zap" ) type PostGuessInput struct { Guess string `msgpack:"guess"` } func (self *Handlers) PostGuess( w http.ResponseWriter, req bunrouter.Request, ) error { zap.L().Info("POST /api/guess") b, err := io.ReadAll(req.Body) if err != nil { return middlewares.HTTPError{ StatusCode: http.StatusBadRequest, Message: "failed to read body payload", OriginError: err, } } var input PostGuessInput if err := msgpack.Unmarshal(b, &input); err != nil { return middlewares.HTTPError{ StatusCode: http.StatusBadRequest, Message: "failed to unmarshal from msgpack", OriginError: err, } } zap.L().Info("input", zap.String("input", fmt.Sprintf("%+v", input))) username, _, ok := req.BasicAuth() if !ok { return middlewares.HTTPError{ StatusCode: http.StatusBadRequest, Message: "username not exist", } } self.opCh <- &OperationGuess{ Username: username, Guess: input.Guess, } return utils.Success(w) }