This commit is contained in:
gospider
2025-03-24 16:58:37 +08:00
parent 2e471ea7f7
commit aa18032511
5 changed files with 30 additions and 48 deletions

9
go.mod
View File

@@ -6,7 +6,7 @@ require (
github.com/gospider007/bar v0.0.0-20250217074946-47896d8de2ba
github.com/gospider007/bs4 v0.0.0-20250310095132-86f4213a6c1a
github.com/gospider007/gson v0.0.0-20250310035055-50bf98aae917
github.com/gospider007/gtls v0.0.0-20250315144323-ee784cf243ea
github.com/gospider007/gtls v0.0.0-20250324005721-d358b4cc74c6
github.com/gospider007/http2 v0.0.0-20250307152953-67c9f881b5be
github.com/gospider007/http3 v0.0.0-20250228010827-4832f37a33e9
github.com/gospider007/ja3 v0.0.0-20250309093815-ea9cc2528120
@@ -14,7 +14,7 @@ require (
github.com/gospider007/re v0.0.0-20250217075352-bcb79f285d6c
github.com/gospider007/tools v0.0.0-20250314001755-8fd6f4fc62e2
github.com/gospider007/websocket v0.0.0-20250306064730-90385d6147ad
github.com/quic-go/quic-go v0.50.0
github.com/quic-go/quic-go v0.50.1
github.com/refraction-networking/uquic v0.0.6
github.com/refraction-networking/utls v1.6.7
golang.org/x/net v0.37.0
@@ -58,11 +58,10 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/nwaples/rardecode/v2 v2.1.1 // indirect
github.com/onsi/ginkgo/v2 v2.23.1 // indirect
github.com/onsi/ginkgo/v2 v2.23.3 // indirect
github.com/pierrec/lz4/v4 v4.1.22 // indirect
github.com/quic-go/qpack v0.5.1 // indirect
github.com/rogpeppe/go-internal v1.11.0 // indirect
github.com/sorairolake/lzip-go v0.3.5 // indirect
github.com/sorairolake/lzip-go v0.3.7 // indirect
github.com/therootcompany/xz v1.0.1 // indirect
github.com/tidwall/gjson v1.18.0 // indirect
github.com/tidwall/match v1.1.1 // indirect

20
go.sum
View File

@@ -109,8 +109,8 @@ github.com/gospider007/bs4 v0.0.0-20250310095132-86f4213a6c1a h1:vJg/jZU2jq7o63K
github.com/gospider007/bs4 v0.0.0-20250310095132-86f4213a6c1a/go.mod h1:R2qPFPT8PU74dLVm6jw7aIB5y5wILsvhZ/Ji6RdOeqU=
github.com/gospider007/gson v0.0.0-20250310035055-50bf98aae917 h1:y0PkitoC/PjgM8Kkk+n9r2gkZXUy+JjjZZs7L+QClUk=
github.com/gospider007/gson v0.0.0-20250310035055-50bf98aae917/go.mod h1:3qme4vU9wRm58hRcg8k9ZY+TrFbtemp4eDjbvW8zQgQ=
github.com/gospider007/gtls v0.0.0-20250315144323-ee784cf243ea h1:HQG5wjbZe+E57+2oTFFFGj87S+gZAf668ZyPDWkGg/w=
github.com/gospider007/gtls v0.0.0-20250315144323-ee784cf243ea/go.mod h1:4TkEobGF1lQN/1d0tVEtt98/SHWPrbZm/vG6V1OuHWU=
github.com/gospider007/gtls v0.0.0-20250324005721-d358b4cc74c6 h1:LpQa63CYHuKLT1R0c320ca4+G3ePZV6Up9nkXeu+qkA=
github.com/gospider007/gtls v0.0.0-20250324005721-d358b4cc74c6/go.mod h1:dIZ6b7GEKiaBPSg9Kaa9OqlAsLDrh9bj4s2bVsF0bKI=
github.com/gospider007/http2 v0.0.0-20250307152953-67c9f881b5be h1:rUz7sGjJxMGveTFuZqehQScru6bTN3yuh5VdBbBDGZM=
github.com/gospider007/http2 v0.0.0-20250307152953-67c9f881b5be/go.mod h1:c5QmnC5Li5j9L9GRsTEzeleOxytuiS0a5IMt9hHn4Gw=
github.com/gospider007/http3 v0.0.0-20250228010827-4832f37a33e9 h1:rNUYNiGNoJaCGyqkdVnAH8a8XyMqhCr8zMXzjh7yvl4=
@@ -172,8 +172,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/nwaples/rardecode/v2 v2.1.1 h1:OJaYalXdliBUXPmC8CZGQ7oZDxzX1/5mQmgn0/GASew=
github.com/nwaples/rardecode/v2 v2.1.1/go.mod h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw=
github.com/onsi/ginkgo/v2 v2.23.1 h1:Ox0cOPv/t8RzKJUfDo9ZKtRvBOJY369sFJnl00CjqwY=
github.com/onsi/ginkgo/v2 v2.23.1/go.mod h1:zXTP6xIp3U8aVuXN8ENK9IXRaTjFnpVB9mGmaSRvxnM=
github.com/onsi/ginkgo/v2 v2.23.3 h1:edHxnszytJ4lD9D5Jjc4tiDkPBZ3siDeJJkUZJJVkp0=
github.com/onsi/ginkgo/v2 v2.23.3/go.mod h1:zXTP6xIp3U8aVuXN8ENK9IXRaTjFnpVB9mGmaSRvxnM=
github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=
github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=
github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
@@ -185,19 +185,19 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
github.com/quic-go/quic-go v0.50.0 h1:3H/ld1pa3CYhkcc20TPIyG1bNsdhn9qZBGN3b9/UyUo=
github.com/quic-go/quic-go v0.50.0/go.mod h1:Vim6OmUvlYdwBhXP9ZVrtGmCMWa3wEqhq3NgYrI8b4E=
github.com/quic-go/quic-go v0.50.1 h1:unsgjFIUqW8a2oopkY7YNONpV1gYND6Nt9hnt1PN94Q=
github.com/quic-go/quic-go v0.50.1/go.mod h1:Vim6OmUvlYdwBhXP9ZVrtGmCMWa3wEqhq3NgYrI8b4E=
github.com/refraction-networking/uquic v0.0.6 h1:9ol1oOaOpHDeeDlBY7u228jK+T5oic35QrFimHVaCMM=
github.com/refraction-networking/uquic v0.0.6/go.mod h1:TFgTmV/yqVCMEXVwP7z7PMAhzye02rFHLV6cRAg59jc=
github.com/refraction-networking/utls v1.6.7 h1:zVJ7sP1dJx/WtVuITug3qYUq034cDq9B2MR1K67ULZM=
github.com/refraction-networking/utls v1.6.7/go.mod h1:BC3O4vQzye5hqpmDTWUqi4P5DDhzJfkV1tdqtawQIH0=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk=
github.com/sorairolake/lzip-go v0.3.5 h1:ms5Xri9o1JBIWvOFAorYtUNik6HI3HgBTkISiqu0Cwg=
github.com/sorairolake/lzip-go v0.3.5/go.mod h1:N0KYq5iWrMXI0ZEXKXaS9hCyOjZUQdBDEIbXfoUwbdk=
github.com/sorairolake/lzip-go v0.3.7 h1:vP2uiD/NoklLyzYMdgOWkZME0ulkSfVTTE4MNRKCwNs=
github.com/sorairolake/lzip-go v0.3.7/go.mod h1:THOHr0FlNVCw2eOIEE9shFJAG1QxQg/pf2XUPAmNIqg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=

View File

@@ -203,7 +203,7 @@ func (obj *Client) Request(ctx context.Context, method string, href string, opti
func (obj *Client) request(ctx *Response) (err error) {
defer func() {
//read body
if err == nil && !ctx.IsSSE() && !ctx.IsStream() {
if err == nil && ctx.sse == nil && !ctx.option.Stream {
err = ctx.ReadBody()
}
//result callback

View File

@@ -246,7 +246,7 @@ func (obj *Response) SetContent(val []byte) {
// return content with []byte
func (obj *Response) Content() []byte {
if !obj.IsWebSocket() && !obj.IsSSE() {
if obj.webSocket == nil && obj.sse == nil {
obj.ReadBody()
}
return obj.content
@@ -305,19 +305,6 @@ func (obj *Response) Body() io.ReadCloser {
return obj.response.Body
}
// return true if response is stream
func (obj *Response) IsStream() bool {
return obj.option.Stream
}
// return true if response is other stream
func (obj *Response) IsWebSocket() bool {
return obj.webSocket != nil
}
func (obj *Response) IsSSE() bool {
return obj.sse != nil
}
// read body
func (obj *Response) ReadBody() (err error) {
obj.readBodyLock.Lock()

View File

@@ -20,24 +20,20 @@ func TestStream(t *testing.T) {
if err != nil {
t.Fatal(err)
}
if resp.IsStream() {
// con, err := io.ReadAll(resp.Body())
// if err != nil {
// t.Fatal(err)
// }
// resp.ReadBody()
// bBody := bytes.NewBuffer(nil)
// io.Copy(bBody, resp.Body())
// con, err := io.ReadAll(resp.Body())
// if err != nil {
// t.Fatal(err)
// }
// resp.ReadBody()
// bBody := bytes.NewBuffer(nil)
// io.Copy(bBody, resp.Body())
// t.Log(string(con))
// t.Log(resp.Text())
time.Sleep(2 * time.Second)
resp.CloseConn()
time.Sleep(2 * time.Second)
if resp.StatusCode() != 200 {
t.Fatal("resp.StatusCode()!= 200")
}
} else {
t.Fatal("resp.IsStream() is false")
// t.Log(string(con))
// t.Log(resp.Text())
time.Sleep(2 * time.Second)
resp.CloseConn()
time.Sleep(2 * time.Second)
if resp.StatusCode() != 200 {
t.Fatal("resp.StatusCode()!= 200")
}
}