Files
Sipro-Marketplaces/pkg/utils/utils.go

52 lines
928 B
Go

package utils
import (
"encoding/json"
"fmt"
"github.com/golang-jwt/jwt/v5"
)
type WbAuthData struct {
Token string `json:"token"`
}
func NewWbAuthData(token string) WbAuthData {
return WbAuthData{
Token: token,
}
}
func DecodeWildberriesJwt(token []byte) (WbAuthData, jwt.MapClaims, error) {
var authData WbAuthData
err := json.Unmarshal(token, &authData)
if err != nil {
return authData, nil, fmt.Errorf("failed to unmarshal JWT: %w", err)
}
claims := jwt.MapClaims{}
_, _, err = jwt.NewParser().ParseUnverified(authData.Token, claims)
if err != nil {
return authData, nil, fmt.Errorf("invalid JWT: %w", err)
}
return authData, claims, nil
}
func ToPtrs[T any](s []T) []*T {
res := make([]*T, len(s))
for i := range s {
res[i] = &s[i]
}
return res
}
func DerefSlice[T any](s []*T) []T {
res := make([]T, len(s))
for i := range s {
if s[i] != nil {
res[i] = *s[i]
}
}
return res
}