// // Copyright 2026 The InfiniFlow Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // package common import ( "encoding/base64" "fmt" "regexp" "strings" ) // PtrString formats a pointer value as a string for debug/log output. // Returns "" for nil pointers. func PtrString[T any](p *T) string { if p == nil { return "" } return fmt.Sprintf("%v", *p) } // composite model name format: model_name@instance_name@provider_name func IsCompositeModelName(modelName string) bool { parts := strings.Split(modelName, "@") if len(parts) != 3 { return false } for _, p := range parts { if p == "" { return false } } return true } func IsUUID(uuid string) bool { // only lower case letters and numbers, length is 32 if len(uuid) != 32 { return false } uuidRegex := regexp.MustCompile(`^[a-z0-9]+$`) if uuidRegex.MatchString(uuid) { return true } return false } // ExtractCompositeName splits a composite model name into three parts. // Returns (modelName, instanceName, providerName, true) on success, // or ("", "", "", false) if the name is not a valid composite name. func ExtractCompositeName(modelName string) (string, string, string, error) { parts := strings.Split(modelName, "@") if len(parts) != 3 { return "", "", "", fmt.Errorf("invalid model name format") } for _, p := range parts { if p == "" { return "", "", "", fmt.Errorf("invalid model name format") } } return parts[0], parts[1], parts[2], nil } func EncodeToBase64(email string) string { return base64.StdEncoding.EncodeToString([]byte(email)) } func DecodeFromBase64(encoded string) (string, error) { decoded, err := base64.StdEncoding.DecodeString(encoded) if err != nil { return "", err } return string(decoded), nil }