github.com/altipla-consulting/ravendb-go-client@v0.1.3/http.go (about)

     1  package ravendb
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"io"
     7  	"net/http"
     8  	"net/url"
     9  )
    10  
    11  var ()
    12  
    13  func urlEncode(s string) string {
    14  	return url.PathEscape(s)
    15  }
    16  
    17  func addChangeVectorIfNotNull(changeVector *string, req *http.Request) {
    18  	if changeVector != nil {
    19  		req.Header.Add("If-Match", fmt.Sprintf(`"%s"`, *changeVector))
    20  	}
    21  }
    22  
    23  func addCommonHeaders(req *http.Request) {
    24  	req.Header.Add("User-Agent", "ravendb-go-client/4.0.0")
    25  }
    26  
    27  func newHttpHead(uri string) (*http.Request, error) {
    28  	req, err := http.NewRequest(http.MethodHead, uri, nil)
    29  	if err != nil {
    30  		return nil, err
    31  	}
    32  	addCommonHeaders(req)
    33  	return req, nil
    34  }
    35  
    36  func newHttpGet(uri string) (*http.Request, error) {
    37  	req, err := http.NewRequest(http.MethodGet, uri, nil)
    38  	if err != nil {
    39  		return nil, err
    40  	}
    41  	addCommonHeaders(req)
    42  	return req, nil
    43  }
    44  
    45  func newHttpReset(uri string) (*http.Request, error) {
    46  	req, err := http.NewRequest("RESET", uri, nil)
    47  	if err != nil {
    48  		return nil, err
    49  	}
    50  	addCommonHeaders(req)
    51  	return req, nil
    52  }
    53  
    54  func newHttpPostReader(uri string, r io.Reader) (*http.Request, error) {
    55  	req, err := http.NewRequest(http.MethodPost, uri, r)
    56  	if err != nil {
    57  		return nil, err
    58  	}
    59  	addCommonHeaders(req)
    60  	return req, nil
    61  }
    62  
    63  func newHttpPost(uri string, data []byte) (*http.Request, error) {
    64  	var body io.Reader
    65  	if len(data) > 0 {
    66  		body = bytes.NewReader(data)
    67  	}
    68  	req, err := http.NewRequest(http.MethodPost, uri, body)
    69  	if err != nil {
    70  		return nil, err
    71  	}
    72  	addCommonHeaders(req)
    73  	if len(data) > 0 {
    74  		req.Header.Add("Content-Type", "application/json; charset=UTF-8")
    75  	}
    76  	return req, nil
    77  }
    78  
    79  func newHttpPut(uri string, data []byte) (*http.Request, error) {
    80  	var body io.Reader
    81  	if len(data) > 0 {
    82  		body = bytes.NewReader(data)
    83  	}
    84  	req, err := http.NewRequest(http.MethodPut, uri, body)
    85  	if err != nil {
    86  		return nil, err
    87  	}
    88  	addCommonHeaders(req)
    89  	if len(data) > 0 {
    90  		req.Header.Add("Content-Type", "application/json; charset=UTF-8")
    91  	}
    92  	return req, nil
    93  }
    94  
    95  func newHttpPutReader(uri string, body io.Reader) (*http.Request, error) {
    96  	req, err := http.NewRequest(http.MethodPut, uri, body)
    97  	if err != nil {
    98  		return nil, err
    99  	}
   100  	addCommonHeaders(req)
   101  	return req, nil
   102  }
   103  
   104  func newHttpPatch(uri string, data []byte) (*http.Request, error) {
   105  	var body io.Reader
   106  	if len(data) > 0 {
   107  		body = bytes.NewReader(data)
   108  	}
   109  	req, err := http.NewRequest(http.MethodPatch, uri, body)
   110  	if err != nil {
   111  		return nil, err
   112  	}
   113  	addCommonHeaders(req)
   114  	if len(data) > 0 {
   115  		req.Header.Add("Content-Type", "application/json; charset=UTF-8")
   116  	}
   117  	return req, nil
   118  }
   119  
   120  func newHttpDelete(uri string, data []byte) (*http.Request, error) {
   121  	var body io.Reader
   122  	if len(data) > 0 {
   123  		body = bytes.NewReader(data)
   124  	}
   125  	req, err := http.NewRequest(http.MethodDelete, uri, body)
   126  	if err != nil {
   127  		return nil, err
   128  	}
   129  	addCommonHeaders(req)
   130  	req.Header.Add("Content-Type", "application/json; charset=UTF-8")
   131  	return req, nil
   132  }