feat: implement cross-protocol checksum verification for file transfers

This commit is contained in:
2026-06-09 14:38:46 +01:00
parent 715c4eccb6
commit 93ad8c9321
13 changed files with 171 additions and 14 deletions
+25
View File
@@ -307,3 +307,28 @@ func (e *S3Explorer) WriteFile(path string, r io.Reader, size int64) error {
})
return err
}
func (e *S3Explorer) Checksum(path string) (string, error) {
bucket, subpath, _, err := e.getBucketAndPath(path)
if err != nil {
return "", err
}
if subpath == "" {
return "", fmt.Errorf("cannot calculate checksum of bucket")
}
input := &s3.HeadObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(subpath),
}
head, err := e.client.HeadObject(context.TODO(), input)
if err != nil {
return "", err
}
if head.ETag != nil {
return strings.Trim(*head.ETag, "\""), nil
}
return "", fmt.Errorf("no etag found")
}