StreamingSignV4Express - provides chunked upload signatureV4 support by implementing io.Reader.
(req *http.Request, accessKeyID, secretAccessKey, sessionToken, region string, dataLen int64, reqTime time.Time, sh256 md5simd.Hasher, )
| 299 | // StreamingSignV4Express - provides chunked upload signatureV4 support by |
| 300 | // implementing io.Reader. |
| 301 | func StreamingSignV4Express(req *http.Request, accessKeyID, secretAccessKey, sessionToken, |
| 302 | region string, dataLen int64, reqTime time.Time, sh256 md5simd.Hasher, |
| 303 | ) *http.Request { |
| 304 | // Set headers needed for streaming signature. |
| 305 | prepareStreamingRequest(req, sessionToken, dataLen, reqTime) |
| 306 | |
| 307 | if req.Body == nil { |
| 308 | req.Body = io.NopCloser(bytes.NewReader([]byte(""))) |
| 309 | } |
| 310 | |
| 311 | stReader := &StreamingReader{ |
| 312 | baseReadCloser: req.Body, |
| 313 | accessKeyID: accessKeyID, |
| 314 | secretAccessKey: secretAccessKey, |
| 315 | sessionToken: sessionToken, |
| 316 | region: region, |
| 317 | reqTime: reqTime, |
| 318 | chunkBuf: make([]byte, payloadChunkSize), |
| 319 | contentLen: dataLen, |
| 320 | chunkNum: 1, |
| 321 | totalChunks: int((dataLen+payloadChunkSize-1)/payloadChunkSize) + 1, |
| 322 | lastChunkSize: int(dataLen % payloadChunkSize), |
| 323 | sh256: sh256, |
| 324 | } |
| 325 | if len(req.Trailer) > 0 { |
| 326 | stReader.trailer = req.Trailer |
| 327 | // Remove... |
| 328 | req.Trailer = nil |
| 329 | } |
| 330 | |
| 331 | // Add the request headers required for chunk upload signing. |
| 332 | |
| 333 | // Compute the seed signature. |
| 334 | stReader.setSeedSignature(req) |
| 335 | |
| 336 | // Set the authorization header with the seed signature. |
| 337 | stReader.setStreamingAuthHeader(req, ServiceTypeS3Express) |
| 338 | |
| 339 | // Set seed signature as prevSignature for subsequent |
| 340 | // streaming signing process. |
| 341 | stReader.prevSignature = stReader.seedSignature |
| 342 | req.Body = stReader |
| 343 | |
| 344 | return req |
| 345 | } |
| 346 | |
| 347 | // StreamingSignV4 - provides chunked upload signatureV4 support by |
| 348 | // implementing io.Reader. |
no test coverage detected