@@ -62,10 +62,14 @@ func NewHttpRequest(method, rawURL string) (*HttpRequest, error) {
6262}
6363
6464// ToStdRequest converts HttpRequest to a standard http.Request for signing.
65- func (r * HttpRequest ) ToStdRequest () * http.Request {
66- req , _ := http .NewRequest (r .Method , r .URL .String (), bytes .NewReader (r .Body ))
65+ // Returns nil if the request cannot be created (invalid method or URL).
66+ func (r * HttpRequest ) ToStdRequest () (* http.Request , error ) {
67+ req , err := http .NewRequest (r .Method , r .URL .String (), bytes .NewReader (r .Body ))
68+ if err != nil {
69+ return nil , err
70+ }
6771 req .Header = r .Headers
68- return req
72+ return req , nil
6973}
7074
7175// PayloadHash returns the SHA256 hash of the request body for SigV4 signing.
@@ -184,7 +188,11 @@ func (c *httpConnection) executeAndStream(data []byte, rs ResultSet) {
184188 rs .setError (err )
185189 return
186190 }
187- defer resp .Body .Close ()
191+ defer func () {
192+ if err := resp .Body .Close (); err != nil {
193+ c .logHandler .logf (Debug , failedToCloseResponseBody , err .Error ())
194+ }
195+ }()
188196
189197 reader , zlibReader , err := c .getReader (resp )
190198 if err != nil {
@@ -193,7 +201,11 @@ func (c *httpConnection) executeAndStream(data []byte, rs ResultSet) {
193201 return
194202 }
195203 if zlibReader != nil {
196- defer zlibReader .Close ()
204+ defer func () {
205+ if err := zlibReader .Close (); err != nil {
206+ c .logHandler .logf (Debug , failedToCloseDecompReader , err .Error ())
207+ }
208+ }()
197209 }
198210
199211 c .streamToResultSet (reader , rs )
@@ -224,8 +236,8 @@ func (c *httpConnection) getReader(resp *http.Response) (io.Reader, io.Closer, e
224236}
225237
226238func (c * httpConnection ) streamToResultSet (reader io.Reader , rs ResultSet ) {
227- d := newStreamingDeserializer (reader )
228- if err := d .readHeader (); err != nil {
239+ d := NewStreamingDeserializer (reader )
240+ if err := d .ReadHeader (); err != nil {
229241 if err != io .EOF {
230242 c .logHandler .logf (Error , failedToReceiveResponse , err .Error ())
231243 rs .setError (err )
@@ -234,7 +246,7 @@ func (c *httpConnection) streamToResultSet(reader io.Reader, rs ResultSet) {
234246 }
235247
236248 for {
237- obj , err := d .readFullyQualified ()
249+ obj , err := d .ReadFullyQualified ()
238250 if err != nil {
239251 if err != io .EOF {
240252 c .logHandler .logf (Error , failedToReceiveResponse , err .Error ())
@@ -244,7 +256,7 @@ func (c *httpConnection) streamToResultSet(reader io.Reader, rs ResultSet) {
244256 }
245257
246258 if marker , ok := obj .(Marker ); ok && marker == EndOfStream () {
247- code , msg , _ , err := d .readStatus ()
259+ code , msg , _ , err := d .ReadStatus ()
248260 if err != nil {
249261 c .logHandler .logf (Error , failedToReceiveResponse , err .Error ())
250262 rs .setError (err )
0 commit comments