办学质量监测教学评价系统
ageer
2024-04-01 dea23f13ef2d4918080ce8aeee1ee908188cdb19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.xmzs.midjourney.support;
 
 
import cn.hutool.core.text.CharSequenceUtil;
import com.xmzs.midjourney.Constants;
import com.xmzs.midjourney.ProxyProperties;
import com.xmzs.midjourney.domain.DiscordAccount;
import com.xmzs.midjourney.loadbalancer.DiscordInstance;
import com.xmzs.midjourney.loadbalancer.DiscordInstanceImpl;
import com.xmzs.midjourney.service.NotifyService;
import com.xmzs.midjourney.service.TaskStoreService;
import com.xmzs.midjourney.wss.handle.MessageHandler;
import com.xmzs.midjourney.wss.user.UserMessageListener;
import com.xmzs.midjourney.wss.user.UserWebSocketStarter;
import lombok.RequiredArgsConstructor;
import org.springframework.web.client.RestTemplate;
 
import java.util.List;
import java.util.Map;
 
@RequiredArgsConstructor
public class DiscordAccountHelper {
    private final DiscordHelper discordHelper;
    private final ProxyProperties properties;
    private final RestTemplate restTemplate;
    private final TaskStoreService taskStoreService;
    private final NotifyService notifyService;
    private final List<MessageHandler> messageHandlers;
    private final Map<String, String> paramsMap;
 
    public DiscordInstance createDiscordInstance(DiscordAccount account) {
        if (!CharSequenceUtil.isAllNotBlank(account.getGuildId(), account.getChannelId(), account.getUserToken())) {
            throw new IllegalArgumentException("guildId, channelId, userToken must not be blank");
        }
        if (CharSequenceUtil.isBlank(account.getUserAgent())) {
            account.setUserAgent(Constants.DEFAULT_DISCORD_USER_AGENT);
        }
        var messageListener = new UserMessageListener(account, this.messageHandlers);
        var webSocketStarter = new UserWebSocketStarter(this.discordHelper.getWss(), account, messageListener, this.properties.getProxy());
        return new DiscordInstanceImpl(account, webSocketStarter, this.restTemplate,
                this.taskStoreService, this.notifyService, this.paramsMap);
    }
}