mirror of
https://github.com/gospider007/requests.git
synced 2025-12-24 13:57:52 +08:00
sync
This commit is contained in:
16
conn.go
16
conn.go
@@ -9,6 +9,7 @@ import (
|
||||
"net/textproto"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/gospider007/net/http2"
|
||||
"github.com/gospider007/tools"
|
||||
@@ -68,6 +69,21 @@ func (obj *connecotr) Read(b []byte) (i int, err error) {
|
||||
func (obj *connecotr) Write(b []byte) (int, error) {
|
||||
return obj.rawConn.Write(b)
|
||||
}
|
||||
func (obj *connecotr) LocalAddr() net.Addr {
|
||||
return obj.rawConn.LocalAddr()
|
||||
}
|
||||
func (obj *connecotr) RemoteAddr() net.Addr {
|
||||
return obj.rawConn.RemoteAddr()
|
||||
}
|
||||
func (obj *connecotr) SetDeadline(t time.Time) error {
|
||||
return obj.rawConn.SetDeadline(t)
|
||||
}
|
||||
func (obj *connecotr) SetReadDeadline(t time.Time) error {
|
||||
return obj.rawConn.SetReadDeadline(t)
|
||||
}
|
||||
func (obj *connecotr) SetWriteDeadline(t time.Time) error {
|
||||
return obj.rawConn.SetWriteDeadline(t)
|
||||
}
|
||||
|
||||
func (obj *connecotr) h2Closed() bool {
|
||||
if obj.h2RawConn == nil {
|
||||
|
||||
3
go.mod
3
go.mod
@@ -11,7 +11,7 @@ require (
|
||||
github.com/gospider007/net v0.0.0-20240330101015-7f9e64d8d506
|
||||
github.com/gospider007/re v0.0.0-20240227100911-e27255e48eff
|
||||
github.com/gospider007/tools v0.0.0-20231202084937-8b2bc66f8198
|
||||
github.com/gospider007/websocket v0.0.0-20240104034652-af938aeed446
|
||||
github.com/gospider007/websocket v0.0.0-20240330145931-87c1d168b7df
|
||||
github.com/refraction-networking/utls v1.6.3
|
||||
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8
|
||||
golang.org/x/net v0.22.0
|
||||
@@ -47,5 +47,4 @@ require (
|
||||
golang.org/x/sys v0.18.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
golang.org/x/tools v0.19.0 // indirect
|
||||
nhooyr.io/websocket v1.8.10 // indirect
|
||||
)
|
||||
|
||||
8
go.sum
8
go.sum
@@ -20,6 +20,8 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/pprof v0.0.0-20231212022811-ec68065c825e h1:bwOy7hAFd0C91URzMIEBfr6BAz29yk7Qj0cy6S7DJlU=
|
||||
github.com/google/pprof v0.0.0-20231212022811-ec68065c825e/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
|
||||
github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
|
||||
github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
|
||||
github.com/gospider007/bar v0.0.0-20231215084215-956cfa59ce61 h1:XS7tOVjv207CKZTR+o5mSlxjP4FLfaaTkTZ11mCHL2U=
|
||||
github.com/gospider007/bar v0.0.0-20231215084215-956cfa59ce61/go.mod h1:aYPgmG9340i9x9VQZhf34/XtIj7PHDTq0wSO+7zU/8s=
|
||||
github.com/gospider007/blog v0.0.0-20231121084103-59a004dafccf h1:1laTsuH/wl5pZ5QlHzacX09QzvwQw0DFENoRMpGBK8Y=
|
||||
@@ -40,8 +42,8 @@ github.com/gospider007/re v0.0.0-20240227100911-e27255e48eff h1:tiTX2nKAnHZ45Jac
|
||||
github.com/gospider007/re v0.0.0-20240227100911-e27255e48eff/go.mod h1:X58uk0/F3mVskuQOZng0ZKJiAt3ETn0wxuLN//rVZrE=
|
||||
github.com/gospider007/tools v0.0.0-20231202084937-8b2bc66f8198 h1:phk1GNobIIQWL5/G5dtgs35hotucdYv2FScMjlHHZ+Q=
|
||||
github.com/gospider007/tools v0.0.0-20231202084937-8b2bc66f8198/go.mod h1:wiILK6EotceHz/Rnb6ux8PzY3sr5OV+mYuIcbtxpkYI=
|
||||
github.com/gospider007/websocket v0.0.0-20240104034652-af938aeed446 h1:JmTBH/ow7RAxM+dW3XuV3GOEnnP10s9wX6lDzN+6NtE=
|
||||
github.com/gospider007/websocket v0.0.0-20240104034652-af938aeed446/go.mod h1:yFlXngTH3Vh3LMNGpYCaK41Ruv+zEScL9zZ2AmhzBbo=
|
||||
github.com/gospider007/websocket v0.0.0-20240330145931-87c1d168b7df h1:w31Uls0iL5HOhp2a3YPTbmWzqD7n13wsoPhbcllsfb4=
|
||||
github.com/gospider007/websocket v0.0.0-20240330145931-87c1d168b7df/go.mod h1:c3KpZ5HtL/iiIUG4CrOu0ycSPoJPUjgtNT3cdAfnKa4=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg=
|
||||
@@ -149,5 +151,3 @@ golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q=
|
||||
nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
|
||||
|
||||
@@ -336,7 +336,7 @@ func (obj *Client) request(ctx context.Context, option *RequestOption) (response
|
||||
|
||||
//init ws
|
||||
if ctxData.isWs {
|
||||
websocket.SetClientHeadersOption(reqs.Header, option.WsOption)
|
||||
websocket.SetClientHeadersWithOption(reqs.Header, option.WsOption)
|
||||
}
|
||||
|
||||
if reqs.URL.Scheme == "file" {
|
||||
@@ -382,9 +382,9 @@ func (obj *Client) request(ctx context.Context, option *RequestOption) (response
|
||||
response.disUnzip = response.response.Uncompressed
|
||||
}
|
||||
if response.response.StatusCode == 101 {
|
||||
response.webSocket, err = websocket.NewClientConn(response.rawConn.Conn(), response.response.Header, response.ForceCloseConn)
|
||||
response.webSocket = websocket.NewClientConn(response.rawConn.Conn(), websocket.GetResponseHeaderOption(response.response.Header))
|
||||
} else if response.response.Header.Get("Content-Type") == "text/event-stream" {
|
||||
response.sse = newSse(response.response.Body, response.ForceCloseConn)
|
||||
response.sse = newSse(response.response.Body)
|
||||
} else if !response.disUnzip {
|
||||
var unCompressionBody io.ReadCloser
|
||||
unCompressionBody, err = tools.CompressionDecode(response.response.Body, response.ContentEncoding())
|
||||
|
||||
12
response.go
12
response.go
@@ -39,8 +39,8 @@ type Response struct {
|
||||
}
|
||||
|
||||
type Sse struct {
|
||||
reader *bufio.Reader
|
||||
closeFunc func()
|
||||
reader *bufio.Reader
|
||||
raw io.ReadCloser
|
||||
}
|
||||
type Event struct {
|
||||
Data string //data
|
||||
@@ -50,8 +50,8 @@ type Event struct {
|
||||
Comment string //comment info
|
||||
}
|
||||
|
||||
func newSse(rd io.Reader, closeFunc func()) *Sse {
|
||||
return &Sse{closeFunc: closeFunc, reader: bufio.NewReader(rd)}
|
||||
func newSse(rd io.ReadCloser) *Sse {
|
||||
return &Sse{raw: rd, reader: bufio.NewReader(rd)}
|
||||
}
|
||||
|
||||
// recv sse envent data
|
||||
@@ -95,8 +95,8 @@ func (obj *Sse) Recv() (Event, error) {
|
||||
}
|
||||
|
||||
// close sse
|
||||
func (obj *Sse) Close() {
|
||||
obj.closeFunc()
|
||||
func (obj *Sse) Close() error {
|
||||
return obj.raw.Close()
|
||||
}
|
||||
|
||||
// return websocket client
|
||||
|
||||
@@ -32,7 +32,7 @@ func TestOrderHeaders(t *testing.T) {
|
||||
t.Fatal("not found akamai")
|
||||
}
|
||||
i := -1
|
||||
// log.Print(header_order)
|
||||
log.Print(header_order)
|
||||
// log.Print(headers.Keys())
|
||||
kks := []string{}
|
||||
for _, kk := range headers.Keys() {
|
||||
|
||||
@@ -17,14 +17,14 @@ func TestWebSocket(t *testing.T) {
|
||||
defer response.CloseBody()
|
||||
wsCli := response.WebSocket()
|
||||
defer wsCli.Close()
|
||||
if err = wsCli.Send(nil, websocket.MessageText, "test"); err != nil { // Send text message
|
||||
if err = wsCli.WriteMessage(websocket.TextMessage, "test"); err != nil { // Send text message
|
||||
t.Error(err)
|
||||
}
|
||||
msgType, con, err := wsCli.Recv(nil) // Receive message
|
||||
msgType, con, err := wsCli.ReadMessage() // Receive message
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if msgType != websocket.MessageText {
|
||||
if msgType != websocket.TextMessage {
|
||||
t.Error("Message type is not text")
|
||||
}
|
||||
if string(con) != "test" {
|
||||
|
||||
Reference in New Issue
Block a user