package nl.topicus.konijn.xmpp.modules.sources;
import nl.topicus.konijn.WicketApplication;
import nl.topicus.konijn.data.entity.Nabaztag;
import nl.topicus.konijn.violet.factories.AmbientPacketFactory;
import nl.topicus.konijn.xmpp.util.WicketInjector;
import org.apache.log4j.Logger;
import org.apache.vysper.xmpp.modules.core.base.handler.DefaultIQHandler;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
import org.apache.wicket.util.crypt.Base64;
/**
* Handler for Sources query.
*
* @author Joost Limburg
*
*/
public class VioletSourcesHandler extends DefaultIQHandler {
private static final Logger LOGGER = Logger
.getLogger(VioletSourcesHandler.class);
@Override
protected Stanza handleGet(IQStanza stanza,
ServerRuntimeContext serverRuntimeContext,
SessionContext sessionContext) {
StanzaBuilder stanzaBuilder = null;
try {
WicketApplication wi = WicketInjector.inject(sessionContext);
LOGGER.info("Sending initial sources");
Nabaztag nab = wi.getDelegatorInstance().vysperGetNabaztag(stanza.getFrom().getNode());
String retValue = Base64.encodeBase64String(AmbientPacketFactory
.composeAmbientPacket(nab.getLeftEar(), nab.getRightEar(),
nab.getBlink(), false, true));
stanzaBuilder = StanzaBuilder
.createIQStanza(stanza.getTo(), stanza.getFrom(),
IQStanzaType.RESULT, stanza.getID())
.startInnerElement("query", "violet:iq:sources")
.startInnerElement("packet", "violet:packet")
.addText(retValue).addAttribute("format", "1.0")
.addAttribute("ttl", "604800").endInnerElement();
} catch (Exception ex) {
ex.printStackTrace();
}
return stanzaBuilder.build();
}
}