package heufybot.core.cap; import heufybot.core.IRCServer; import heufybot.core.Logger; import heufybot.utils.StringUtils; import java.util.Arrays; import java.util.List; public class EnablingCapHandler implements CapHandler { private String cap; public EnablingCapHandler(String cap) { this.cap = cap; } @Override public boolean handleLS(IRCServer irc, List<String> capabilities) throws CAPException { if (capabilities.contains(this.cap)) { irc.cmdCAP("REQ :", StringUtils.join(Arrays.asList(this.cap), "")); irc.getEnabledCapabilities().add(this.cap); Logger.log(" - Capability \"" + this.cap + "\" is enabled"); } else { throw new CAPException(CAPException.Reason.UnsupportedCapability, this.cap); } return false; } @Override public boolean handleACK(IRCServer irc, List<String> capabilities) throws CAPException { return capabilities.contains(this.cap); } @Override public boolean handleNAK(IRCServer irc, List<String> capabilities) throws CAPException { if (capabilities.contains(this.cap)) { irc.getEnabledCapabilities().remove(this.cap); throw new CAPException(CAPException.Reason.UnsupportedCapability, this.cap); } return false; } @Override public boolean handleUnknown(IRCServer irc, String line) throws CAPException { return false; } }