github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/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 }