package service import ( "encoding/json" "fmt" "github.com/gin-gonic/gin" "one-api/common" "strings" ) func SetEventStreamHeaders(c *gin.Context) { c.Writer.Header().Set("Content-Type", "text/event-stream") c.Writer.Header().Set("Cache-Control", "no-cache") c.Writer.Header().Set("Connection", "keep-alive") c.Writer.Header().Set("Transfer-Encoding", "chunked") c.Writer.Header().Set("X-Accel-Buffering", "no") } func StringData(c *gin.Context, str string) { str = strings.TrimPrefix(str, "data: ") str = strings.TrimSuffix(str, "\r") c.Render(-1, common.CustomEvent{Data: "data: " + str}) c.Writer.Flush() } func ObjectData(c *gin.Context, object interface{}) error { jsonData, err := json.Marshal(object) if err != nil { return fmt.Errorf("error marshalling object: %w", err) } StringData(c, string(jsonData)) return nil } func Done(c *gin.Context) { StringData(c, "[DONE]") }