mirror of https://github.com/gofiber/fiber.git
👷 Remove custom request and export agent request
parent
a2eab0d754
commit
bc9651d58b
51
client.go
51
client.go
|
@ -141,6 +141,7 @@ func (c *Client) createAgent(method, url string) *Agent {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Agent is an object storing all request data for client.
|
// Agent is an object storing all request data for client.
|
||||||
|
// Agent instance MUST NOT be used from concurrently running goroutines.
|
||||||
type Agent struct {
|
type Agent struct {
|
||||||
// Name is used in User-Agent request header.
|
// Name is used in User-Agent request header.
|
||||||
Name string
|
Name string
|
||||||
|
@ -152,7 +153,6 @@ type Agent struct {
|
||||||
*fasthttp.HostClient
|
*fasthttp.HostClient
|
||||||
|
|
||||||
req *Request
|
req *Request
|
||||||
customReq *Request
|
|
||||||
args *Args
|
args *Args
|
||||||
timeout time.Duration
|
timeout time.Duration
|
||||||
errs []error
|
errs []error
|
||||||
|
@ -174,12 +174,7 @@ func (a *Agent) Parse() error {
|
||||||
}
|
}
|
||||||
a.parsed = true
|
a.parsed = true
|
||||||
|
|
||||||
req := a.req
|
uri := a.req.URI()
|
||||||
if a.customReq != nil {
|
|
||||||
req = a.customReq
|
|
||||||
}
|
|
||||||
|
|
||||||
uri := req.URI()
|
|
||||||
|
|
||||||
isTLS := false
|
isTLS := false
|
||||||
scheme := uri.Scheme()
|
scheme := uri.Scheme()
|
||||||
|
@ -465,13 +460,6 @@ func (a *Agent) BodyStream(bodyStream io.Reader, bodySize int) *Agent {
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
// Request sets custom request for createAgent.
|
|
||||||
func (a *Agent) Request(req *Request) *Agent {
|
|
||||||
a.customReq = req
|
|
||||||
|
|
||||||
return a
|
|
||||||
}
|
|
||||||
|
|
||||||
// JSON sends a JSON request.
|
// JSON sends a JSON request.
|
||||||
func (a *Agent) JSON(v interface{}) *Agent {
|
func (a *Agent) JSON(v interface{}) *Agent {
|
||||||
if a.jsonEncoder == nil {
|
if a.jsonEncoder == nil {
|
||||||
|
@ -703,6 +691,11 @@ func (a *Agent) JSONDecoder(jsonDecoder utils.JSONUnmarshal) *Agent {
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Request returns Agent request instance.
|
||||||
|
func (a *Agent) Request() *Request {
|
||||||
|
return a.req
|
||||||
|
}
|
||||||
|
|
||||||
/************************** End Agent Setting **************************/
|
/************************** End Agent Setting **************************/
|
||||||
|
|
||||||
// Bytes returns the status code, bytes body and errors of url.
|
// Bytes returns the status code, bytes body and errors of url.
|
||||||
|
@ -717,9 +710,6 @@ func (a *Agent) Bytes(customResp ...*Response) (code int, body []byte, errs []er
|
||||||
}
|
}
|
||||||
|
|
||||||
req := a.req
|
req := a.req
|
||||||
if a.customReq != nil {
|
|
||||||
req = a.customReq
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
resp *Response
|
resp *Response
|
||||||
|
@ -816,7 +806,6 @@ func (a *Agent) release() {
|
||||||
func (a *Agent) reset() {
|
func (a *Agent) reset() {
|
||||||
a.HostClient = nil
|
a.HostClient = nil
|
||||||
a.req.Reset()
|
a.req.Reset()
|
||||||
a.customReq = nil
|
|
||||||
a.timeout = 0
|
a.timeout = 0
|
||||||
a.args = nil
|
a.args = nil
|
||||||
a.errs = a.errs[:0]
|
a.errs = a.errs[:0]
|
||||||
|
@ -878,7 +867,7 @@ func ReleaseClient(c *Client) {
|
||||||
func AcquireAgent() *Agent {
|
func AcquireAgent() *Agent {
|
||||||
v := agentPool.Get()
|
v := agentPool.Get()
|
||||||
if v == nil {
|
if v == nil {
|
||||||
return &Agent{req: fasthttp.AcquireRequest()}
|
return &Agent{req: &Request{}}
|
||||||
}
|
}
|
||||||
return v.(*Agent)
|
return v.(*Agent)
|
||||||
}
|
}
|
||||||
|
@ -892,30 +881,6 @@ func ReleaseAgent(a *Agent) {
|
||||||
agentPool.Put(a)
|
agentPool.Put(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AcquireRequest returns an empty Request instance from request pool.
|
|
||||||
//
|
|
||||||
// The returned Request instance may be passed to ReleaseRequest when it is
|
|
||||||
// no longer needed. This allows Request recycling, reduces GC pressure
|
|
||||||
// and usually improves performance.
|
|
||||||
// Copy from fasthttp
|
|
||||||
func AcquireRequest() *Request {
|
|
||||||
v := requestPool.Get()
|
|
||||||
if v == nil {
|
|
||||||
return &Request{}
|
|
||||||
}
|
|
||||||
return v.(*Request)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReleaseRequest returns req acquired via AcquireRequest to request pool.
|
|
||||||
//
|
|
||||||
// It is forbidden accessing req and/or its' members after returning
|
|
||||||
// it to request pool.
|
|
||||||
// Copy from fasthttp
|
|
||||||
func ReleaseRequest(req *Request) {
|
|
||||||
req.Reset()
|
|
||||||
requestPool.Put(req)
|
|
||||||
}
|
|
||||||
|
|
||||||
// AcquireResponse returns an empty Response instance from response pool.
|
// AcquireResponse returns an empty Response instance from response pool.
|
||||||
//
|
//
|
||||||
// The returned Response instance may be passed to ReleaseResponse when it is
|
// The returned Response instance may be passed to ReleaseResponse when it is
|
||||||
|
|
|
@ -480,7 +480,7 @@ func Test_Client_Agent_BodyStream(t *testing.T) {
|
||||||
testAgent(t, handler, wrapAgent, "body stream")
|
testAgent(t, handler, wrapAgent, "body stream")
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_Client_Agent_Custom_Request_And_Response(t *testing.T) {
|
func Test_Client_Agent_Custom_Response(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
ln := fasthttputil.NewInmemoryListener()
|
ln := fasthttputil.NewInmemoryListener()
|
||||||
|
@ -495,12 +495,11 @@ func Test_Client_Agent_Custom_Request_And_Response(t *testing.T) {
|
||||||
|
|
||||||
for i := 0; i < 5; i++ {
|
for i := 0; i < 5; i++ {
|
||||||
a := AcquireAgent()
|
a := AcquireAgent()
|
||||||
req := AcquireRequest()
|
|
||||||
resp := AcquireResponse()
|
resp := AcquireResponse()
|
||||||
|
|
||||||
|
req := a.Request()
|
||||||
req.Header.SetMethod(MethodGet)
|
req.Header.SetMethod(MethodGet)
|
||||||
req.SetRequestURI("http://example.com")
|
req.SetRequestURI("http://example.com")
|
||||||
a.Request(req)
|
|
||||||
|
|
||||||
utils.AssertEqual(t, nil, a.Parse())
|
utils.AssertEqual(t, nil, a.Parse())
|
||||||
|
|
||||||
|
@ -513,7 +512,6 @@ func Test_Client_Agent_Custom_Request_And_Response(t *testing.T) {
|
||||||
utils.AssertEqual(t, "custom", string(resp.Body()))
|
utils.AssertEqual(t, "custom", string(resp.Body()))
|
||||||
utils.AssertEqual(t, 0, len(errs))
|
utils.AssertEqual(t, 0, len(errs))
|
||||||
|
|
||||||
ReleaseRequest(req)
|
|
||||||
ReleaseResponse(resp)
|
ReleaseResponse(resp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue