From 725f2fde72df4bdd92a2262fbb335f40e0a81a1c Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Thu, 15 Dec 2022 20:40:59 +0300 Subject: Extract profile URI helpers into ProfileUriBuilder --- src/main/java/com/juick/ActivityPubManager.java | 81 +++++-------------------- 1 file changed, 16 insertions(+), 65 deletions(-) (limited to 'src/main/java/com/juick/ActivityPubManager.java') 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 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 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 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) -> { -- cgit v1.2.3