| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package render
- import (
- "net/http"
- "github.com/bytedance/sonic"
- "github.com/bytedance/sonic/ast"
- "github.com/labring/aiproxy/core/common/conv"
- )
- type Anthropic struct {
- Event string
- Data []byte
- }
- func (r *Anthropic) Render(w http.ResponseWriter) error {
- r.WriteContentType(w)
- event := r.Event
- if event == "" {
- eventNode, err := sonic.GetWithOptions(r.Data, ast.SearchOptions{}, "type")
- if err != nil {
- return err
- }
- event, err = eventNode.String()
- if err != nil {
- return err
- }
- }
- for _, bytes := range [][]byte{
- eventBytes,
- conv.StringToBytes(event),
- nBytes,
- dataBytes,
- r.Data,
- nnBytes,
- } {
- // nosemgrep:
- // go.lang.security.audit.xss.no-direct-write-to-responsewriter.no-direct-write-to-responsewriter
- if _, err := w.Write(bytes); err != nil {
- return err
- }
- }
- return nil
- }
- func (r *Anthropic) WriteContentType(w http.ResponseWriter) {
- WriteSSEContentType(w)
- }
|