feat(cloudfront): serve POST, PUT, PATCH and DELETE viewer requests (#4229) #4

Merged
Zakaria merged 6 commits from feat/cloudfront-upstream-fixes into main 2026-10-24 18:38:32 +00:00
Showing only changes of commit 31196a0367 - Show all commits
@@ -1332,6 +1332,23 @@ public class S3Service implements Resettable, ResourceProvider {
} }
} }
/** An object's metadata together with an open stream of its body; the caller closes it. */
public record ObjectRead(S3Object object, InputStream body) implements java.io.Closeable {
@Override
public void close() throws IOException {
body.close();
}
}
/**
* Like {@link #getObject}, but the body is an open stream instead of a byte array, so a large
* object is served without being read into the heap.
*/
public ObjectRead openObject(String bucketName, String key, String versionId) {
S3Object object = getObjectMetadata(bucketName, key, versionId);
return new ObjectRead(object, openObjectStream(bucketName, key, versionId));
}
public InputStream openObjectStream(String bucketName, String key, String versionId) { public InputStream openObjectStream(String bucketName, String key, String versionId) {
getObjectMetadata(bucketName, key, versionId); getObjectMetadata(bucketName, key, versionId);
String bucketOwnerAccount = resolveBucketEntry(bucketName) String bucketOwnerAccount = resolveBucketEntry(bucketName)