TinySkin/handle/yggdrasil/yggdrasil.go
2023-09-10 21:50:30 +08:00

41 lines
1.1 KiB
Go

package yggdrasil
import (
"context"
"io"
"log/slog"
"net/http"
"github.com/go-playground/validator/v10"
"github.com/xmdhs/authlib-skin/config"
"github.com/xmdhs/authlib-skin/model/yggdrasil"
yggdrasilS "github.com/xmdhs/authlib-skin/service/yggdrasil"
"github.com/xmdhs/authlib-skin/utils"
)
type Yggdrasil struct {
logger *slog.Logger
validate *validator.Validate
yggdrasilService *yggdrasilS.Yggdrasil
config config.Config
}
func NewYggdrasil(logger *slog.Logger, validate *validator.Validate, yggdrasilService *yggdrasilS.Yggdrasil, config config.Config) *Yggdrasil {
return &Yggdrasil{
logger: logger,
validate: validate,
yggdrasilService: yggdrasilService,
config: config,
}
}
func getAnyModel[K any](ctx context.Context, w http.ResponseWriter, r io.Reader, validate *validator.Validate, slog *slog.Logger) (K, bool) {
a, err := utils.DeCodeBody[K](r, validate)
if err != nil {
slog.DebugContext(ctx, err.Error())
handleYgError(ctx, w, yggdrasil.Error{ErrorMessage: err.Error()}, 400)
return a, false
}
return a, true
}