aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/juick/www/api/activity/converters/UserToActorConverter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/juick/www/api/activity/converters/UserToActorConverter.java')
-rw-r--r--src/main/java/com/juick/www/api/activity/converters/UserToActorConverter.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/main/java/com/juick/www/api/activity/converters/UserToActorConverter.java b/src/main/java/com/juick/www/api/activity/converters/UserToActorConverter.java
new file mode 100644
index 00000000..405c27ab
--- /dev/null
+++ b/src/main/java/com/juick/www/api/activity/converters/UserToActorConverter.java
@@ -0,0 +1,48 @@
+package com.juick.www.api.activity.converters;
+
+import org.springframework.core.convert.converter.Converter;
+
+import com.juick.ActivityPubManager;
+import com.juick.KeystoreManager;
+import com.juick.model.User;
+import com.juick.www.WebApp;
+import com.juick.www.api.activity.model.Context;
+import com.juick.www.api.activity.model.objects.Actor;
+import com.juick.www.api.activity.model.objects.Application;
+import com.juick.www.api.activity.model.objects.Image;
+import com.juick.www.api.activity.model.objects.Key;
+import com.juick.www.api.activity.model.objects.Person;
+
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public class UserToActorConverter implements Converter<User, Actor> {
+
+ private ActivityPubManager activityPubManager;
+ private KeystoreManager keystoreManager;
+ private WebApp webApp;
+
+ @Override
+ public Actor convert(User user) {
+ Actor profile = user.isService() ? new Application() : new Person();
+ profile.setId(activityPubManager.personUri(user));
+ profile.setUrl(activityPubManager.personWebUri(user));
+ profile.setName(user.getName());
+ profile.setPreferredUsername(user.getName());
+ Key publicKey = new Key();
+ publicKey.setId(profile.getId() + "#main-key");
+ publicKey.setOwner(profile.getId());
+ publicKey.setPublicKeyPem(keystoreManager.getPublicKeyPem());
+ profile.setPublicKey(publicKey);
+ profile.setInbox(activityPubManager.inboxUri());
+ profile.setOutbox(activityPubManager.outboxUri(user));
+ profile.setFollowers(activityPubManager.followersUri(user));
+ profile.setFollowing(activityPubManager.followingUri(user));
+ Image avatar = new Image();
+ avatar.setUrl(webApp.getAvatarUrl(user));
+ avatar.setMediaType("image/png");
+ profile.setIcon(avatar);
+ return (Actor) Context.build(profile);
+ }
+
+}