feat(cloudfront): serve POST, PUT, PATCH and DELETE viewer requests (#4229) #4
@@ -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) {
|
||||
getObjectMetadata(bucketName, key, versionId);
|
||||
String bucketOwnerAccount = resolveBucketEntry(bucketName)
|
||||
|
||||
Reference in New Issue
Block a user