forked from JointCloud/pcm-coordinator
69 lines
1.6 KiB
Go
69 lines
1.6 KiB
Go
/*
|
|
|
|
Copyright (c) [2023] [pcm]
|
|
[pcm-coordinator] is licensed under Mulan PSL v2.
|
|
You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
You may obtain a copy of Mulan PSL v2 at:
|
|
http://license.coscl.org.cn/MulanPSL2
|
|
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
EITHER EXPaRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
See the Mulan PSL v2 for more details.
|
|
|
|
*/
|
|
|
|
package utils
|
|
|
|
import (
|
|
"math/rand"
|
|
"regexp"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
CHARSET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
|
|
TIMEFORMAT = "20060102150405"
|
|
)
|
|
|
|
func RandomString(n int) string {
|
|
sb := strings.Builder{}
|
|
sb.Grow(n)
|
|
for i := 0; i < n; i++ {
|
|
sb.WriteByte(CHARSET[rand.Intn(len(CHARSET))])
|
|
}
|
|
return sb.String()
|
|
}
|
|
|
|
func TimeString() string {
|
|
return time.Now().Format(TIMEFORMAT)
|
|
}
|
|
|
|
func IsValidHostAddress(input string) bool {
|
|
//pattern := `^(([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+\.[a-zA-Z]{2,}|(\d{1,3}\.){3}\d{1,3}):\d{1,5}$`
|
|
pattern := `^((([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+\.[a-zA-Z]{2,}|(\d{1,3}\.){3}\d{1,3}):\d{1,5})$|^.*\.com$`
|
|
re, err := regexp.Compile(pattern)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return re.MatchString(input)
|
|
}
|
|
|
|
func MpaStringToInterface(m map[string]string) map[string]interface{} {
|
|
result := make(map[string]interface{})
|
|
for k, v := range m {
|
|
result[k] = v
|
|
}
|
|
return result
|
|
}
|
|
|
|
func MapInterfaceToString(m map[string]interface{}) map[string]string {
|
|
result := make(map[string]string)
|
|
for k, v := range m {
|
|
if str, ok := v.(string); ok {
|
|
result[k] = str
|
|
}
|
|
}
|
|
return result
|
|
}
|