@@ -3,10 +3,12 @@ package reporter
3
3
import (
4
4
"bytes"
5
5
"encoding/json"
6
+ "io"
6
7
"net/http"
7
8
8
- "github.com/future-architect/vuls/models"
9
9
"golang.org/x/xerrors"
10
+
11
+ "github.com/future-architect/vuls/models"
10
12
)
11
13
12
14
// HTTPRequestWriter writes results to HTTP request
@@ -19,11 +21,20 @@ func (w HTTPRequestWriter) Write(rs ...models.ScanResult) (err error) {
19
21
for _ , r := range rs {
20
22
b := new (bytes.Buffer )
21
23
if err := json .NewEncoder (b ).Encode (r ); err != nil {
22
- return err
24
+ return xerrors . Errorf ( "Failed to encode scan result. err: %w" , err )
23
25
}
24
- _ , err = http .Post (w .URL , "application/json; charset=utf-8" , b )
26
+
27
+ resp , err := http .Post (w .URL , "application/json; charset=utf-8" , b )
25
28
if err != nil {
26
- return err
29
+ return xerrors .Errorf ("Failed to post request. err: %w" , err )
30
+ }
31
+ if resp .StatusCode != http .StatusOK {
32
+ return xerrors .Errorf ("Failed to post request. err: error request response with status code %d" , resp .StatusCode )
33
+ }
34
+ defer resp .Body .Close ()
35
+
36
+ if _ , err := io .Copy (io .Discard , resp .Body ); err != nil {
37
+ return xerrors .Errorf ("Failed to discard response body. err: %w" , err )
27
38
}
28
39
}
29
40
return nil
@@ -41,7 +52,10 @@ func (w HTTPResponseWriter) Write(rs ...models.ScanResult) (err error) {
41
52
return xerrors .Errorf ("Failed to marshal scan results: %w" , err )
42
53
}
43
54
w .Writer .Header ().Set ("Content-Type" , "application/json" )
44
- _ , err = w .Writer .Write (res )
45
55
46
- return err
56
+ if _ , err = w .Writer .Write (res ); err != nil {
57
+ return xerrors .Errorf ("Failed to write response. err: %w" , err )
58
+ }
59
+
60
+ return nil
47
61
}
0 commit comments