diff options
author | Vitaly Takmazov | 2018-10-01 17:58:46 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2018-10-03 09:06:00 +0300 |
commit | bac87790c6d044e3bfe9781dd285dfa4b33e49ee (patch) | |
tree | cafe620a09bf41c85a5c6512ee2611f45b0ab3c1 /juick-server/src/main/java/com/juick/server/ActivityPubManager.java | |
parent | e04371500a9dd469f02024f63ef39117f8a4d649 (diff) |
ActivityPub: HTTP Signatures and autoaccept followers
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.java | 37 |
1 files changed, 37 insertions, 0 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 new file mode 100644 index 00000000..362754fd --- /dev/null +++ b/juick-server/src/main/java/com/juick/server/ActivityPubManager.java @@ -0,0 +1,37 @@ +package com.juick.server; + +import com.juick.server.api.activity.model.Person; +import com.juick.server.api.activity.model.activities.Accept; +import com.juick.service.activities.FollowEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.ApplicationListener; +import org.springframework.stereotype.Component; + +import javax.annotation.Nonnull; +import javax.inject.Inject; +import java.io.IOException; +import java.net.URI; + +@Component +public class ActivityPubManager implements ApplicationListener<FollowEvent> { + private static final Logger logger = LoggerFactory.getLogger(ActivityPubManager.class); + @Inject + SignatureManager signatureManager; + @Override + public void onApplicationEvent(@Nonnull FollowEvent followEvent) { + logger.info("received follower request"); + // automatically accept follower requests + Person me = (Person) signatureManager.getContext(URI.create((String)followEvent.getRequest().getObject())); + Person follower = (Person) signatureManager.getContext(URI.create(followEvent.getRequest().getActor())); + Accept accept = new Accept(); + accept.setActor(me.getId()); + accept.setObject(followEvent.getRequest()); + try { + signatureManager.post(me, follower, accept); + } catch (IOException e) { + logger.info("activitypub exception", e); + } + + } +} |