summaryrefslogtreecommitdiff
path: root/bot.go
diff options
context:
space:
mode:
Diffstat (limited to 'bot.go')
-rw-r--r--bot.go68
1 files changed, 55 insertions, 13 deletions
diff --git a/bot.go b/bot.go
index d5b4a97..e8a13e3 100644
--- a/bot.go
+++ b/bot.go
@@ -151,21 +151,63 @@ func fetchORModels(free bool) ([]string, error) {
func sendMsgToLLM(body io.Reader) {
choseChunkParser()
- // nolint
- req, err := http.NewRequest("POST", cfg.CurrentAPI, body)
- if err != nil {
- logger.Error("newreq error", "error", err)
- if err := notifyUser("error", "apicall failed:"+err.Error()); err != nil {
- logger.Error("failed to notify", "error", err)
+
+ var req *http.Request
+ var err error
+
+ // Capture and log the request body for debugging
+ if _, ok := body.(*io.LimitedReader); ok {
+ // If it's a LimitedReader, we need to handle it differently
+ logger.Debug("request body type is LimitedReader", "parser", chunkParser, "link", cfg.CurrentAPI)
+ req, err = http.NewRequest("POST", cfg.CurrentAPI, body)
+ if err != nil {
+ logger.Error("newreq error", "error", err)
+ if err := notifyUser("error", "apicall failed:"+err.Error()); err != nil {
+ logger.Error("failed to notify", "error", err)
+ }
+ streamDone <- true
+ return
}
- streamDone <- true
- return
+ req.Header.Add("Accept", "application/json")
+ req.Header.Add("Content-Type", "application/json")
+ req.Header.Add("Authorization", "Bearer "+chunkParser.GetToken())
+ req.Header.Set("Accept-Encoding", "gzip")
+ } else {
+ // For other reader types, capture and log the body content
+ bodyBytes, err := io.ReadAll(body)
+ if err != nil {
+ logger.Error("failed to read request body for logging", "error", err)
+ // Create request with original body if reading fails
+ req, err = http.NewRequest("POST", cfg.CurrentAPI, bytes.NewReader(bodyBytes))
+ if err != nil {
+ logger.Error("newreq error", "error", err)
+ if err := notifyUser("error", "apicall failed:"+err.Error()); err != nil {
+ logger.Error("failed to notify", "error", err)
+ }
+ streamDone <- true
+ return
+ }
+ } else {
+ // Log the request body for debugging
+ logger.Info("sending request to API", "api", cfg.CurrentAPI, "body", string(bodyBytes))
+
+ // Create request with the captured body
+ req, err = http.NewRequest("POST", cfg.CurrentAPI, bytes.NewReader(bodyBytes))
+ if err != nil {
+ logger.Error("newreq error", "error", err)
+ if err := notifyUser("error", "apicall failed:"+err.Error()); err != nil {
+ logger.Error("failed to notify", "error", err)
+ }
+ streamDone <- true
+ return
+ }
+ }
+
+ req.Header.Add("Accept", "application/json")
+ req.Header.Add("Content-Type", "application/json")
+ req.Header.Add("Authorization", "Bearer "+chunkParser.GetToken())
+ req.Header.Set("Accept-Encoding", "gzip")
}
- req.Header.Add("Accept", "application/json")
- req.Header.Add("Content-Type", "application/json")
- req.Header.Add("Authorization", "Bearer "+chunkParser.GetToken())
- // req.Header.Set("Content-Length", strconv.Itoa(len(bodyBytes)))
- req.Header.Set("Accept-Encoding", "gzip")
// nolint
resp, err := httpClient.Do(req)
if err != nil {