47 lines
870 B
Go
47 lines
870 B
Go
package handlers
|
|
|
|
import (
|
|
"golang-lab4/middlewares"
|
|
"golang-lab4/models"
|
|
"net/http"
|
|
|
|
"github.com/uptrace/bunrouter"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// GetUrl
|
|
//
|
|
// @param url query string true "url"
|
|
// @success 200 {object} models.UrlState
|
|
// @router /url [get]
|
|
func (self *Handlers) GetUrl(
|
|
w http.ResponseWriter,
|
|
req bunrouter.Request,
|
|
) error {
|
|
ctx := req.Context()
|
|
|
|
url := req.URL.Query().Get("url")
|
|
if url == "" {
|
|
zap.L().Warn("url not exist")
|
|
return middlewares.HTTPError{
|
|
StatusCode: http.StatusBadRequest,
|
|
Message: "url not provided",
|
|
}
|
|
}
|
|
|
|
var ret models.UrlState
|
|
err := self.db.NewSelect().
|
|
Model(&ret).
|
|
Where("url = ?", url).
|
|
Scan(ctx)
|
|
if err != nil {
|
|
return middlewares.HTTPError{
|
|
StatusCode: http.StatusInternalServerError,
|
|
Message: "failed to query db",
|
|
OriginError: err,
|
|
}
|
|
}
|
|
|
|
return bunrouter.JSON(w, ret)
|
|
}
|