aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/juick/ActivityPubManager.java
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2022-12-15 20:40:59 +0300
committerGravatar Vitaly Takmazov2022-12-15 20:40:59 +0300
commit725f2fde72df4bdd92a2262fbb335f40e0a81a1c (patch)
tree71e1612dd27c630a4115c56838e974720a8850d8 /src/main/java/com/juick/ActivityPubManager.java
parentb1267ab73fd601dcc1636a64d86135d72631b525 (diff)
Extract profile URI helpers into ProfileUriBuilder
Diffstat (limited to 'src/main/java/com/juick/ActivityPubManager.java')
-rw-r--r--src/main/java/com/juick/ActivityPubManager.java81
1 files changed, 16 insertions, 65 deletions
diff --git a/src/main/java/com/juick/ActivityPubManager.java b/src/main/java/com/juick/ActivityPubManager.java
index c909bd9b..16f310a7 100644
--- a/src/main/java/com/juick/ActivityPubManager.java
+++ b/src/main/java/com/juick/ActivityPubManager.java
@@ -59,6 +59,7 @@ import com.juick.util.HttpUtils;
import com.juick.util.MessageUtils;
import com.juick.util.formatters.PlainTextFormatter;
import com.juick.www.api.SystemActivity.ActivityType;
+import com.juick.www.api.activity.helpers.ProfileUriBuilder;
import com.juick.www.api.activity.model.Context;
import com.juick.www.api.activity.model.activities.Accept;
import com.juick.www.api.activity.model.activities.Announce;
@@ -76,7 +77,6 @@ import io.pebbletemplates.pebble.template.PebbleTemplate;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;
@@ -90,8 +90,8 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
private MessagesService messagesService;
@Inject
private PebbleEngine pebbleEngine;
- @Value("${ap_base_uri:http://localhost:8080/}")
- private String baseUri;
+ @Inject
+ ProfileUriBuilder profileUriBuilder;
@Override
public void processFollowEvent(@Nonnull FollowEvent followEvent) {
@@ -137,7 +137,7 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
public void deleteMessageEvent(DeleteMessageEvent event) {
Message msg = event.getMessage();
User user = msg.getUser();
- String userUri = personUri(user);
+ String userUri = profileUriBuilder.personUri(user);
Note note = makeNote(msg);
Actor me = (Actor) signatureManager.getContext(URI.create(userUri)).get();
socialService.getFollowers(user).forEach(acct -> {
@@ -190,7 +190,7 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
public void processUpdateEvent(UpdateEvent event) {
String objectUri = event.getMessageUri();
User user = event.getUser();
- String userUri = personUri(user);
+ String userUri = profileUriBuilder.personUri(user);
Actor me = (Actor) signatureManager.getContext(URI.create(userUri)).get();
socialService.getFollowers(user).forEach(acct -> {
try {
@@ -222,7 +222,7 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
@Override
public void processUpdateUserEvent(UpdateUserEvent event) {
User user = event.getUser();
- String userUri = personUri(user);
+ String userUri = profileUriBuilder.personUri(user);
Actor me = (Actor) signatureManager.getContext(URI.create(userUri)).get();
socialService.getFollowers(user).forEach(acct -> {
try {
@@ -246,7 +246,7 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
return;
}
User user = msg.getUser();
- String userUri = personUri(user);
+ String userUri = profileUriBuilder.personUri(user);
Note note = makeNote(msg);
signatureManager.getContext(URI.create(userUri)).ifPresentOrElse((me) -> {
Set<String> subscribers = new HashSet<>(socialService.getFollowers(user));
@@ -281,72 +281,23 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
});
}
- public String inboxUri() {
- UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUri);
- return uri.replacePath("/api/inbox").toUriString();
- }
-
- public String outboxUri(User user) {
- UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUri);
- return uri.replacePath(String.format("/u/%s/blog/toc", user.getName())).toUriString();
- }
-
- public String personUri(User user) {
- if (user.getUri().toString().length() > 0) {
- return user.getUri().toASCIIString();
- }
- UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUri);
- return uri.replacePath(String.format("/u/%s", user.getName())).toUriString();
- }
- public String personWebUri(User user) {
- UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUri);
- return uri.replacePath(String.format("/%s/", user.getName())).toUriString();
- }
-
- public String followersUri(User user) {
- UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUri);
- return uri.replacePath(String.format("/u/%s/followers/toc", user.getName())).toUriString();
- }
-
- public String followingUri(User user) {
- UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUri);
- return uri.replacePath(String.format("/u/%s/following/toc", user.getName())).toUriString();
- }
- public String messageUri(Message msg) {
- return messageUri(msg.getMid(), msg.getRid());
- }
- public String messageUri(int mid, int rid) {
- UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUri);
- uri.replacePath(String.format("/n/%d-%d", mid, rid));
- return uri.toUriString();
- }
- public String tagUri(Tag tag) {
- UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUri);
- return uri.replacePath(String.format("/t/%s", tag.getName())).toUriString();
- }
-
- public String postId(String messageUri) {
- UriComponents uri = UriComponentsBuilder.fromUriString(messageUri).build();
- return uri.getPath().substring(uri.getPath().lastIndexOf('/') + 1).replace("-", "/");
- }
-
public Note makeNote(Message msg) {
Note note = new Note();
- note.setId(messageUri(msg));
+ note.setId(profileUriBuilder.messageUri(msg));
note.setUrl(PlainTextFormatter.formatUrl(msg));
- note.setAttributedTo(personUri(msg.getUser()));
+ note.setAttributedTo(profileUriBuilder.personUri(msg.getUser()));
if (MessageUtils.isReply(msg)) {
if (msg.getReplyToUri().toASCIIString().length() > 0) {
note.setInReplyTo(msg.getReplyToUri().toASCIIString());
} else {
- note.setInReplyTo(messageUri(msg.getMid(), msg.getReplyto()));
+ note.setInReplyTo(profileUriBuilder.messageUri(msg.getMid(), msg.getReplyto()));
}
}
if (MessageUtils.isPM(msg)) {
- note.setTo(Collections.singletonList(personUri(msg.getTo())));
+ note.setTo(Collections.singletonList(profileUriBuilder.personUri(msg.getTo())));
} else {
note.setTo(Collections.singletonList(Context.ACTIVITYSTREAMS_PUBLIC));
- note.setCc(Collections.singletonList(followersUri(msg.getUser())));
+ note.setCc(Collections.singletonList(profileUriBuilder.followersUri(msg.getUser())));
}
note.setPublished(msg.getCreated());
if (StringUtils.isNotBlank(msg.getAttachmentType())) {
@@ -356,7 +307,7 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
attachment.setMediaType(HttpUtils.mediaType(msg.getAttachmentType()));
note.setAttachment(Collections.singletonList(attachment));
}
- note.setTags(msg.getTags().stream().map(t -> new Hashtag(tagUri(t), t.getName())).collect(Collectors.toList()));
+ note.setTags(msg.getTags().stream().map(t -> new Hashtag(profileUriBuilder.tagUri(t), t.getName())).collect(Collectors.toList()));
if (msg.getReplyToUri() != null && msg.getReplyToUri().toASCIIString().length() > 0) {
Optional<Context> noteContext = signatureManager.getContext(msg.getReplyToUri());
if (noteContext.isPresent()) {
@@ -370,7 +321,7 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
}
}
} else if (MessageUtils.isReply(msg)) {
- note.getTags().add(new Mention(personWebUri(msg.getTo()), msg.getTo().getName()));
+ note.getTags().add(new Mention(profileUriBuilder.personWebUri(msg.getTo()), msg.getTo().getName()));
}
MessageUtils.getGlobalMentions(msg).forEach(m -> {
// @user@server.tld -> user@server.tld
@@ -390,7 +341,7 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
PebbleTemplate noteTemplate = pebbleEngine.getTemplate("layouts/note");
Map<String, Object> context = new HashMap<>();
context.put("msg", msg);
- context.put("baseUri", baseUri);
+ context.put("baseUri", profileUriBuilder.getBaseUri());
try {
Writer writer = new StringWriter();
noteTemplate.evaluate(writer, context);
@@ -412,7 +363,7 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
Note note = makeNote(message);
Announce announce = new Announce();
announce.setId(note.getId() + "#announce-" + user.getName());
- announce.setActor(personUri(user));
+ announce.setActor(profileUriBuilder.personUri(user));
announce.setTo(Collections.singletonList(Context.ACTIVITYSTREAMS_PUBLIC));
announce.setObject(note);
signatureManager.getContext(URI.create(announce.getActor())).ifPresentOrElse((ctx) -> {