in dth/client.go [525:559]
func (c *S3Client) ListParts(ctx context.Context, key, uploadID *string) (parts map[int]*Part) {
// log.Printf("S3> List Parts for %s - with upload ID %s\n", *key, *uploadID)
input := &s3.ListPartsInput{
Bucket: &c.bucket,
Key: key,
UploadId: uploadID,
MaxParts: 1000,
}
parts = make(map[int]*Part, 10000)
for {
output, err := c.client.ListParts(ctx, input)
if err != nil {
log.Printf("Failed to list parts for %s - %s\n", *key, err.Error())
break
}
for _, part := range output.Parts {
// log.Printf("Found Part %d - etag %s", part.PartNumber, *part.ETag)
etag := strings.Trim(*part.ETag, "\"")
parts[int(part.PartNumber)] = &Part{
partNumber: int(part.PartNumber),
etag: &etag,
}
}
if !output.IsTruncated {
break
}
input.PartNumberMarker = output.NextPartNumberMarker
}
log.Printf("Totally %d part(s) found for %s\n", len(parts), *key)
return
}