func()

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
}