90 lines
2.0 KiB
Go
90 lines
2.0 KiB
Go
package target
|
|
|
|
import (
|
|
"context"
|
|
"donat-widget/internal/model"
|
|
"donat-widget/internal/model/api"
|
|
"github.com/labstack/echo/v4"
|
|
"log/slog"
|
|
"net/http"
|
|
)
|
|
|
|
func New(
|
|
targetRepo model.TargetRepo,
|
|
authClient model.AuthClient,
|
|
) *ServiceTarget {
|
|
return &ServiceTarget{
|
|
targetRepo: targetRepo,
|
|
authClient: authClient,
|
|
}
|
|
}
|
|
|
|
type ServiceTarget struct {
|
|
targetRepo model.TargetRepo
|
|
authClient model.AuthClient
|
|
}
|
|
|
|
func (targetService *ServiceTarget) CreateTarget(
|
|
ctx context.Context,
|
|
streamerID int,
|
|
amount int,
|
|
text string,
|
|
) (int, error) {
|
|
targetID, err := targetService.targetRepo.CreateTarget(ctx, streamerID, amount, text)
|
|
if err != nil {
|
|
slog.Error(err.Error())
|
|
return 0, err
|
|
}
|
|
return targetID, nil
|
|
}
|
|
|
|
func (targetService *ServiceTarget) GetAllTarget(
|
|
ctx context.Context,
|
|
streamerID int,
|
|
) ([]*model.Target, error) {
|
|
targets, err := targetService.targetRepo.GetAllTarget(ctx, streamerID)
|
|
if err != nil {
|
|
slog.Error(err.Error())
|
|
return nil, err
|
|
}
|
|
|
|
return targets, nil
|
|
}
|
|
|
|
func (targetService *ServiceTarget) AddAmountToTarget(
|
|
ctx context.Context,
|
|
targetID int,
|
|
amount int,
|
|
) error {
|
|
err := targetService.targetRepo.AddAmountToTarget(ctx, targetID, amount)
|
|
if err != nil {
|
|
slog.Error(err.Error())
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (donatService *ServiceTarget) CheckToken(
|
|
request echo.Context,
|
|
) (api.CheckTokenResponse, error) {
|
|
accessToken := model.Token(request.Request().Header.Get("Authorization"))
|
|
|
|
checkTokenResponse, err := donatService.authClient.CheckToken(accessToken)
|
|
if err != nil {
|
|
slog.Error("Failed to check token", "error", err.Error())
|
|
return api.CheckTokenResponse{}, echo.NewHTTPError(http.StatusInternalServerError, err.Error())
|
|
}
|
|
|
|
if checkTokenResponse.AccountID == 0 {
|
|
slog.Error("Unauthorized account")
|
|
return api.CheckTokenResponse{}, echo.NewHTTPError(http.StatusUnauthorized, "Unauthorized account")
|
|
}
|
|
|
|
if checkTokenResponse.AccountID == -1 {
|
|
slog.Error("Expired token")
|
|
return api.CheckTokenResponse{}, echo.NewHTTPError(http.StatusUnauthorized, "Expired token")
|
|
}
|
|
|
|
return checkTokenResponse, nil
|
|
}
|