shortid_generator.go 773 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package util
  2. import (
  3. "errors"
  4. "regexp"
  5. "github.com/teris-io/shortid"
  6. )
  7. var allowedChars = shortid.DefaultABC
  8. var validUidPattern = regexp.MustCompile(`^[a-zA-Z0-9\-\_]*$`).MatchString
  9. var ErrDashboardInvalidUid = errors.New("uid contains illegal characters")
  10. var ErrDashboardUidToLong = errors.New("uid to long. max 40 characters")
  11. func init() {
  12. gen, _ := shortid.New(1, allowedChars, 1)
  13. shortid.SetDefault(gen)
  14. }
  15. // VerifyUid verifies the size and content of the uid
  16. func VerifyUid(uid string) error {
  17. if len(uid) > 40 {
  18. return ErrDashboardUidToLong
  19. }
  20. if !validUidPattern(uid) {
  21. return ErrDashboardInvalidUid
  22. }
  23. return nil
  24. }
  25. // GenerateShortUid generates a short unique identifier.
  26. func GenerateShortUid() string {
  27. return shortid.MustGenerate()
  28. }