aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2022-12-24 08:15:43 +0300
committerGravatar Vitaly Takmazov2022-12-24 08:15:43 +0300
commitb6a76493f1711ad42cc8543bc73ae70b3d75868e (patch)
tree61ff105aecb0bb240b8d44949f4828b1e345ae21 /src/main
parent0ab02be35b4f83a10c1d586c7e069b9e1dc4c075 (diff)
ActivityPub: compatibility with Honk server
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/juick/SignatureManager.java9
-rw-r--r--src/main/java/com/juick/www/api/activity/model/Context.java1
2 files changed, 9 insertions, 1 deletions
diff --git a/src/main/java/com/juick/SignatureManager.java b/src/main/java/com/juick/SignatureManager.java
index 8032a6fa..9d6b68f7 100644
--- a/src/main/java/com/juick/SignatureManager.java
+++ b/src/main/java/com/juick/SignatureManager.java
@@ -23,6 +23,7 @@ import com.juick.model.User;
import com.juick.service.UserService;
import com.juick.service.activities.DeleteUserEvent;
import com.juick.util.DateFormattersHolder;
+import com.juick.www.api.activity.model.Activity;
import com.juick.www.api.activity.model.Context;
import com.juick.www.api.activity.model.objects.Actor;
import com.juick.www.api.webfinger.model.Account;
@@ -35,6 +36,7 @@ import org.springframework.context.ApplicationEventPublisher;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
@@ -55,6 +57,7 @@ import java.security.NoSuchAlgorithmException;
import java.security.SignatureException;
import java.time.Instant;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -164,7 +167,10 @@ public class SignatureManager {
@Cacheable("profiles")
public Optional<Context> getContext(URI contextUri) {
try {
- Context context = apClient.getForEntity(contextUri, Context.class).getBody();
+ HttpHeaders headers = new HttpHeaders();
+ headers.setAccept(Collections.singletonList(MediaType.valueOf(ACTIVITY_MEDIA_TYPE)));
+ HttpEntity<Void> activityRequest = new HttpEntity<>(headers);
+ Context context = apClient.exchange(contextUri, HttpMethod.GET, activityRequest, Context.class).getBody();
if (context == null) {
logger.warn("Cannot identify {}", contextUri);
return Optional.empty();
@@ -181,6 +187,7 @@ public class SignatureManager {
URI resourceUri = UriComponentsBuilder.fromPath("/.well-known/webfinger").host(acctId.getDomain())
.scheme("https").queryParam("resource", "acct:" + acct).build().toUri();
HttpHeaders headers = new HttpHeaders();
+ headers.setAccept(Collections.singletonList(MediaType.valueOf("application/jrd+json")));
HttpEntity<Void> webfingerRequest = new HttpEntity<>(headers);
try {
ResponseEntity<Account> response = apClient.exchange(resourceUri, HttpMethod.GET, webfingerRequest,
diff --git a/src/main/java/com/juick/www/api/activity/model/Context.java b/src/main/java/com/juick/www/api/activity/model/Context.java
index 1eb057a6..5a66b3b3 100644
--- a/src/main/java/com/juick/www/api/activity/model/Context.java
+++ b/src/main/java/com/juick/www/api/activity/model/Context.java
@@ -110,6 +110,7 @@ public class Context implements Serializable {
this.published = published;
}
+ @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
public List<String> getTo() {
return to;
}