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 { 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); } }