55package main
66
77import (
8- "bytes"
98 "context"
109 "flag"
1110 "fmt"
12- "io/ioutil"
1311 "log"
1412 "net/http"
1513 "net/http/httputil"
@@ -66,18 +64,29 @@ func main() {
6664}
6765
6866func uploadFile (path , url string ) error {
69- fileBytes , err := ioutil .ReadFile (path )
70- size := len (fileBytes )
71- log .Printf ("File has a size of %d bytes" , size )
67+ file , err := os .Open (path )
7268 if err != nil {
73- log .Println ("Failed to read file" )
74- log . Fatal ( err )
69+ log .Printf ("Failed to open file: %v" , err )
70+ return err
7571 }
76- req , err := http .NewRequest ("PUT" , url , bytes .NewReader (fileBytes ))
72+ defer file .Close ()
73+
74+ fileInfo , err := file .Stat ()
7775 if err != nil {
78- log .Fatal (err )
76+ log .Printf ("Failed to get file stats: %v" , err )
77+ return err
78+ }
79+ size := fileInfo .Size ()
80+ log .Printf ("Scan result file has a size of %d bytes" , size )
81+
82+ // Create a new file upload request
83+ req , err := http .NewRequest ("PUT" , url , file )
84+ if err != nil {
85+ log .Fatalf ("Failed to create request: %v" , err )
86+ return err
7987 }
8088
89+ req .ContentLength = size
8190 client := & http.Client {}
8291
8392 res , err := client .Do (req )
@@ -86,22 +95,24 @@ func uploadFile(path, url string) error {
8695 }
8796 defer res .Body .Close ()
8897
89- if res .StatusCode < 300 {
98+ // Check the response status code
99+ if res .StatusCode >= 200 && res .StatusCode < 300 {
90100 // all good
91101 return nil
92102 }
93103
94104 log .Printf ("File upload returned non 2xx status code (%d)" , res .StatusCode )
95105
96- bytes , err := httputil .DumpResponse (res , true )
106+ // Dump response for debugging purposes
107+ resultBytes , err := httputil .DumpResponse (res , true )
97108 if err != nil {
98109 log .Fatal (errors .Wrap (err , "Failed to dump out failed requests to upload scan report to the s3 bucket" ))
99110 }
100111
101- log .Println ("Failed Request:" )
102- log .Println (string (bytes ))
112+ log .Println ("Response of Failed Request:" )
113+ log .Println (string (resultBytes ))
103114
104- return fmt .Errorf ("Lurker failed to upload scan result file. File upload returned non 2xx status code (%d)" , res .StatusCode )
115+ return fmt .Errorf ("lurker failed to upload scan result file. File upload returned non 2xx status code (%d)" , res .StatusCode )
105116}
106117
107118func waitForMainContainerToEnd (container , pod , namespace string ) {
0 commit comments