导航菜单

页面标题

页面副标题

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

正在查看: 95爱播免登录版 v3.1.9 应用的 MultipleRecipientManager.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.XMPPException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.packet.PrivacyItem;
import org.jivesoftware.smack.util.Cache;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smackx.packet.MultipleAddresses;

public class MultipleRecipientManager {
    private static Cache<String, String> services = new Cache<>(100, 86400000);

    private static class PacketCopy extends Packet {
        private String text;

        public PacketCopy(String str) {
            this.text = str;
        }

        @Override
        public String toXML() {
            return this.text;
        }
    }

    private static java.lang.String getMultipleRecipienServiceAddress(org.jivesoftware.smack.Connection r7) {
        throw new UnsupportedOperationException("Method not decompiled: org.jivesoftware.smackx.MultipleRecipientManager.getMultipleRecipienServiceAddress(org.jivesoftware.smack.Connection):java.lang.String");
    }

    public static MultipleRecipientInfo getMultipleRecipientInfo(Packet packet) {
        MultipleAddresses extension = packet.getExtension("addresses", "http://jabber.org/protocol/address");
        if (extension == null) {
            return null;
        }
        return new MultipleRecipientInfo(extension);
    }

    public static void reply(Connection connection, Message message, Message message2) throws XMPPException {
        MultipleRecipientInfo multipleRecipientInfo = getMultipleRecipientInfo(message);
        if (multipleRecipientInfo == null) {
            throw new XMPPException("Original message does not contain multiple recipient info");
        }
        if (multipleRecipientInfo.shouldNotReply()) {
            throw new XMPPException("Original message should not be replied");
        }
        if (multipleRecipientInfo.getReplyRoom() != null) {
            throw new XMPPException("Reply should be sent through a room");
        }
        if (message.getThread() != null) {
            message2.setThread(message.getThread());
        }
        MultipleAddresses.Address replyAddress = multipleRecipientInfo.getReplyAddress();
        if (replyAddress != null && replyAddress.getJid() != null) {
            message2.setTo(replyAddress.getJid());
            connection.sendPacket(message2);
            return;
        }
        ArrayList arrayList = new ArrayList();
        ArrayList arrayList2 = new ArrayList();
        Iterator<MultipleAddresses.Address> it = multipleRecipientInfo.getTOAddresses().iterator();
        while (it.hasNext()) {
            arrayList.add(it.next().getJid());
        }
        Iterator<MultipleAddresses.Address> it2 = multipleRecipientInfo.getCCAddresses().iterator();
        while (it2.hasNext()) {
            arrayList2.add(it2.next().getJid());
        }
        if (!arrayList.contains(message.getFrom()) && !arrayList2.contains(message.getFrom())) {
            arrayList.add(message.getFrom());
        }
        String user = connection.getUser();
        if (!arrayList.remove(user) && !arrayList2.remove(user)) {
            String parseBareAddress = StringUtils.parseBareAddress(user);
            arrayList.remove(parseBareAddress);
            arrayList2.remove(parseBareAddress);
        }
        String multipleRecipienServiceAddress = getMultipleRecipienServiceAddress(connection);
        if (multipleRecipienServiceAddress != null) {
            sendThroughService(connection, message2, arrayList, arrayList2, null, null, null, false, multipleRecipienServiceAddress);
        } else {
            sendToIndividualRecipients(connection, message2, arrayList, arrayList2, null);
        }
    }

    public static void send(Connection connection, Packet packet, List<String> list, List<String> list2, List<String> list3) throws XMPPException {
        send(connection, packet, list, list2, list3, null, null, false);
    }

    private static void sendThroughService(Connection connection, Packet packet, List<String> list, List<String> list2, List<String> list3, String str, String str2, boolean z, String str3) {
        MultipleAddresses multipleAddresses = new MultipleAddresses();
        if (list != null) {
            Iterator<String> it = list.iterator();
            while (it.hasNext()) {
                multipleAddresses.addAddress(PrivacyItem.PrivacyRule.SUBSCRIPTION_TO, it.next(), (String) null, (String) null, false, (String) null);
            }
        }
        if (list2 != null) {
            Iterator<String> it2 = list2.iterator();
            while (it2.hasNext()) {
                multipleAddresses.addAddress("cc", it2.next(), (String) null, (String) null, false, (String) null);
            }
        }
        if (list3 != null) {
            Iterator<String> it3 = list3.iterator();
            while (it3.hasNext()) {
                multipleAddresses.addAddress("bcc", it3.next(), (String) null, (String) null, false, (String) null);
            }
        }
        if (z) {
            multipleAddresses.setNoReply();
        } else {
            if (str != null && str.trim().length() > 0) {
                multipleAddresses.addAddress("replyto", str, (String) null, (String) null, false, (String) null);
            }
            if (str2 != null && str2.trim().length() > 0) {
                multipleAddresses.addAddress("replyroom", str2, (String) null, (String) null, false, (String) null);
            }
        }
        packet.setTo(str3);
        packet.addExtension(multipleAddresses);
        connection.sendPacket(packet);
    }

    private static void sendToIndividualRecipients(Connection connection, Packet packet, List<String> list, List<String> list2, List<String> list3) {
        if (list != null) {
            Iterator<String> it = list.iterator();
            while (it.hasNext()) {
                packet.setTo(it.next());
                connection.sendPacket(new PacketCopy(packet.toXML()));
            }
        }
        if (list2 != null) {
            Iterator<String> it2 = list2.iterator();
            while (it2.hasNext()) {
                packet.setTo(it2.next());
                connection.sendPacket(new PacketCopy(packet.toXML()));
            }
        }
        if (list3 != null) {
            Iterator<String> it3 = list3.iterator();
            while (it3.hasNext()) {
                packet.setTo(it3.next());
                connection.sendPacket(new PacketCopy(packet.toXML()));
            }
        }
    }

    public static void send(Connection connection, Packet packet, List<String> list, List<String> list2, List<String> list3, String str, String str2, boolean z) throws XMPPException {
        String multipleRecipienServiceAddress = getMultipleRecipienServiceAddress(connection);
        if (multipleRecipienServiceAddress != null) {
            sendThroughService(connection, packet, list, list2, list3, str, str2, z, multipleRecipienServiceAddress);
            return;
        }
        if (z || ((str != null && str.trim().length() > 0) || (str2 != null && str2.trim().length() > 0))) {
            throw new XMPPException("Extended Stanza Addressing not supported by server");
        }
        sendToIndividualRecipients(connection, packet, list, list2, list3);
    }
}