导航菜单

页面标题

页面副标题

95爱播免登录版 v3.1.9 - OfflineMessageManager.java 源代码

正在查看: 95爱播免登录版 v3.1.9 应用的 OfflineMessageManager.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package org.jivesoftware.smackx;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.jivesoftware.smack.Connection;
import org.jivesoftware.smack.PacketCollector;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketExtensionFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketIDFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smackx.packet.DiscoverItems;
import org.jivesoftware.smackx.packet.OfflineMessageRequest;

public class OfflineMessageManager {
    private static final String namespace = "http://jabber.org/protocol/offline";
    private Connection connection;
    private PacketFilter packetFilter = new AndFilter(new PacketExtensionFilter("offline", namespace), new PacketTypeFilter(Message.class));

    public OfflineMessageManager(Connection connection) {
        this.connection = connection;
    }

    public void deleteMessages(List<String> list) throws XMPPException {
        Packet offlineMessageRequest = new OfflineMessageRequest();
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            OfflineMessageRequest.Item item = new OfflineMessageRequest.Item(it.next());
            item.setAction("remove");
            offlineMessageRequest.addItem(item);
        }
        PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(offlineMessageRequest.getPacketID()));
        this.connection.sendPacket(offlineMessageRequest);
        IQ iq = (IQ) createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
        createPacketCollector.cancel();
        if (iq == null) {
            throw new XMPPException("No response from server.");
        }
        if (iq.getError() != null) {
            throw new XMPPException(iq.getError());
        }
    }

    public Iterator<OfflineMessageHeader> getHeaders() throws XMPPException {
        ArrayList arrayList = new ArrayList();
        Iterator items = ServiceDiscoveryManager.getInstanceFor(this.connection).discoverItems(null, namespace).getItems();
        while (items.hasNext()) {
            arrayList.add(new OfflineMessageHeader((DiscoverItems.Item) items.next()));
        }
        return arrayList.iterator();
    }

    public int getMessageCount() throws XMPPException {
        Form formFrom = Form.getFormFrom(ServiceDiscoveryManager.getInstanceFor(this.connection).discoverInfo(null, namespace));
        if (formFrom != null) {
            return Integer.parseInt(formFrom.getField("number_of_messages").getValues().next());
        }
        return 0;
    }

    public Iterator<Message> getMessages(final List<String> list) throws XMPPException {
        ArrayList arrayList = new ArrayList();
        Packet offlineMessageRequest = new OfflineMessageRequest();
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            OfflineMessageRequest.Item item = new OfflineMessageRequest.Item(it.next());
            item.setAction("view");
            offlineMessageRequest.addItem(item);
        }
        PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(offlineMessageRequest.getPacketID()));
        PacketCollector createPacketCollector2 = this.connection.createPacketCollector(new AndFilter(this.packetFilter, new PacketFilter() {
            @Override
            public boolean accept(Packet packet) {
                return list.contains(packet.getExtension("offline", OfflineMessageManager.namespace).getNode());
            }
        }));
        this.connection.sendPacket(offlineMessageRequest);
        IQ iq = (IQ) createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
        createPacketCollector.cancel();
        if (iq == null) {
            throw new XMPPException("No response from server.");
        }
        if (iq.getError() != null) {
            throw new XMPPException(iq.getError());
        }
        for (Message message = (Message) createPacketCollector2.nextResult(SmackConfiguration.getPacketReplyTimeout()); message != null; message = (Message) createPacketCollector2.nextResult(SmackConfiguration.getPacketReplyTimeout())) {
            arrayList.add(message);
        }
        createPacketCollector2.cancel();
        return arrayList.iterator();
    }

    public boolean supportsFlexibleRetrieval() throws XMPPException {
        return ServiceDiscoveryManager.getInstanceFor(this.connection).discoverInfo(this.connection.getServiceName()).containsFeature(namespace);
    }

    public void deleteMessages() throws XMPPException {
        Packet offlineMessageRequest = new OfflineMessageRequest();
        offlineMessageRequest.setPurge(true);
        PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(offlineMessageRequest.getPacketID()));
        this.connection.sendPacket(offlineMessageRequest);
        IQ iq = (IQ) createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
        createPacketCollector.cancel();
        if (iq != null) {
            if (iq.getError() != null) {
                throw new XMPPException(iq.getError());
            }
            return;
        }
        throw new XMPPException("No response from server.");
    }

    public Iterator<Message> getMessages() throws XMPPException {
        ArrayList arrayList = new ArrayList();
        Packet offlineMessageRequest = new OfflineMessageRequest();
        offlineMessageRequest.setFetch(true);
        PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(offlineMessageRequest.getPacketID()));
        PacketCollector createPacketCollector2 = this.connection.createPacketCollector(this.packetFilter);
        this.connection.sendPacket(offlineMessageRequest);
        IQ iq = (IQ) createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
        createPacketCollector.cancel();
        if (iq != null) {
            if (iq.getError() == null) {
                for (Message message = (Message) createPacketCollector2.nextResult(SmackConfiguration.getPacketReplyTimeout()); message != null; message = (Message) createPacketCollector2.nextResult(SmackConfiguration.getPacketReplyTimeout())) {
                    arrayList.add(message);
                }
                createPacketCollector2.cancel();
                return arrayList.iterator();
            }
            throw new XMPPException(iq.getError());
        }
        throw new XMPPException("No response from server.");
    }
}