44 "bytes"
55 "crypto/tls"
66 "encoding/json"
7- "errors"
87 "fmt"
9- "github.com/threatwinds/go-sdk/catcher"
108 "io"
119 "net/http"
1210 "os"
@@ -38,16 +36,12 @@ func DoReq[response any](url string, data []byte, method string, headers map[str
3836 var result response
3937
4038 if len (data ) > maxMessageSize {
41- return result , http .StatusBadRequest , catcher .Error ("cannot convert to object" ,
42- errors .New ("data size exceeds limit" ), map [string ]any {
43- "size" : fmt .Sprintf ("%d bytes" , len (data )),
44- "limit" : fmt .Sprintf ("%d bytes" , maxMessageSize ),
45- })
39+ return result , http .StatusBadRequest , fmt .Errorf ("cannot convert to object: data size exceeds limit (size=%d bytes, limit=%d bytes)" , len (data ), maxMessageSize )
4640 }
4741
4842 req , err := http .NewRequest (method , url , bytes .NewBuffer (data ))
4943 if err != nil {
50- return result , http .StatusInternalServerError , catcher . Error ("error creating request" , err , nil )
44+ return result , http .StatusInternalServerError , fmt . Errorf ("error creating request: %w " , err )
5145 }
5246
5347 for k , v := range headers {
@@ -67,21 +61,18 @@ func DoReq[response any](url string, data []byte, method string, headers map[str
6761
6862 resp , err := client .Do (req )
6963 if err != nil {
70- return result , http .StatusInternalServerError , catcher . Error ("error doing request" , err , nil )
64+ return result , http .StatusInternalServerError , fmt . Errorf ("error doing request: %w " , err )
7165 }
7266
7367 defer func () { _ = resp .Body .Close () }()
7468
7569 body , err := io .ReadAll (resp .Body )
7670 if err != nil {
77- return result , http .StatusInternalServerError , catcher . Error ("error reading response body" , err , nil )
71+ return result , http .StatusInternalServerError , fmt . Errorf ("error reading response body: %w " , err )
7872 }
7973
8074 if resp .StatusCode >= 400 {
81- return result , resp .StatusCode , catcher .Error ("error response" , nil , map [string ]interface {}{
82- "response" : string (body ),
83- "status" : resp .StatusCode ,
84- })
75+ return result , resp .StatusCode , fmt .Errorf ("error response (status=%d): %s" , resp .StatusCode , string (body ))
8576 }
8677
8778 if resp .StatusCode == http .StatusNoContent {
@@ -90,7 +81,7 @@ func DoReq[response any](url string, data []byte, method string, headers map[str
9081
9182 err = json .Unmarshal (body , & result )
9283 if err != nil {
93- return result , resp .StatusCode , catcher . Error ("error parsing response" , err , nil )
84+ return result , resp .StatusCode , fmt . Errorf ("error parsing response: %w " , err )
9485 }
9586
9687 return result , resp .StatusCode , nil
@@ -108,7 +99,7 @@ func DoReq[response any](url string, data []byte, method string, headers map[str
10899func Download (url , file string ) error {
109100 out , err := os .Create (file )
110101 if err != nil {
111- return catcher . Error ("error creating file" , err , map [ string ] interface {}{ "file" : file } )
102+ return fmt . Errorf ("error creating file %s: %w" , file , err )
112103 }
113104
114105 defer func () { _ = out .Close () }()
@@ -125,14 +116,14 @@ func Download(url, file string) error {
125116
126117 resp , err := client .Get (url )
127118 if err != nil {
128- return catcher . Error ("error downloading file" , err , map [ string ] any { "url" : url } )
119+ return fmt . Errorf ("error downloading file from %s: %w" , url , err )
129120 }
130121
131122 defer func () { _ = resp .Body .Close () }()
132123
133124 _ , err = io .Copy (out , resp .Body )
134125 if err != nil {
135- return catcher . Error ("error saving file" , err , map [ string ] any { "file" : file } )
126+ return fmt . Errorf ("error saving file %s: %w" , file , err )
136127 }
137128
138129 return nil
0 commit comments