Init: lab4 done
This commit is contained in:
52
handlers/postUrl.go
Normal file
52
handlers/postUrl.go
Normal file
@@ -0,0 +1,52 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user