package com.sissi.pipeline.in.presence.roster;
import com.sissi.context.JID;
import com.sissi.context.JIDContext;
import com.sissi.pipeline.Input;
import com.sissi.pipeline.in.ProxyProcessor;
import com.sissi.protocol.Protocol;
import com.sissi.protocol.iq.roster.RosterSubscription;
import com.sissi.protocol.presence.Presence;
import com.sissi.protocol.presence.PresenceType;
import com.sissi.ucenter.relation.roster.RosterRelation;
/**
* 自动批准,对方已订阅,Presence type = subscribed
*
* @author kim 2014年1月24日
*/
public class PresenceRosterSubscribe2ReplyFansProcessor extends ProxyProcessor {
private final String[] relations = new String[] { RosterSubscription.FROM.toString() };
private final Input proxy;
public PresenceRosterSubscribe2ReplyFansProcessor(Input proxy) {
super();
this.proxy = proxy;
}
@Override
public boolean input(JIDContext context, Protocol protocol) {
JID to = super.build(protocol.getTo());
return super.ourRelation(context.jid(), to).cast(RosterRelation.class).in(this.relations) ? this.writeAndReturn(context, to, Presence.class.cast(protocol)) : true;
}
private boolean writeAndReturn(JIDContext context, JID to, Presence presence) {
this.proxy.input(super.findOne(to), presence.type(PresenceType.SUBSCRIBED).setTo(context.jid().asStringWithBare()));
return false;
}
}