Рефракторинг и новый Контроллер
Рефракторинг класса слушателя сообщений вк Новый контроллер для запросов к вк без токена
This commit is contained in:
parent
6c6a4338c6
commit
92e8a893a7
22
vk-bot/src/main/java/org/sadtech/vkbot/VkOpenMethod.java
Normal file
22
vk-bot/src/main/java/org/sadtech/vkbot/VkOpenMethod.java
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package org.sadtech.vkbot;
|
||||||
|
|
||||||
|
import com.vk.api.sdk.client.VkApiClient;
|
||||||
|
import com.vk.api.sdk.client.actors.GroupActor;
|
||||||
|
import lombok.extern.log4j.Log4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Log4j
|
||||||
|
public class VkOpenMethod {
|
||||||
|
|
||||||
|
private VkApiClient vk;
|
||||||
|
|
||||||
|
private GroupActor actor;
|
||||||
|
|
||||||
|
public VkOpenMethod(VkApiClient vk, GroupActor actor) {
|
||||||
|
this.vk = vk;
|
||||||
|
this.actor = actor;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -3,13 +3,15 @@ package org.sadtech.vkbot.config;
|
|||||||
import com.vk.api.sdk.client.TransportClient;
|
import com.vk.api.sdk.client.TransportClient;
|
||||||
import com.vk.api.sdk.client.VkApiClient;
|
import com.vk.api.sdk.client.VkApiClient;
|
||||||
import com.vk.api.sdk.client.actors.GroupActor;
|
import com.vk.api.sdk.client.actors.GroupActor;
|
||||||
|
import com.vk.api.sdk.client.actors.ServiceActor;
|
||||||
import com.vk.api.sdk.exceptions.ApiException;
|
import com.vk.api.sdk.exceptions.ApiException;
|
||||||
import com.vk.api.sdk.exceptions.ClientException;
|
import com.vk.api.sdk.exceptions.ClientException;
|
||||||
import com.vk.api.sdk.httpclient.HttpTransportClient;
|
import com.vk.api.sdk.httpclient.HttpTransportClient;
|
||||||
import com.vk.api.sdk.objects.groups.responses.GetLongPollServerResponse;
|
import com.vk.api.sdk.objects.groups.responses.GetLongPollServerResponse;
|
||||||
import org.sadtech.vkbot.ResponseData;
|
import org.sadtech.vkbot.ResponseData;
|
||||||
import org.sadtech.vkbot.TestLogic;
|
import org.sadtech.vkbot.TestLogic;
|
||||||
import org.sadtech.vkbot.controller.Test;
|
import org.sadtech.vkbot.VkOpenMethod;
|
||||||
|
import org.sadtech.vkbot.controller.MessagesListener;
|
||||||
import org.sadtech.vkbot.service.UserService;
|
import org.sadtech.vkbot.service.UserService;
|
||||||
import org.sadtech.vkbot.service.impl.UserServiceImpl;
|
import org.sadtech.vkbot.service.impl.UserServiceImpl;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@ -17,7 +19,6 @@ import org.springframework.context.annotation.Bean;
|
|||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.PropertySource;
|
import org.springframework.context.annotation.PropertySource;
|
||||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@PropertySource("classpath:config.properties")
|
@PropertySource("classpath:config.properties")
|
||||||
@ -42,6 +43,9 @@ public class SpringConfig {
|
|||||||
@Value("${vk.token}")
|
@Value("${vk.token}")
|
||||||
private String token;
|
private String token;
|
||||||
|
|
||||||
|
@Value("${vk.service.token}")
|
||||||
|
private String serviceToken;
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public TransportClient transportClient() {
|
public TransportClient transportClient() {
|
||||||
return HttpTransportClient.getInstance();
|
return HttpTransportClient.getInstance();
|
||||||
@ -50,14 +54,18 @@ public class SpringConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
public VkApiClient vkApiClient() {
|
public VkApiClient vkApiClient() {
|
||||||
VkApiClient vk = new VkApiClient(transportClient());
|
VkApiClient vk = new VkApiClient(transportClient());
|
||||||
// System.out.println("vk: " + vk);
|
|
||||||
return vk;
|
return vk;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public GroupActor groupActor() {
|
public GroupActor groupActor() {
|
||||||
GroupActor actor = new GroupActor(new Integer(groupId), token);
|
GroupActor actor = new GroupActor(new Integer(groupId), token);
|
||||||
// System.out.println("actor: " + actor);
|
return actor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ServiceActor serviceActor() {
|
||||||
|
ServiceActor actor = new ServiceActor(new Integer(appID), serviceToken);
|
||||||
return actor;
|
return actor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,8 +84,8 @@ public class SpringConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Bean(initMethod = "start")
|
@Bean(initMethod = "start")
|
||||||
public Test test() {
|
public MessagesListener messagesListener() {
|
||||||
return new Test();
|
return new MessagesListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ -94,4 +102,9 @@ public class SpringConfig {
|
|||||||
public TestLogic testLogic() {
|
public TestLogic testLogic() {
|
||||||
return new TestLogic(responseData());
|
return new TestLogic(responseData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public VkOpenMethod vkOpenMethod() {
|
||||||
|
return new VkOpenMethod(vkApiClient(), groupActor());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,62 @@
|
|||||||
|
package org.sadtech.vkbot.controller;
|
||||||
|
|
||||||
|
import com.vk.api.sdk.actions.LongPoll;
|
||||||
|
import com.vk.api.sdk.callback.longpoll.queries.GetLongPollEventsQuery;
|
||||||
|
import com.vk.api.sdk.callback.longpoll.responses.GetLongPollEventsResponse;
|
||||||
|
import com.vk.api.sdk.client.VkApiClient;
|
||||||
|
import com.vk.api.sdk.client.actors.GroupActor;
|
||||||
|
import com.vk.api.sdk.exceptions.ApiException;
|
||||||
|
import com.vk.api.sdk.exceptions.ClientException;
|
||||||
|
import com.vk.api.sdk.objects.groups.responses.GetLongPollServerResponse;
|
||||||
|
import lombok.extern.log4j.Log4j;
|
||||||
|
import org.sadtech.vkbot.ResponseData;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
@Log4j
|
||||||
|
public class MessagesListener extends Thread{
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private VkApiClient vk;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GroupActor actor;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ResponseData responseData;
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
GetLongPollServerResponse serverResponse = null;
|
||||||
|
try {
|
||||||
|
serverResponse = vk.groups().getLongPollServer(actor).execute();
|
||||||
|
} catch (ApiException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (ClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
String key = serverResponse.getServer();
|
||||||
|
String server = serverResponse.getKey();
|
||||||
|
Integer ts = serverResponse.getTs();
|
||||||
|
|
||||||
|
LongPoll longPoll = new LongPoll(vk);
|
||||||
|
GetLongPollEventsQuery longPollEventsQuery = longPoll.getEvents(server, key, ts).waitTime(20);
|
||||||
|
|
||||||
|
GetLongPollEventsResponse eventsResponse = null;
|
||||||
|
do {
|
||||||
|
try {
|
||||||
|
eventsResponse = longPollEventsQuery.execute();
|
||||||
|
} catch (ApiException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (ClientException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
if (eventsResponse.getUpdates().toArray().length != 0) {
|
||||||
|
|
||||||
|
responseData.setJsonObjects(eventsResponse.getUpdates());
|
||||||
|
|
||||||
|
}
|
||||||
|
longPollEventsQuery = longPoll.getEvents(server, key, eventsResponse.getTs()).waitTime(20);
|
||||||
|
} while (true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,80 +0,0 @@
|
|||||||
package org.sadtech.vkbot.controller;
|
|
||||||
|
|
||||||
import com.vk.api.sdk.actions.LongPoll;
|
|
||||||
import com.vk.api.sdk.callback.longpoll.queries.GetLongPollEventsQuery;
|
|
||||||
import com.vk.api.sdk.callback.longpoll.responses.GetLongPollEventsResponse;
|
|
||||||
import com.vk.api.sdk.client.VkApiClient;
|
|
||||||
import com.vk.api.sdk.client.actors.GroupActor;
|
|
||||||
import com.vk.api.sdk.exceptions.ApiException;
|
|
||||||
import com.vk.api.sdk.exceptions.ClientException;
|
|
||||||
import com.vk.api.sdk.objects.groups.responses.GetLongPollServerResponse;
|
|
||||||
import lombok.extern.log4j.Log4j;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
import org.sadtech.vkbot.ResponseData;
|
|
||||||
import org.sadtech.vkbot.entity.User;
|
|
||||||
import org.sadtech.vkbot.service.UserService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
@Log4j
|
|
||||||
|
|
||||||
public class Test extends Thread {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private VkApiClient vk;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private GroupActor actor;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ResponseData responseData;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private UserService userService;
|
|
||||||
|
|
||||||
private GetLongPollEventsResponse getLongPollEventsResponse = null;
|
|
||||||
|
|
||||||
public void run() {
|
|
||||||
GetLongPollServerResponse getResponse = null;
|
|
||||||
try {
|
|
||||||
getResponse = vk.groups().getLongPollServer(actor).execute();
|
|
||||||
} catch (ApiException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (ClientException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
JSONObject jObject = new JSONObject(getResponse); // json
|
|
||||||
// System.out.println(getResponse);
|
|
||||||
String key = jObject.getString("key"); // get the name from data.
|
|
||||||
String server = jObject.getString("server");
|
|
||||||
Integer ts = jObject.getInt("ts");
|
|
||||||
LongPoll longPoll = new LongPoll(vk);
|
|
||||||
GetLongPollEventsQuery getLongPollEventsQuery = longPoll.getEvents(server, key, ts).waitTime(20);
|
|
||||||
// Gson gson = new Gson();
|
|
||||||
|
|
||||||
User user = new User();
|
|
||||||
user.setId(1);
|
|
||||||
user.setName("Test");
|
|
||||||
userService.addUser(user);
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
try {
|
|
||||||
getLongPollEventsResponse = getLongPollEventsQuery.execute();
|
|
||||||
} catch (ApiException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (ClientException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
log.info(getLongPollEventsResponse);
|
|
||||||
if (getLongPollEventsResponse.getUpdates().toArray().length != 0) {
|
|
||||||
responseData.setJsonObjects(getLongPollEventsResponse.getUpdates());
|
|
||||||
// JsonObject updates = getLongPollEventsResponse.getUpdates().get(0);
|
|
||||||
// JsonObject object = updates.getAsJsonObject("object");
|
|
||||||
// Message messages = gson.fromJson(object, Message.class);
|
|
||||||
}
|
|
||||||
getLongPollEventsQuery = longPoll.getEvents(server, key, getLongPollEventsResponse.getTs()).waitTime(20);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user