mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-06 20:13:50 +08:00
fix(server): always send response.
This commit is contained in:
parent
19b2a86c7c
commit
89eaf91371
@ -1,7 +1,6 @@
|
|||||||
package server
|
package server
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -36,7 +35,6 @@ type lambdaResponse struct {
|
|||||||
type lambdaResponseWriter struct {
|
type lambdaResponseWriter struct {
|
||||||
statusCode int
|
statusCode int
|
||||||
header http.Header
|
header http.Header
|
||||||
buf *bytes.Buffer
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *lambdaResponseWriter) Header() http.Header {
|
func (l *lambdaResponseWriter) Header() http.Header {
|
||||||
@ -47,7 +45,7 @@ func (l *lambdaResponseWriter) Write(data []byte) (int, error) {
|
|||||||
buffer := global.NewBuffer()
|
buffer := global.NewBuffer()
|
||||||
defer global.PutBuffer(buffer)
|
defer global.PutBuffer(buffer)
|
||||||
body := ""
|
body := ""
|
||||||
if l.buf != nil {
|
if data != nil {
|
||||||
body = utils.B2S(data)
|
body = utils.B2S(data)
|
||||||
}
|
}
|
||||||
header := make(map[string]string)
|
header := make(map[string]string)
|
||||||
@ -116,18 +114,18 @@ func RunLambdaClient(bot *coolq.CQBot, conf *config.LambdaServer) {
|
|||||||
|
|
||||||
for {
|
for {
|
||||||
req := cli.next()
|
req := cli.next()
|
||||||
|
if req == nil {
|
||||||
|
writer := lambdaResponseWriter{statusCode: 200}
|
||||||
|
writer.Write(nil)
|
||||||
|
continue
|
||||||
|
}
|
||||||
func() {
|
func() {
|
||||||
defer func() {
|
defer func() {
|
||||||
if e := recover(); e != nil {
|
if e := recover(); e != nil {
|
||||||
log.Warnf("Lambda 出现不可恢复错误: %v\n%s", e, debug.Stack())
|
log.Warnf("Lambda 出现不可恢复错误: %v\n%s", e, debug.Stack())
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
buffer := global.NewBuffer()
|
server.ServeHTTP(&lambdaResponseWriter{header: make(http.Header)}, req)
|
||||||
defer global.PutBuffer(buffer)
|
|
||||||
server.ServeHTTP(&lambdaResponseWriter{
|
|
||||||
header: make(http.Header),
|
|
||||||
buf: buffer,
|
|
||||||
}, req)
|
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -159,6 +157,9 @@ func (c *lambdaClient) next() *http.Request {
|
|||||||
var req = new(http.Request)
|
var req = new(http.Request)
|
||||||
var invoke = new(lambdaInvoke)
|
var invoke = new(lambdaInvoke)
|
||||||
_ = json.NewDecoder(resp.Body).Decode(invoke)
|
_ = json.NewDecoder(resp.Body).Decode(invoke)
|
||||||
|
if invoke.HTTPMethod == "" { // 不是 api 网关
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
req.Method = invoke.HTTPMethod
|
req.Method = invoke.HTTPMethod
|
||||||
req.Body = io.NopCloser(strings.NewReader(invoke.Body))
|
req.Body = io.NopCloser(strings.NewReader(invoke.Body))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user