aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/juick/service/ActivityPubService.java
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2018-11-08 21:38:27 +0300
committerGravatar Vitaly Takmazov2018-11-08 21:38:27 +0300
commit7aaa3f9a29c280f01c677c918932620be45cdbd7 (patch)
tree39947b2c889afd08f9c73ba54fab91159d2af258 /src/main/java/com/juick/service/ActivityPubService.java
parent3ea9770d0d43fbe45449ac4531ec4b0a374d98ea (diff)
Merge everything into single Spring Boot application
Diffstat (limited to 'src/main/java/com/juick/service/ActivityPubService.java')
-rw-r--r--src/main/java/com/juick/service/ActivityPubService.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/main/java/com/juick/service/ActivityPubService.java b/src/main/java/com/juick/service/ActivityPubService.java
new file mode 100644
index 00000000..892022cf
--- /dev/null
+++ b/src/main/java/com/juick/service/ActivityPubService.java
@@ -0,0 +1,59 @@
+package com.juick.service;
+
+import com.juick.User;
+import com.juick.model.AnonymousUser;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.util.UriComponents;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import javax.annotation.Nonnull;
+import javax.inject.Inject;
+import java.util.List;
+
+@Repository
+public class ActivityPubService extends BaseJdbcService implements SocialService {
+ @Value("${ap_base_uri:http://localhost:8080/}")
+ private String baseUri;
+ @Inject
+ private UserService userService;
+
+ @Transactional(readOnly = true)
+ @Override
+ public @Nonnull User getUserByAccountUri(String acct) {
+ UriComponents baseUriComponents = UriComponentsBuilder.fromUriString(baseUri).build();
+ UriComponents acctComponents = UriComponentsBuilder.fromUriString(acct).build();
+ if (acctComponents.getHost().equals(baseUriComponents.getHost())) {
+ // /u/ugnich -> ugnich
+ String userName = acctComponents.getPath().substring(3);
+ return userService.getUserByName(userName);
+ }
+ return AnonymousUser.INSTANCE;
+ }
+
+ @Transactional(readOnly = true)
+ @Override
+ public @Nonnull List<String> getFollowers(User user) {
+ return getJdbcTemplate().queryForList("SELECT acct FROM followers WHERE user_id=?", String.class, user.getUid());
+ }
+
+ @Transactional
+ @Override
+ public void addFollower(User user, String acct) {
+ getJdbcTemplate().update("INSERT INTO followers(user_id, acct) " +
+ "VALUES(?, ?)", user.getUid(), acct);
+ }
+
+ @Transactional
+ @Override
+ public void removeFollower(User user, String acct) {
+ getJdbcTemplate().update("DELETE FROM followers WHERE user_id=? AND acct=?", user.getUid(), acct);
+ }
+
+ @Transactional
+ @Override
+ public void removeAccount(String acct) {
+ getJdbcTemplate().update("DELETE FROM followers WHERE acct=?", acct);
+ }
+}