diff --git a/internal/interfaces/utils.go b/internal/interfaces/utils.go new file mode 100644 index 0000000..35b495d --- /dev/null +++ b/internal/interfaces/utils.go @@ -0,0 +1,8 @@ +package interfaces + +import "github.com/gin-gonic/gin" + +type Utils interface { + IsEmail(email string) bool + GetUserUuidFromContext(c *gin.Context) (string, error) +} diff --git a/pkg/utils/handler.go b/pkg/utils/handler.go new file mode 100644 index 0000000..b3fff0d --- /dev/null +++ b/pkg/utils/handler.go @@ -0,0 +1,7 @@ +package utils + +type Utils struct{} + +func NewUtils() *Utils { + return &Utils{} +} diff --git a/pkg/utils/isEmail.go b/pkg/utils/isEmail.go new file mode 100644 index 0000000..d1627f8 --- /dev/null +++ b/pkg/utils/isEmail.go @@ -0,0 +1,8 @@ +package utils + +import "regexp" + +func (u *Utils) IsEmail(email string) bool { + re := regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`) + return re.MatchString(email) +} diff --git a/pkg/utils/userUuid.go b/pkg/utils/userUuid.go new file mode 100644 index 0000000..ae24ce6 --- /dev/null +++ b/pkg/utils/userUuid.go @@ -0,0 +1,29 @@ +package utils + +import ( + "errors" + "github.com/gin-gonic/gin" + "github.com/google/uuid" +) + +func (u *Utils) GetUserUuidFromContext(c *gin.Context) (string, error) { + if c == nil { + return "", errors.New("context is nil") + } + + uuidRaw, exists := c.Get("userUuid") + if !exists { + return "", errors.New("user uuid not found in context") + } + + userUuidStr, ok := uuidRaw.(string) + if !ok { + return "", errors.New("user uuid is not a string") + } + + userUuid, err := uuid.Parse(userUuidStr) + if err != nil { + return "", errors.New("error parsing user uuid") + } + return userUuid.String(), nil +}