diff --git a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java
index 70a9a37..fad6b6d 100644
--- a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java
+++ b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java
@@ -29,6 +29,7 @@ import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import com.google.common.hash.HashCode;
@@ -64,6 +65,7 @@ final class S3ProxyHandler extends AbstractHandler {
"75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a";
private static final String FAKE_OWNER_DISPLAY_NAME =
"CustomersName@amazon.com";
+ private static final String FAKE_REQUEST_ID = "4442587FB7D0A2F9";
private final BlobStore blobStore;
S3ProxyHandler(BlobStore blobStore) {
@@ -255,25 +257,12 @@ final class S3ProxyHandler extends AbstractHandler {
if (blobStore.createContainerInLocation(location, containerName)) {
return;
}
- try (Writer writer = response.getWriter()) {
- response.setStatus(HttpServletResponse.SC_CONFLICT);
- writer.write("\r\n" +
- "\r\n" +
- " BucketAlreadyOwnedByYou
\r\n" +
- " Your previous request to create the named bucket succeeded and you already own it.\r\n" +
- " ");
- writer.write(containerName);
- writer.write("\r\n" +
- // TODO: RequestId
- " 4442587FB7D0A2F9\r\n" +
- "\r\n");
- writer.flush();
- } catch (IOException ioe) {
- logger.error("Error writing to client: {}",
- ioe.getMessage());
- response.setStatus(
- HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
+ sendSimpleErrorResponse(response, HttpServletResponse.SC_CONFLICT,
+ "BucketAlreadyOwnedByYou",
+ "Your previous request to create the named bucket" +
+ " succeeded and you already own it.",
+ Optional.of(" " + containerName +
+ "\r\n"));
} catch (RuntimeException re) {
logger.error("Error creating container: {}", re.getMessage());
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@@ -548,4 +537,29 @@ final class S3ProxyHandler extends AbstractHandler {
entry.getValue());
}
}
+
+ private static void sendSimpleErrorResponse(HttpServletResponse response,
+ int status, String code, String message, Optional extra) {
+ try (Writer writer = response.getWriter()) {
+ response.setStatus(status);
+ writer.write("\r\n" +
+ "\r\n" +
+ " ");
+ writer.write(code);
+ writer.write("
\r\n" +
+ " ");
+ writer.write(message);
+ writer.write("\r\n");
+ if (extra.isPresent()) {
+ writer.write(extra.get());
+ }
+ writer.write(" " + FAKE_REQUEST_ID +
+ "\r\n" +
+ "\r\n");
+ writer.flush();
+ } catch (IOException ioe) {
+ logger.error("Error writing to client: {}",
+ ioe.getMessage());
+ }
+ }
}