diff --git a/data/src/main/java/org/cryptomator/data/cloud/s3/S3ClientFactory.java b/data/src/main/java/org/cryptomator/data/cloud/s3/S3ClientFactory.java index 2bef8dfe..383254ab 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/s3/S3ClientFactory.java +++ b/data/src/main/java/org/cryptomator/data/cloud/s3/S3ClientFactory.java @@ -2,7 +2,10 @@ package org.cryptomator.data.cloud.s3; import android.content.Context; +import com.amazonaws.Request; +import com.amazonaws.Response; import com.amazonaws.auth.BasicAWSCredentials; +import com.amazonaws.handlers.RequestHandler2; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; @@ -11,6 +14,8 @@ import com.amazonaws.services.s3.AmazonS3Client; import org.cryptomator.domain.S3Cloud; import org.cryptomator.util.crypto.CredentialCryptor; +import timber.log.Timber; + class S3ClientFactory { private AmazonS3 apiClient; @@ -38,13 +43,41 @@ class S3ClientFactory { client.setEndpoint(cloud.s3Endpoint()); } + client.addRequestHandler(new LoggingAwareRequestHandler()); + return client; } - private String decrypt(String password, Context context) { return CredentialCryptor // .getInstance(context) // .decrypt(password); } + + private static class LoggingAwareRequestHandler extends RequestHandler2 { + + @Override + public void beforeRequest(Request request) { + Timber.tag("S3Client").d("Sending request (%s) %s", request.getAWSRequestMetrics().getTimingInfo().getStartTimeNano(), request.toString()); + } + + @Override + public void afterResponse(Request request, Response response) { + Timber.tag("S3Client").d( // + "Response received (%s) with status %s (%s)", // + request.getAWSRequestMetrics().getTimingInfo().getStartTimeNano(), // + response.getHttpResponse().getStatusText(), // + response.getHttpResponse().getStatusCode()); + } + + @Override + public void afterError(Request request, Response response, Exception e) { + Timber.tag("S3Client").e( // + e, + "Error occurred (%s) with status %s (%s)", // + request.getAWSRequestMetrics().getTimingInfo().getStartTimeNano(), // + response.getHttpResponse().getStatusText(), // + response.getHttpResponse().getStatusCode()); + } + } }