feat: add shortcut related activity

This commit is contained in:
Steven
2023-06-24 15:55:54 +08:00
parent 81ac8d9c5d
commit d61c99f95a
4 changed files with 76 additions and 2 deletions

View File

@ -1,10 +1,12 @@
package v1
import (
"encoding/json"
"net/http"
"github.com/boojack/shortify/store"
"github.com/labstack/echo/v4"
"github.com/pkg/errors"
)
func (s *APIV1Service) registerRedirectorRoutes(g *echo.Group) {
@ -32,6 +34,35 @@ func (s *APIV1Service) registerRedirectorRoutes(g *echo.Group) {
return echo.NewHTTPError(http.StatusUnauthorized, "Unauthorized")
}
}
if err := s.createShortcutViewActivity(c, shortcut); err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to create activity").SetInternal(err)
}
return c.Redirect(http.StatusSeeOther, shortcut.Link)
})
}
func (s *APIV1Service) createShortcutViewActivity(c echo.Context, shortcut *store.Shortcut) error {
payload := &ActivityShorcutViewPayload{
ShortcutID: shortcut.ID,
IP: c.RealIP(),
Referer: c.Request().Referer(),
UserAgent: c.Request().UserAgent(),
}
payloadStr, err := json.Marshal(payload)
if err != nil {
return errors.Wrap(err, "Failed to marshal activity payload")
}
activity := &store.Activity{
CreatorID: BotID,
Type: store.ActivityShortcutView,
Level: store.ActivityInfo,
Payload: string(payloadStr),
}
_, err = s.Store.CreateActivity(c.Request().Context(), activity)
if err != nil {
return errors.Wrap(err, "Failed to create activity")
}
return nil
}