package com.juick.www.api.activity.converters; import com.juick.www.api.activity.helpers.ProfileUriBuilder; import org.springframework.core.convert.converter.Converter; 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 ProfileUriBuilder profileUriBuilder; private KeystoreManager keystoreManager; private WebApp webApp; @Override public Actor convert(User user) { Actor profile = user.isService() ? new Application() : new Person(); profile.setId(profileUriBuilder.personUri(user)); profile.setUrl(profileUriBuilder.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(profileUriBuilder.inboxUri()); profile.setOutbox(profileUriBuilder.outboxUri(user)); profile.setFollowers(profileUriBuilder.followersUri(user)); profile.setFollowing(profileUriBuilder.followingUri(user)); Image avatar = new Image(); avatar.setUrl(webApp.getAvatarUrl(user)); avatar.setMediaType("image/png"); profile.setIcon(avatar); return (Actor) Context.build(profile); } }