github.com/wangyougui/gf/v2@v2.6.5/net/gclient/gclient_bytes.go (about)

     1  // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
     2  //
     3  // This Source Code Form is subject to the terms of the MIT License.
     4  // If a copy of the MIT was not distributed with this file,
     5  // You can obtain one at https://github.com/wangyougui/gf.
     6  
     7  package gclient
     8  
     9  import (
    10  	"context"
    11  	"net/http"
    12  
    13  	"github.com/wangyougui/gf/v2/internal/intlog"
    14  )
    15  
    16  // GetBytes sends a GET request, retrieves and returns the result content as bytes.
    17  func (c *Client) GetBytes(ctx context.Context, url string, data ...interface{}) []byte {
    18  	return c.RequestBytes(ctx, http.MethodGet, url, data...)
    19  }
    20  
    21  // PutBytes sends a PUT request, retrieves and returns the result content as bytes.
    22  func (c *Client) PutBytes(ctx context.Context, url string, data ...interface{}) []byte {
    23  	return c.RequestBytes(ctx, http.MethodPut, url, data...)
    24  }
    25  
    26  // PostBytes sends a POST request, retrieves and returns the result content as bytes.
    27  func (c *Client) PostBytes(ctx context.Context, url string, data ...interface{}) []byte {
    28  	return c.RequestBytes(ctx, http.MethodPost, url, data...)
    29  }
    30  
    31  // DeleteBytes sends a DELETE request, retrieves and returns the result content as bytes.
    32  func (c *Client) DeleteBytes(ctx context.Context, url string, data ...interface{}) []byte {
    33  	return c.RequestBytes(ctx, http.MethodDelete, url, data...)
    34  }
    35  
    36  // HeadBytes sends a HEAD request, retrieves and returns the result content as bytes.
    37  func (c *Client) HeadBytes(ctx context.Context, url string, data ...interface{}) []byte {
    38  	return c.RequestBytes(ctx, http.MethodHead, url, data...)
    39  }
    40  
    41  // PatchBytes sends a PATCH request, retrieves and returns the result content as bytes.
    42  func (c *Client) PatchBytes(ctx context.Context, url string, data ...interface{}) []byte {
    43  	return c.RequestBytes(ctx, http.MethodPatch, url, data...)
    44  }
    45  
    46  // ConnectBytes sends a CONNECT request, retrieves and returns the result content as bytes.
    47  func (c *Client) ConnectBytes(ctx context.Context, url string, data ...interface{}) []byte {
    48  	return c.RequestBytes(ctx, http.MethodConnect, url, data...)
    49  }
    50  
    51  // OptionsBytes sends an OPTIONS request, retrieves and returns the result content as bytes.
    52  func (c *Client) OptionsBytes(ctx context.Context, url string, data ...interface{}) []byte {
    53  	return c.RequestBytes(ctx, http.MethodOptions, url, data...)
    54  }
    55  
    56  // TraceBytes sends a TRACE request, retrieves and returns the result content as bytes.
    57  func (c *Client) TraceBytes(ctx context.Context, url string, data ...interface{}) []byte {
    58  	return c.RequestBytes(ctx, http.MethodTrace, url, data...)
    59  }
    60  
    61  // RequestBytes sends request using given HTTP method and data, retrieves returns the result
    62  // as bytes. It reads and closes the response object internally automatically.
    63  func (c *Client) RequestBytes(ctx context.Context, method string, url string, data ...interface{}) []byte {
    64  	response, err := c.DoRequest(ctx, method, url, data...)
    65  	if err != nil {
    66  		intlog.Errorf(ctx, `%+v`, err)
    67  		return nil
    68  	}
    69  	defer func() {
    70  		if err = response.Close(); err != nil {
    71  			intlog.Errorf(ctx, `%+v`, err)
    72  		}
    73  	}()
    74  	return response.ReadAll()
    75  }