71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
package tencentvod
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
const defaultVODRegion = "ap-guangzhou"
|
|
|
|
type Credentials struct {
|
|
SubAppID uint64
|
|
SecretID string
|
|
SecretKey string
|
|
Region string
|
|
}
|
|
|
|
func ParseCredentials(raw string) (Credentials, error) {
|
|
s := strings.TrimSpace(strings.TrimPrefix(strings.TrimSpace(raw), "Bearer "))
|
|
if s == "" {
|
|
return Credentials{}, errors.New("empty tencent cloud vod credentials")
|
|
}
|
|
var parts []string
|
|
if strings.Contains(s, "|") {
|
|
for _, p := range strings.Split(s, "|") {
|
|
p = strings.TrimSpace(p)
|
|
if p != "" {
|
|
parts = append(parts, p)
|
|
}
|
|
}
|
|
} else {
|
|
for _, line := range strings.Split(s, "\n") {
|
|
line = strings.TrimSpace(line)
|
|
if line != "" {
|
|
parts = append(parts, line)
|
|
}
|
|
}
|
|
}
|
|
if len(parts) < 3 {
|
|
return Credentials{}, fmt.Errorf("invalid credentials: need SubAppId, SecretId and SecretKey (%d segments)", len(parts))
|
|
}
|
|
subID, err := strconv.ParseUint(parts[0], 10, 64)
|
|
if err != nil || subID == 0 {
|
|
return Credentials{}, fmt.Errorf("invalid SubAppId %q", parts[0])
|
|
}
|
|
c := Credentials{
|
|
SubAppID: subID,
|
|
SecretID: parts[1],
|
|
SecretKey: parts[2],
|
|
Region: defaultVODRegion,
|
|
}
|
|
if len(parts) >= 4 && strings.TrimSpace(parts[3]) != "" {
|
|
c.Region = strings.TrimSpace(parts[3])
|
|
}
|
|
return c, nil
|
|
}
|
|
|
|
func SplitCombinedModel(combined string) (modelName, modelVersion string) {
|
|
combined = strings.TrimSpace(combined)
|
|
if combined == "" {
|
|
return "", ""
|
|
}
|
|
idx := strings.Index(combined, "-")
|
|
if idx <= 0 || idx >= len(combined)-1 {
|
|
return combined, ""
|
|
}
|
|
return strings.TrimSpace(combined[:idx]), strings.TrimSpace(combined[idx+1:])
|
|
}
|
|
|