@@ -62,13 +62,12 @@ func (e *RateLimitedError) Retryable() bool {
62
62
return true
63
63
}
64
64
65
- func fileUploadReq (ctx context.Context , path string , values url. Values , r io.Reader ) (* http.Request , error ) {
65
+ func fileUploadReq (ctx context.Context , path string , r io.Reader ) (* http.Request , error ) {
66
66
req , err := http .NewRequestWithContext (ctx , http .MethodPost , path , r )
67
67
if err != nil {
68
68
return nil , err
69
69
}
70
70
71
- req .URL .RawQuery = values .Encode ()
72
71
return req , nil
73
72
}
74
73
@@ -155,9 +154,16 @@ func postLocalWithMultipartResponse(ctx context.Context, client httpClient, meth
155
154
func postWithMultipartResponse (ctx context.Context , client httpClient , path , name , fieldname , token string , values url.Values , r io.Reader , intf interface {}, d Debug ) error {
156
155
pipeReader , pipeWriter := io .Pipe ()
157
156
wr := multipart .NewWriter (pipeWriter )
157
+
158
158
errc := make (chan error )
159
159
go func () {
160
160
defer pipeWriter .Close ()
161
+ defer wr .Close ()
162
+ err := createFormFields (wr , values )
163
+ if err != nil {
164
+ errc <- err
165
+ return
166
+ }
161
167
ioWriter , err := wr .CreateFormFile (fieldname , name )
162
168
if err != nil {
163
169
errc <- err
@@ -173,7 +179,8 @@ func postWithMultipartResponse(ctx context.Context, client httpClient, path, nam
173
179
return
174
180
}
175
181
}()
176
- req , err := fileUploadReq (ctx , path , values , pipeReader )
182
+
183
+ req , err := fileUploadReq (ctx , path , pipeReader )
177
184
if err != nil {
178
185
return err
179
186
}
@@ -199,6 +206,20 @@ func postWithMultipartResponse(ctx context.Context, client httpClient, path, nam
199
206
}
200
207
}
201
208
209
+ func createFormFields (mw * multipart.Writer , values url.Values ) error {
210
+ for key , value := range values {
211
+ writer , err := mw .CreateFormField (key )
212
+ if err != nil {
213
+ return err
214
+ }
215
+ _ , err = writer .Write ([]byte (value [0 ]))
216
+ if err != nil {
217
+ return err
218
+ }
219
+ }
220
+ return nil
221
+ }
222
+
202
223
func doPost (ctx context.Context , client httpClient , req * http.Request , parser responseParser , d Debug ) error {
203
224
resp , err := client .Do (req )
204
225
if err != nil {
0 commit comments