package org.limewire.xmpp.client.impl.messages.authtoken; import org.jivesoftware.smack.PacketListener; import org.jivesoftware.smack.filter.PacketFilter; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.Packet; import org.limewire.friend.api.FriendException; import org.limewire.friend.api.FriendPresence; import org.limewire.friend.api.feature.AuthToken; import org.limewire.friend.api.feature.FeatureTransport; import org.limewire.xmpp.client.impl.XMPPFriendConnectionImpl; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; public class AuthTokenIQListener implements PacketListener, FeatureTransport<AuthToken> { private final XMPPFriendConnectionImpl connection; private final FeatureTransport.Handler<AuthToken> handler; @Inject public AuthTokenIQListener(@Assisted XMPPFriendConnectionImpl connection, Handler<AuthToken> handler) { this.connection = connection; this.handler = handler; } public void processPacket(Packet packet) { final AuthTokenIQ iq = (AuthTokenIQ)packet; if(iq.getType().equals(IQ.Type.SET)) { handler.featureReceived(iq.getFrom(), iq.getAuthToken()); } } @Override public void sendFeature(FriendPresence presence, AuthToken localFeature) throws FriendException { AuthTokenIQ queryResult = new AuthTokenIQ(localFeature); queryResult.setTo(presence.getPresenceId()); queryResult.setFrom(connection.getLocalJid()); queryResult.setType(IQ.Type.SET); connection.sendPacket(queryResult); } public PacketFilter getPacketFilter() { return new PacketFilter(){ public boolean accept(Packet packet) { return packet instanceof AuthTokenIQ; } }; } }