Files
golang-lab4/handlers/postUrl.go
2025-11-07 05:26:09 +08:00

53 lines
970 B
Go

package handlers
import (
"encoding/json"
"golang-lab4/middlewares"
"golang-lab4/utils"
"io"
"net/http"
"github.com/uptrace/bunrouter"
"go.uber.org/zap"
)
type PostUrlInput struct {
Url string `json:"url"`
}
// PostUrl
//
// @param request body PostUrlInput true "query params"
// @accept json
// @success 200
// @router /url [post]
func (self *Handlers) PostUrl(
w http.ResponseWriter,
req bunrouter.Request,
) error {
b, err := io.ReadAll(req.Body)
if err != nil {
return middlewares.HTTPError{
StatusCode: http.StatusBadRequest,
Message: "read payload failed",
OriginError: err,
}
}
var input PostUrlInput
if err := json.Unmarshal(b, &input); err != nil {
return middlewares.HTTPError{
StatusCode: http.StatusBadRequest,
Message: "failed to unmarshal input into json",
OriginError: err,
}
}
zap.L().Info("add url",
zap.String("url", input.Url))
self.fetcher.Add(input.Url)
return utils.Success(w)
}