@@ -3,13 +3,15 @@ package storageconn
33import (
44 "encoding/json"
55 "fmt"
6+ "github.com/go-resty/resty/v2"
67 "io"
78 "mime"
89 "net/http"
910 "os"
1011 "path/filepath"
1112 "testing_system/common/config"
1213 "testing_system/common/connectors"
14+ "testing_system/lib/connector"
1315)
1416
1517type Connector struct {
@@ -31,9 +33,12 @@ func (s *Connector) Download(request *Request) *FileResponse {
3133 return response
3234 }
3335
34- path := "/storage/get"
3536 r := s .connection .R ()
3637
38+ if request .Ctx != nil {
39+ r .SetContext (request .Ctx )
40+ }
41+
3742 requestJSON , err := json .Marshal (request )
3843 if err != nil {
3944 response .Error = fmt .Errorf ("failed to form request to storage: %v" , err )
@@ -43,8 +48,9 @@ func (s *Connector) Download(request *Request) *FileResponse {
4348 r .SetQueryParams (map [string ]string {
4449 "request" : string (requestJSON ),
4550 })
51+ r .SetDoNotParseResponse (true )
4652
47- resp , err := r .SetDoNotParseResponse ( true ). Execute ( "GET" , path )
53+ resp , err := r .Get ( "/storage/get" )
4854 if err != nil {
4955 response .Error = fmt .Errorf ("failed to send request: %v" , err )
5056 return response
@@ -55,7 +61,15 @@ func (s *Connector) Download(request *Request) *FileResponse {
5561 if resp .StatusCode () == http .StatusNotFound {
5662 response .Error = ErrStorageFileNotFound
5763 } else {
58- response .Error = fmt .Errorf ("get request failed with status: %v" , resp .Status ())
64+ body , err := io .ReadAll (resp .RawBody ())
65+ if err != nil {
66+ response .Error = & connector.Error {
67+ Code : resp .StatusCode (),
68+ Message : err .Error (),
69+ Path : resp .Request .URL ,
70+ }
71+ }
72+ response .Error = connector .ParseRespError (body , resp )
5973 }
6074 return response
6175 }
@@ -107,8 +121,10 @@ func (s *Connector) Upload(request *Request) *Response {
107121 return response
108122 }
109123
110- path := "/storage/upload"
111124 r := s .connection .R ()
125+ if request .Ctx != nil {
126+ r .SetContext (request .Ctx )
127+ }
112128
113129 requestJSON , err := json .Marshal (request )
114130 if err != nil {
@@ -120,28 +136,24 @@ func (s *Connector) Upload(request *Request) *Response {
120136 "request" : string (requestJSON ),
121137 })
122138
123- // request.StorageFilename can be empty
124- r .SetFileReader ("file" , request .StorageFilename , request .File )
125-
126- resp , err := r .Post (path )
127- if err != nil {
128- response .Error = fmt .Errorf ("failed to send request: %v" , err )
129- return response
130- }
131-
132- if resp .IsError () {
133- response .Error = fmt .Errorf ("upload failed with status: %v" , resp .Status ())
134- return response
139+ requestFileName := request .StorageFilename
140+ // request.StorageFilename can be empty but http requires filename to be specified
141+ if requestFileName == "" {
142+ requestFileName = "noname"
135143 }
144+ r .SetFileReader ("file" , requestFileName , request .File )
136145
146+ response .Error = connector .ReceiveEmpty (r , "/storage/upload" , resty .MethodPost )
137147 return response
138148}
139149
140150func (s * Connector ) Delete (request * Request ) * Response {
141151 response := & Response {R : * request }
142152
143- path := "/storage/remove"
144153 r := s .connection .R ()
154+ if request .Ctx != nil {
155+ r .SetContext (request .Ctx )
156+ }
145157
146158 requestJSON , err := json .Marshal (request )
147159 if err != nil {
@@ -153,16 +165,7 @@ func (s *Connector) Delete(request *Request) *Response {
153165 "request" : string (requestJSON ),
154166 })
155167
156- resp , err := r .Delete (path )
157- if err != nil {
158- response .Error = fmt .Errorf ("failed to send request: %v" , err )
159- return response
160- }
161-
162- if resp .IsError () {
163- response .Error = fmt .Errorf ("delete failed with status: %v" , resp .Status ())
164- return response
165- }
168+ response .Error = connector .ReceiveEmpty (r , "/storage/remove" , resty .MethodDelete )
166169
167170 return response
168171}
0 commit comments