正在查看: 95爱播免登录版 v3.1.9 应用的 MultipleRecipientManager.java JAVA 源代码文件
本页面展示 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);
}
}