aboutsummaryrefslogtreecommitdiff
path: root/juick-server/src/main/java/com/juick/server/ActivityPubManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-server/src/main/java/com/juick/server/ActivityPubManager.java')
-rw-r--r--juick-server/src/main/java/com/juick/server/ActivityPubManager.java29
1 files changed, 25 insertions, 4 deletions
diff --git a/juick-server/src/main/java/com/juick/server/ActivityPubManager.java b/juick-server/src/main/java/com/juick/server/ActivityPubManager.java
index d494154c..4a6ed7be 100644
--- a/juick-server/src/main/java/com/juick/server/ActivityPubManager.java
+++ b/juick-server/src/main/java/com/juick/server/ActivityPubManager.java
@@ -4,9 +4,7 @@ import com.juick.Message;
import com.juick.User;
import com.juick.formatters.PlainTextFormatter;
import com.juick.server.api.activity.model.Context;
-import com.juick.server.api.activity.model.Image;
-import com.juick.server.api.activity.model.Note;
-import com.juick.server.api.activity.model.Person;
+import com.juick.server.api.activity.model.objects.*;
import com.juick.server.api.activity.model.activities.Accept;
import com.juick.server.api.activity.model.activities.Announce;
import com.juick.server.api.activity.model.activities.Create;
@@ -31,6 +29,7 @@ import java.io.IOException;
import java.net.URI;
import java.util.Collections;
import java.util.Optional;
+import java.util.stream.Collectors;
@Component
public class ActivityPubManager implements ActivityListener, NotificationListener {
@@ -184,6 +183,10 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
uri.replacePath(String.format("/n/%d-%d", mid, rid));
return uri.toUriString();
}
+ public String tagUri(com.juick.Tag tag) {
+ UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUri);
+ return uri.replacePath(String.format("/t/%s", tag.getName())).toUriString();
+ }
public Note makeNote(Message msg) {
Note note = new Note();
@@ -204,7 +207,8 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
note.setCc(Collections.singletonList(followersUri(msg.getUser())));
}
note.setPublished(msg.getTimestamp());
- note.setContent(msg.isHtml() ? msg.getText() : MessageUtils.formatMessage(msg.getText()));
+ note.setContent(msg.isHtml() ? msg.getText()
+ : MessageUtils.formatMessage(StringUtils.defaultString(msg.getText())));
if (StringUtils.isNotBlank(msg.getAttachmentType())) {
Image attachment = new Image();
attachment.setId(msg.getAttachment().getMedium().getUrl());
@@ -212,6 +216,23 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
attachment.setMediaType(HttpUtils.mediaType(msg.getAttachmentType()));
note.setAttachment(attachment);
}
+ note.setTags(msg.getTags().stream().map(t -> {
+ Hashtag hashtag = new Hashtag();
+ hashtag.setId(tagUri(t));
+ hashtag.setName("#" + t.getName());
+ return hashtag;
+ }).collect(Collectors.toList()));
+ if (msg.getReplyToUri().toASCIIString().length() > 0) {
+ Optional<Context> createContext = signatureManager.getContext(msg.getReplyToUri());
+ if (createContext.isPresent()) {
+ Create activity = (Create) createContext.get();
+ Optional<Context> personContext = signatureManager.getContext(URI.create(activity.getActor()));
+ if (personContext.isPresent()) {
+ Person person = (Person) personContext.get();
+ note.getTags().add(new Mention(person.getUrl(), person.getPreferredUsername()));
+ }
+ }
+ }
return note;
}