package uc.protocols.hub;
import helpers.GH;
import java.io.IOException;
import java.util.regex.Pattern;
import logger.LoggerFactory;
import org.apache.log4j.Logger;
import uc.crypto.HashValue;
import uc.protocols.DCProtocol;
import uc.user.User;
public class NickList extends AbstractNMDCHubProtocolCommand {
private static Logger logger = LoggerFactory.make();
@Override
public void handle(Hub hub,String command) throws IOException {
String[] b = command.split(" ", 2)[1].split(Pattern.quote("$$"));//cut away prefix.. and separate to nicks
boolean sendGetinfo = !hub.getOthersSupports().contains("NoGetINFO");
if (b.length > Hub.MAX_USERS) {
logger.warn("nicklist too long: "+b.length);
return;
}
logger.debug("Nicklist: "+b.length);
for (String nick : b) {
nick = nick.trim();
if (!GH.isEmpty(nick)) {
HashValue userid = DCProtocol.nickToUserID(nick, hub);
User usr = hub.getUser(userid);
if (usr == null) {
usr = hub.getDcc().getPopulation().get(nick, userid);
if (sendGetinfo) {
hub.sendUnmodifiedRaw("$GetINFO "+usr.getNick()+" "+hub.getSelf().getNick()+"|");
}
hub.insertUser(usr);
}
}
}
}
}