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:
parent
ae04d26f51
commit
92ad7d5938
@ -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)
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user