✨ feat(tokens): add cherryConfig support for URL generation and base64 encoding
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package common
|
package common
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"strconv"
|
"strconv"
|
||||||
@@ -68,3 +69,7 @@ func StringToByteSlice(s string) []byte {
|
|||||||
tmp2 := [3]uintptr{tmp1[0], tmp1[1], tmp1[1]}
|
tmp2 := [3]uintptr{tmp1[0], tmp1[1], tmp1[1]}
|
||||||
return *(*[]byte)(unsafe.Pointer(&tmp2))
|
return *(*[]byte)(unsafe.Pointer(&tmp2))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func EncodeBase64(str string) string {
|
||||||
|
return base64.StdEncoding.EncodeToString([]byte(str))
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,8 +6,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var Chats = []map[string]string{
|
var Chats = []map[string]string{
|
||||||
|
//{
|
||||||
|
// "ChatGPT Next Web 官方示例": "https://app.nextchat.dev/#/?settings={\"key\":\"{key}\",\"url\":\"{address}\"}",
|
||||||
|
//},
|
||||||
{
|
{
|
||||||
"ChatGPT Next Web 官方示例": "https://app.nextchat.dev/#/?settings={\"key\":\"{key}\",\"url\":\"{address}\"}",
|
"Cherry Studio": "cherrystudio://providers/api-keys?v=1&data={cherryConfig}",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Lobe Chat 官方示例": "https://chat-preview.lobehub.com/?settings={\"keyVaults\":{\"openai\":{\"apiKey\":\"{key}\",\"baseURL\":\"{address}/v1\"}}}",
|
"Lobe Chat 官方示例": "https://chat-preview.lobehub.com/?settings={\"keyVaults\":{\"openai\":{\"apiKey\":\"{key}\",\"baseURL\":\"{address}/v1\"}}}",
|
||||||
|
|||||||
@@ -432,9 +432,22 @@ const TokensTable = () => {
|
|||||||
if (serverAddress === '') {
|
if (serverAddress === '') {
|
||||||
serverAddress = window.location.origin;
|
serverAddress = window.location.origin;
|
||||||
}
|
}
|
||||||
|
if (url.includes('{cherryConfig}') === true) {
|
||||||
|
let cherryConfig = {
|
||||||
|
id: 'new-api',
|
||||||
|
baseUrl: serverAddress,
|
||||||
|
apiKey: 'sk-' + record.key,
|
||||||
|
}
|
||||||
|
// 替换 {cherryConfig} 为base64编码的JSON字符串
|
||||||
|
let encodedConfig = encodeURIComponent(
|
||||||
|
btoa(JSON.stringify(cherryConfig))
|
||||||
|
);
|
||||||
|
url = url.replaceAll('{cherryConfig}', encodedConfig);
|
||||||
|
} else {
|
||||||
let encodedServerAddress = encodeURIComponent(serverAddress);
|
let encodedServerAddress = encodeURIComponent(serverAddress);
|
||||||
url = url.replaceAll('{address}', encodedServerAddress);
|
url = url.replaceAll('{address}', encodedServerAddress);
|
||||||
url = url.replaceAll('{key}', 'sk-' + record.key);
|
url = url.replaceAll('{key}', 'sk-' + record.key);
|
||||||
|
}
|
||||||
|
|
||||||
window.open(url, '_blank');
|
window.open(url, '_blank');
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user