package wordle import ( "io" "net/http" "gitea.konchin.com/ytshih/inp2025/middlewares" "gitea.konchin.com/ytshih/inp2025/utils" "github.com/uptrace/bunrouter" "github.com/vmihailenco/msgpack/v5" ) type PostGuessInput struct { Guess string `msgpack:"guess"` } func (self *Handlers) PostGuess( w http.ResponseWriter, req bunrouter.Request, ) error { // fmt.Fprintf(os.Stderr, "POST /api/guess\n") 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, } } 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) }