Implement FCM [WIP]
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
// Code generated by id-generate.go DO NOT EDIT.
|
||||
// Code generated by csid-generate.go DO NOT EDIT.
|
||||
|
||||
package models
|
||||
|
||||
import "crypto/rand"
|
||||
import "crypto/sha256"
|
||||
import "fmt"
|
||||
import "github.com/go-playground/validator/v10"
|
||||
import "github.com/rs/zerolog/log"
|
||||
@@ -14,7 +15,7 @@ import "reflect"
|
||||
import "regexp"
|
||||
import "strings"
|
||||
|
||||
const ChecksumCharsetIDGenerator = "8926e4a9845e67086109bef7ca447371ab5c0a94fcfd988f14fd4ee98da9e932" // GoExtVersion: 0.0.291
|
||||
const ChecksumCharsetIDGenerator = "69a99f8c01a15baad2fc9b99c516a700e02ce4dbcae452699e6d43cc23bc01bc" // GoExtVersion: 0.0.463
|
||||
|
||||
const idlen = 24
|
||||
|
||||
@@ -64,10 +65,10 @@ func generateCharsetMap() []int {
|
||||
|
||||
func generateID(prefix string) string {
|
||||
k := ""
|
||||
max := big.NewInt(int64(idCharsetLen))
|
||||
csMax := big.NewInt(int64(idCharsetLen))
|
||||
checksum := 0
|
||||
for i := 0; i < idlen-len(prefix)-checklen; i++ {
|
||||
v, err := rand.Int(rand.Reader, max)
|
||||
v, err := rand.Int(rand.Reader, csMax)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
@@ -79,6 +80,27 @@ func generateID(prefix string) string {
|
||||
return prefix + k + checkstr
|
||||
}
|
||||
|
||||
func generateIDFromSeed(prefix string, seed string) string {
|
||||
h := sha256.New()
|
||||
|
||||
iddata := ""
|
||||
for len(iddata) < idlen-len(prefix)-checklen {
|
||||
h.Write([]byte(seed))
|
||||
bs := h.Sum(nil)
|
||||
iddata += langext.NewAnyBaseConverter(idCharset).Encode(bs)
|
||||
}
|
||||
|
||||
checksum := 0
|
||||
for i := 0; i < idlen-len(prefix)-checklen; i++ {
|
||||
ichr := int(iddata[i])
|
||||
checksum = (checksum + charSetReverseMap[ichr]) % (idCharsetLen)
|
||||
}
|
||||
|
||||
checkstr := string(idCharset[checksum%idCharsetLen])
|
||||
|
||||
return prefix + iddata[:(idlen-len(prefix)-checklen)] + checkstr
|
||||
}
|
||||
|
||||
func validateID(prefix string, value string) error {
|
||||
if len(value) != idlen {
|
||||
return exerr.New(exerr.TypeInvalidCSID, "id has the wrong length").Str("value", value).Build()
|
||||
|
||||
Reference in New Issue
Block a user