23 lines
654 B
Go
23 lines
654 B
Go
package demo
|
|
|
|
import (
|
|
"context"
|
|
omnierrors "git.yuntuo.hk/k2safe/go-omni/errors"
|
|
"git.yuntuo.hk/k2safe/go-omni/httpx"
|
|
"io"
|
|
"strings"
|
|
)
|
|
|
|
func (l *Logic) Callback(ctx context.Context, body *httpx.Body) (*httpx.Stream, error) {
|
|
// The route's 64-byte limit bounds this example's memory use. A real signature
|
|
// implementation can hash body.Raw incrementally and authenticate its headers.
|
|
data, err := io.ReadAll(body.Raw)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if body.Header.Get("X-Signature") != "valid" {
|
|
return nil, omnierrors.ByCode("INVALID")
|
|
}
|
|
return &httpx.Stream{Content: io.NopCloser(strings.NewReader("ACK:" + string(data)))}, nil
|
|
}
|