44 lines
803 B
Go
44 lines
803 B
Go
package utils
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"fmt"
|
|
"log"
|
|
"math/big"
|
|
)
|
|
|
|
func GenerateToken() string {
|
|
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
|
const length = 8
|
|
|
|
charLen := big.NewInt(int64(len(charset)))
|
|
|
|
b := make([]byte, length)
|
|
for i := range b {
|
|
|
|
n, err := rand.Int(rand.Reader, charLen)
|
|
if err != nil {
|
|
log.Fatalf("Could not generate random number: %s\n", err)
|
|
}
|
|
b[i] = charset[n.Int64()]
|
|
}
|
|
return string(b)
|
|
}
|
|
|
|
type PhotoviewError struct {
|
|
message string
|
|
original error
|
|
}
|
|
|
|
func (e PhotoviewError) Error() string {
|
|
return fmt.Sprintf("%s: %s", e.message, e.original)
|
|
}
|
|
|
|
func HandleError(message string, err error) PhotoviewError {
|
|
log.Printf("ERROR: %s: %s", message, err)
|
|
return PhotoviewError{
|
|
message: message,
|
|
original: err,
|
|
}
|
|
}
|