feat: add midjouney api implements, optimize function calls

This commit is contained in:
RockYang
2023-08-11 18:46:56 +08:00
parent b0e02b43fc
commit 2165ba3406
17 changed files with 298 additions and 183 deletions

View File

@@ -1,68 +0,0 @@
package utils
import (
"bytes"
"encoding/json"
"io"
"net/http"
"net/url"
)
func HttpGet(uri string, proxy string) ([]byte, error) {
var client *http.Client
if proxy == "" {
client = &http.Client{}
} else {
proxy, _ := url.Parse(proxy)
client = &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxy),
},
}
}
req, err := http.NewRequest("GET", uri, nil)
if err != nil {
return nil, err
}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
return io.ReadAll(resp.Body)
}
func HttpPost(uri string, params map[string]interface{}, proxy string) ([]byte, error) {
data, err := json.Marshal(params)
if err != nil {
return nil, err
}
var client *http.Client
if proxy == "" {
client = &http.Client{}
} else {
proxy, _ := url.Parse(proxy)
client = &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxy),
},
}
}
req, err := http.NewRequest("POST", uri, bytes.NewBuffer(data))
if err != nil {
return nil, err
}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
return io.ReadAll(resp.Body)
}

29
api/utils/websocket.go Normal file
View File

@@ -0,0 +1,29 @@
package utils
import (
"chatplus/core/types"
logger2 "chatplus/logger"
"encoding/json"
)
var logger = logger2.GetLogger()
// ReplyChunkMessage 回复客户片段端消息
func ReplyChunkMessage(client types.Client, message types.WsMessage) {
msg, err := json.Marshal(message)
if err != nil {
logger.Errorf("Error for decoding json data: %v", err.Error())
return
}
err = client.(*types.WsClient).Send(msg)
if err != nil {
logger.Errorf("Error for reply message: %v", err.Error())
}
}
// ReplyMessage 回复客户端一条完整的消息
func ReplyMessage(ws types.Client, message string) {
ReplyChunkMessage(ws, types.WsMessage{Type: types.WsStart})
ReplyChunkMessage(ws, types.WsMessage{Type: types.WsMiddle, Content: message})
ReplyChunkMessage(ws, types.WsMessage{Type: types.WsEnd})
}