@@ -16,6 +16,7 @@ package appbuilder
1616
1717import (
1818 "bufio"
19+ "bytes"
1920 "errors"
2021 "fmt"
2122 "io"
@@ -30,51 +31,49 @@ type SSEEvent struct {
3031}
3132
3233func checkHTTPResponse (rsp * http.Response ) (string , error ) {
33- requestID := rsp .Header .Get ("X-Appbuilder-Request-Id" )
34- if rsp .StatusCode == http .StatusOK {
35- log .Printf ("Successful HTTP response. RequestID: %s" , requestID )
36- return requestID , nil
37- }
34+ requestID := rsp .Header .Get ("X-Appbuilder-Request-Id" )
35+ if rsp .StatusCode == http .StatusOK {
36+ log .Printf ("Successful HTTP response. RequestID: %s" , requestID )
37+ return requestID , nil
38+ }
3839
39- data , err := io .ReadAll (rsp .Body )
40- if err != nil {
41- log .Printf ("Failed to read response body. RequestID: %s, Error: %v" , requestID , err )
42- return requestID , err
43- }
44- log .Printf ("HTTP response with unexpected status code. RequestID: %s, StatusCode: %d, Content: %s" , requestID , rsp .StatusCode , string (data ))
45- return requestID , fmt .Errorf ("http status code is %d, content is %s" , rsp .StatusCode , string (data ))
40+ data , err := io .ReadAll (rsp .Body )
41+ if err != nil {
42+ log .Printf ("Failed to read response body. RequestID: %s, Error: %v" , requestID , err )
43+ return requestID , err
44+ }
45+ log .Printf ("HTTP response with unexpected status code. RequestID: %s, StatusCode: %d, Content: %s" , requestID , rsp .StatusCode , string (data ))
46+ return requestID , fmt .Errorf ("http status code is %d, content is %s" , rsp .StatusCode , string (data ))
4647}
4748
4849func NewSSEReader (bufSize int , reader * bufio.Reader ) * sseReader {
49- buf := make ([]byte , bufSize )
50- return & sseReader {reader : reader , buf : buf }
50+ // buf := make([]byte, bufSize)
51+ return & sseReader {reader : reader , buf : bytes. Buffer {} }
5152}
5253
5354type sseReader struct {
5455 reader * bufio.Reader
55- buf [] byte
56+ buf bytes. Buffer
5657}
5758
5859func (t * sseReader ) ReadMessageLine () ([]byte , error ) {
59- size := 0
60+ t . buf . Reset ()
6061 for {
6162 line , isPrefix , err := t .reader .ReadLine ()
6263 if err != nil {
6364 return nil , err
6465 }
65- if len (line )+ size > cap (t .buf ) {
66- panic ("buffer overflow" )
67- }
68- size += copy (t .buf [size :], line )
66+ t .buf .Grow (len (line ))
67+ t .buf .Write (line )
6968 if ! isPrefix {
7069 break
7170 }
7271 }
7372 // 读取空行
7473 line , _ , err := t .reader .ReadLine ()
7574 if err != nil || len (line ) != 0 {
76- size += copy ( t .buf [ size :], line )
77- return nil , errors .New (string ( t .buf [ 0 : size ] ))
75+ t .buf . Grow ( len ( line ) )
76+ return nil , errors .New (t .buf . String ( ))
7877 }
79- return t .buf [ 0 : size ] , nil
78+ return t .buf . Bytes () , nil
8079}
0 commit comments