From b6b3cd2d9b84c08041348202f78a3da3fa9cf929 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Fri, 30 Apr 2021 11:03:12 +0200 Subject: [PATCH] Implement S3 logging --- .../data/cloud/s3/S3ClientFactory.java | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) 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()); + } + } }