UPDATE: some logic change
All checks were successful
Build and Release / release (push) Successful in 1m2s

This commit is contained in:
2026-04-09 12:11:17 +07:00
parent cdf27f4a5f
commit 084ba1e76a
3 changed files with 30 additions and 1 deletions

View File

@@ -5,7 +5,7 @@ import "time"
type UpdateProfileDto struct {
DisplayName string `json:"display_name" validate:"omitempty,min=2,max=50"`
FullName string `json:"full_name" validate:"omitempty,min=2,max=100"`
AvatarUrl string `json:"avatar_url" validate:"omitempty,url"`
AvatarUrl string `json:"avatar_url" validate:"omitempty,url,image_url"`
Bio string `json:"bio" validate:"omitempty,max=255"`
Location string `json:"location" validate:"omitempty,max=100"`
Website string `json:"website" validate:"omitempty,url"`

View File

@@ -2,6 +2,8 @@ package validator
import (
"errors"
"net/url"
"path"
"reflect"
"strings"
@@ -22,6 +24,31 @@ func init() {
}
return name
})
validate.RegisterValidation("image_url", func(fl validator.FieldLevel) bool {
val := fl.Field().String()
if val == "" {
return true
}
return isImageURL(val)
})
}
func isImageURL(u string) bool {
parsed, err := url.Parse(u)
if err != nil {
return false
}
ext := strings.ToLower(path.Ext(parsed.Path))
switch ext {
case ".jpg", ".jpeg", ".png", ".gif", ".webp":
return true
default:
return false
}
}
type ErrorResponse struct {

2
test.ts Normal file
View File

@@ -0,0 +1,2 @@
import axios from "axios"