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 tokens = crosspostService.getVkTokens(serviceUser.getUid()).orElse(Pair.of("0", "0")); 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(); } }