diff options
-rw-r--r-- | juick-server/build.gradle | 3 | ||||
-rw-r--r-- | juick-server/src/main/java/com/juick/server/TopManager.java | 11 | ||||
-rw-r--r-- | juick-server/src/main/java/com/juick/server/VKWallManager.java | 57 |
3 files changed, 69 insertions, 2 deletions
diff --git a/juick-server/build.gradle b/juick-server/build.gradle index 438025a1..aa267876 100644 --- a/juick-server/build.gradle +++ b/juick-server/build.gradle @@ -17,7 +17,8 @@ dependencies { compile 'com.github.pengrad:java-telegram-bot-api:3.5.2' compile 'com.github.messenger4j:messenger4j:1.0.0-M2' - compile "org.springframework.social:spring-social-twitter:1.1.2.RELEASE" + compile 'org.springframework.social:spring-social-twitter:1.1.2.RELEASE' + compile 'com.vk.api:sdk:0.5.11' compile 'org.apache.commons:commons-email:1.5' compile 'org.imgscalr:imgscalr-lib:4.2' diff --git a/juick-server/src/main/java/com/juick/server/TopManager.java b/juick-server/src/main/java/com/juick/server/TopManager.java index 894dfda7..66e1d6d2 100644 --- a/juick-server/src/main/java/com/juick/server/TopManager.java +++ b/juick-server/src/main/java/com/juick/server/TopManager.java @@ -22,6 +22,8 @@ import com.juick.User; import com.juick.service.MessagesService; import com.juick.service.UserService; import com.juick.util.MessageUtils; +import com.vk.api.sdk.exceptions.ApiException; +import com.vk.api.sdk.exceptions.ClientException; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,6 +44,8 @@ public class TopManager { @Inject private FacebookPageManager facebookPageManager; @Inject + private VKWallManager vkWallManager; + @Inject private CrosspostManager crosspostManager; @Inject private UserService userService; @@ -63,15 +67,20 @@ public class TopManager { messagesService.setMessagePopular(m, 1); Message jmsg = messagesService.getMessage(m); String status = MessageUtils.getMessageHashTags(jmsg) + StringUtils.defaultString(jmsg.getText()); + String link = "https://juick.com/" + jmsg.getMid(); try { - facebookPageManager.post(status, "https://juick.com/" + jmsg.getMid()); + facebookPageManager.post(status, link); + vkWallManager.post(status, link); } catch (HttpClientErrorException ex) { HttpStatus statusCode = ex.getStatusCode(); String responseString = ex.getResponseBodyAsString(); logger.warn("facebook error {}: {}", statusCode.value(), responseString); + } catch (ClientException | ApiException e) { + logger.warn("vk error: {}", e); } jmsg.setUser(serviceUser); crosspostManager.twitterPost(jmsg); + }); } } diff --git a/juick-server/src/main/java/com/juick/server/VKWallManager.java b/juick-server/src/main/java/com/juick/server/VKWallManager.java new file mode 100644 index 00000000..364087eb --- /dev/null +++ b/juick-server/src/main/java/com/juick/server/VKWallManager.java @@ -0,0 +1,57 @@ +package com.juick.server; + +import com.juick.User; +import com.juick.service.CrosspostService; +import com.juick.service.UserService; +import com.vk.api.sdk.client.TransportClient; +import com.vk.api.sdk.client.VkApiClient; +import com.vk.api.sdk.client.actors.UserActor; +import com.vk.api.sdk.exceptions.ApiException; +import com.vk.api.sdk.exceptions.ClientException; +import com.vk.api.sdk.httpclient.HttpTransportClient; +import com.vk.api.sdk.objects.apps.responses.GetResponse; +import com.vk.api.sdk.objects.wall.responses.PostResponse; +import org.apache.commons.lang3.tuple.Pair; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.inject.Inject; + +@Component +public class VKWallManager { + @Value("${vk_appid}") + private String VK_APPID; + @Value("${vk_secret}") + private String VK_SECRET; + @Inject + private UserService userService; + @Inject + private CrosspostService crosspostService; + @Value("${vk_user:juick}") + private String serviceUsername; + @Value("${vk_group:-1}") + private String vkGroup; + + private User serviceUser; + private VkApiClient vk; + private UserActor actor; + + + @PostConstruct + public void init() throws ClientException, ApiException { + serviceUser = userService.getUserByName(serviceUsername); + TransportClient transportClient = HttpTransportClient.getInstance(); + vk = new VkApiClient(transportClient); + Pair<String, String> tokens = crosspostService.getVkTokens(serviceUser.getUid()).get(); + actor = new UserActor(Integer.valueOf(tokens.getLeft()), tokens.getRight()); + } + public void post(String status, String link) throws ClientException, ApiException { + vk.wall().post(actor) + .ownerId(Integer.valueOf(vkGroup)) + .fromGroup(true) + .message(status) + .attachments(link) + .execute(); + } +} |