1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-05 03:23:49 +08:00

fix(scf): fix write response.

This commit is contained in:
wdvxdr 2021-08-14 14:32:42 +08:00
parent ae04d26f51
commit 92ad7d5938
No known key found for this signature in database
GPG Key ID: 703F8C071DE7A1B6

View File

@ -1,6 +1,7 @@
package server package server
import ( import (
"bytes"
"fmt" "fmt"
"io" "io"
"net/http" "net/http"
@ -34,20 +35,22 @@ type lambdaResponse struct {
type lambdaResponseWriter struct { type lambdaResponseWriter struct {
statusCode int statusCode int
buf bytes.Buffer
header http.Header header http.Header
} }
func (l *lambdaResponseWriter) Write(p []byte) (n int, err error) {
return l.buf.Write(p)
}
func (l *lambdaResponseWriter) Header() http.Header { func (l *lambdaResponseWriter) Header() http.Header {
return l.header return l.header
} }
func (l *lambdaResponseWriter) Write(data []byte) (int, error) { func (l *lambdaResponseWriter) flush() error {
buffer := global.NewBuffer() buffer := global.NewBuffer()
defer global.PutBuffer(buffer) defer global.PutBuffer(buffer)
body := "" body := utils.B2S(l.buf.Bytes())
if data != nil {
body = utils.B2S(data)
}
header := make(map[string]string) header := make(map[string]string)
for k, v := range l.header { for k, v := range l.header {
header[k] = v[0] header[k] = v[0]
@ -62,10 +65,9 @@ func (l *lambdaResponseWriter) Write(data []byte) (int, error) {
r, _ := http.NewRequest("POST", cli.responseURL, buffer) r, _ := http.NewRequest("POST", cli.responseURL, buffer)
do, err := cli.client.Do(r) do, err := cli.client.Do(r)
if err != nil { if err != nil {
return 0, err return err
} }
_ = do.Body.Close() return do.Body.Close()
return len(data), nil
} }
func (l *lambdaResponseWriter) WriteHeader(statusCode int) { func (l *lambdaResponseWriter) WriteHeader(statusCode int) {
@ -125,7 +127,11 @@ func RunLambdaClient(bot *coolq.CQBot, conf *config.LambdaServer) {
log.Warnf("Lambda 出现不可恢复错误: %v\n%s", e, debug.Stack()) log.Warnf("Lambda 出现不可恢复错误: %v\n%s", e, debug.Stack())
} }
}() }()
server.ServeHTTP(&lambdaResponseWriter{header: make(http.Header)}, req) writer := lambdaResponseWriter{header: make(http.Header)}
server.ServeHTTP(&writer, req)
if err := writer.flush(); err != nil {
log.Warnf("Lambda 发送响应失败: %v", err)
}
}() }()
} }
} }