aboutsummaryrefslogtreecommitdiff
path: root/juick-server/src/main/java/com/juick/server/configuration
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2018-11-01 13:29:29 +0300
committerGravatar Vitaly Takmazov2018-11-01 13:29:29 +0300
commit2b9d2478833a060df76c855e78c46e33c032db49 (patch)
treea516cb597704529cf1de623eb807d219a5510d49 /juick-server/src/main/java/com/juick/server/configuration
parent0dc2727e0633a4b865d814c7ab8450e3c815e511 (diff)
ActivityPub: fix 410 error handler
Diffstat (limited to 'juick-server/src/main/java/com/juick/server/configuration')
-rw-r--r--juick-server/src/main/java/com/juick/server/configuration/ActivityPubClientConfig.java3
-rw-r--r--juick-server/src/main/java/com/juick/server/configuration/ActivityPubClientErrorHandler.java35
2 files changed, 36 insertions, 2 deletions
diff --git a/juick-server/src/main/java/com/juick/server/configuration/ActivityPubClientConfig.java b/juick-server/src/main/java/com/juick/server/configuration/ActivityPubClientConfig.java
index 0e8eaf02..ad26582a 100644
--- a/juick-server/src/main/java/com/juick/server/configuration/ActivityPubClientConfig.java
+++ b/juick-server/src/main/java/com/juick/server/configuration/ActivityPubClientConfig.java
@@ -1,6 +1,5 @@
package com.juick.server.configuration;
-import com.juick.server.ActivityPubManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
@@ -13,7 +12,7 @@ public class ActivityPubClientConfig {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setOutputStreaming(false);
RestTemplate restTemplate = new RestTemplate(requestFactory);
- restTemplate.setErrorHandler(new ActivityPubManager.ErrorHandler());
+ restTemplate.setErrorHandler(new ActivityPubClientErrorHandler());
return restTemplate;
}
} \ No newline at end of file
diff --git a/juick-server/src/main/java/com/juick/server/configuration/ActivityPubClientErrorHandler.java b/juick-server/src/main/java/com/juick/server/configuration/ActivityPubClientErrorHandler.java
new file mode 100644
index 00000000..ad8e9b2f
--- /dev/null
+++ b/juick-server/src/main/java/com/juick/server/configuration/ActivityPubClientErrorHandler.java
@@ -0,0 +1,35 @@
+package com.juick.server.configuration;
+
+import com.juick.service.activities.DeleteUserEvent;
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.client.ClientHttpResponse;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.DefaultResponseErrorHandler;
+
+import javax.annotation.Nonnull;
+import javax.inject.Inject;
+import java.io.IOException;
+import java.net.URI;
+import java.nio.charset.StandardCharsets;
+
+@Component
+public class ActivityPubClientErrorHandler extends DefaultResponseErrorHandler {
+ private static final Logger logger = LoggerFactory.getLogger(ActivityPubClientErrorHandler.class);
+
+ @Inject
+ private ApplicationEventPublisher applicationEventPublisher;
+ @Override
+ public void handleError(URI contextUri, HttpMethod method, @Nonnull ClientHttpResponse response) throws IOException {
+ logger.warn("HTTP ERROR {} {} : {}", response.getStatusCode().value(),
+ response.getStatusText(), IOUtils.toString(response.getBody(), StandardCharsets.UTF_8));
+ if (response.getStatusCode().equals(HttpStatus.GONE)) {
+ logger.warn("Server report {} is gone, deleting", response);
+ applicationEventPublisher.publishEvent(new DeleteUserEvent(this, contextUri.toASCIIString()));
+ }
+ }
+}