package asmack.org.jivesoftware.smack.util; import asmack.org.jivesoftware.smack.Connection; import asmack.org.jivesoftware.smack.packet.Authentication; import asmack.org.jivesoftware.smack.packet.Bind; import asmack.org.jivesoftware.smack.packet.DefaultPacketExtension; import asmack.org.jivesoftware.smack.packet.IQ; import asmack.org.jivesoftware.smack.packet.Message; import asmack.org.jivesoftware.smack.packet.Packet; import asmack.org.jivesoftware.smack.packet.PacketExtension; import asmack.org.jivesoftware.smack.packet.Ping; import asmack.org.jivesoftware.smack.packet.Presence; import asmack.org.jivesoftware.smack.packet.PrivacyItem; import asmack.org.jivesoftware.smack.packet.Registration; import asmack.org.jivesoftware.smack.packet.RosterPacket; import asmack.org.jivesoftware.smack.packet.StreamError; import asmack.org.jivesoftware.smack.packet.XMPPError; import asmack.org.jivesoftware.smack.provider.IQProvider; import asmack.org.jivesoftware.smack.provider.PacketExtensionProvider; import asmack.org.jivesoftware.smack.provider.ProviderManager; import asmack.org.jivesoftware.smack.sasl.SASLMechanism; import asmack.org.jivesoftware.smackx.FormField; import com.health.im.chat.domain.GroupChatMember; import com.igexin.getuiext.data.Consts; import com.toogoo.appbase.bean.PrescriptionPatientInfo; import com.umeng.analytics.pro.c; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.PrintStream; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; public class PacketParserUtils { private static final String PROPERTIES_NAMESPACE = "http://www.jivesoftware.com/xmlns/xmpp/properties"; private static Object decode(Class cls, String str) throws Exception { if (cls.getName().equals("java.lang.String")) { return str; } if (cls.getName().equals(FormField.TYPE_BOOLEAN)) { return Boolean.valueOf(str); } if (cls.getName().equals("int")) { return Integer.valueOf(str); } if (cls.getName().equals("long")) { return Long.valueOf(str); } if (cls.getName().equals("float")) { return Float.valueOf(str); } if (cls.getName().equals("double")) { return Double.valueOf(str); } if (cls.getName().equals("java.lang.Class")) { return Class.forName(str); } return null; } private static String getLanguageAttribute(XmlPullParser xmlPullParser) { for (int i = 0; i < xmlPullParser.getAttributeCount(); i++) { String attributeName = xmlPullParser.getAttributeName(i); if ("xml:lang".equals(attributeName) || ("lang".equals(attributeName) && "xml".equals(xmlPullParser.getAttributePrefix(i)))) { return xmlPullParser.getAttributeValue(i); } } return null; } private static Authentication parseAuthentication(XmlPullParser xmlPullParser) throws Exception { Authentication authentication = new Authentication(); boolean z = false; while (!z) { int next = xmlPullParser.next(); if (next == 2) { if (xmlPullParser.getName().equals("username")) { authentication.setUsername(xmlPullParser.nextText()); } else if (xmlPullParser.getName().equals("password")) { authentication.setPassword(xmlPullParser.nextText()); } else if (xmlPullParser.getName().equals("digest")) { authentication.setDigest(xmlPullParser.nextText()); } else if (xmlPullParser.getName().equals("resource")) { authentication.setResource(xmlPullParser.nextText()); } } else if (next == 3 && xmlPullParser.getName().equals("query")) { z = true; } } return authentication; } public static Collection<String> parseCompressionMethods(XmlPullParser xmlPullParser) throws IOException, XmlPullParserException { ArrayList arrayList = new ArrayList(); boolean z = false; while (!z) { int next = xmlPullParser.next(); if (next == 2) { if (xmlPullParser.getName().equals("method")) { arrayList.add(xmlPullParser.nextText()); } } else if (next == 3 && xmlPullParser.getName().equals("compression")) { z = true; } } return arrayList; } private static String parseContent(XmlPullParser xmlPullParser) throws XmlPullParserException, IOException { int depth = xmlPullParser.getDepth(); String str = ""; while (true) { if (xmlPullParser.next() == 3 && xmlPullParser.getDepth() == depth) { return str; } str = String.valueOf(str) + xmlPullParser.getText(); } } public static XMPPError parseError(XmlPullParser xmlPullParser) throws Exception { ArrayList arrayList = new ArrayList(); boolean z = false; String str = null; String str2 = GroupChatMember.GROUP_ROLE_ADD; for (int i = 0; i < xmlPullParser.getAttributeCount(); i++) { if (xmlPullParser.getAttributeName(i).equals("code")) { str2 = xmlPullParser.getAttributeValue("", "code"); } if (xmlPullParser.getAttributeName(i).equals("type")) { str = xmlPullParser.getAttributeValue("", "type"); } } String str3 = null; String str4 = null; while (!z) { int next = xmlPullParser.next(); if (next == 2) { if (xmlPullParser.getName().equals(Consts.PROMOTION_TYPE_TEXT)) { str3 = xmlPullParser.nextText(); } else { String name = xmlPullParser.getName(); String namespace = xmlPullParser.getNamespace(); if ("urn:ietf:params:xml:ns:xmpp-stanzas".equals(namespace)) { str4 = name; } else { arrayList.add(parsePacketExtension(name, namespace, xmlPullParser)); } } } else if (next == 3 && xmlPullParser.getName().equals(c.O)) { z = true; } } XMPPError.Type type = XMPPError.Type.CANCEL; if (str != null) { try { type = XMPPError.Type.valueOf(str.toUpperCase()); } catch (IllegalArgumentException e2) { e2.printStackTrace(); } } return new XMPPError(Integer.parseInt(str2), type, str4, str3, arrayList); } public static IQ parseIQ(XmlPullParser xmlPullParser, Connection connection) throws Exception { String attributeValue = xmlPullParser.getAttributeValue("", "id"); String attributeValue2 = xmlPullParser.getAttributeValue("", "to"); String attributeValue3 = xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_FROM); IQ.Type fromString = IQ.Type.fromString(xmlPullParser.getAttributeValue("", "type")); boolean z = false; IQ iq = null; XMPPError xMPPError = null; while (!z) { int next = xmlPullParser.next(); if (next == 2) { String name = xmlPullParser.getName(); String namespace = xmlPullParser.getNamespace(); if (name.equals(c.O)) { xMPPError = parseError(xmlPullParser); } else if (name.equals("query") && namespace.equals("jabber:iq:auth")) { iq = parseAuthentication(xmlPullParser); } else if (name.equals("query") && namespace.equals("jabber:iq:roster")) { iq = parseRoster(xmlPullParser); } else if (name.equals("query") && namespace.equals("jabber:iq:register")) { iq = parseRegistration(xmlPullParser); } else if (name.equals("bind") && namespace.equals("urn:ietf:params:xml:ns:xmpp-bind")) { iq = parseResourceBinding(xmlPullParser); } else if (name.equals("ping")) { iq = new Ping(); AnonymousClass1 r8 = new IQ() { /* class asmack.org.jivesoftware.smack.util.PacketParserUtils.AnonymousClass1 */ @Override // asmack.org.jivesoftware.smack.packet.IQ public String getChildElementXML() { return null; } }; r8.setPacketID(attributeValue); r8.setTo(attributeValue3); r8.setFrom(attributeValue2); r8.setType(IQ.Type.RESULT); connection.sendPacket(r8); } else { Object iQProvider = ProviderManager.getInstance().getIQProvider(name, namespace); if (iQProvider != null) { if (iQProvider instanceof IQProvider) { iq = ((IQProvider) iQProvider).parseIQ(xmlPullParser); } else if (iQProvider instanceof Class) { iq = (IQ) parseWithIntrospection(name, (Class) iQProvider, xmlPullParser); } } } } else if (next == 3 && xmlPullParser.getName().equals("iq")) { z = true; } } if (iq == null) { if (IQ.Type.GET == fromString || IQ.Type.SET == fromString) { AnonymousClass2 r12 = new IQ() { /* class asmack.org.jivesoftware.smack.util.PacketParserUtils.AnonymousClass2 */ @Override // asmack.org.jivesoftware.smack.packet.IQ public String getChildElementXML() { return null; } }; r12.setPacketID(attributeValue); r12.setTo(attributeValue3); r12.setFrom(attributeValue2); r12.setType(IQ.Type.ERROR); r12.setError(new XMPPError(XMPPError.Condition.feature_not_implemented)); connection.sendPacket(r12); return null; } iq = new IQ() { /* class asmack.org.jivesoftware.smack.util.PacketParserUtils.AnonymousClass3 */ @Override // asmack.org.jivesoftware.smack.packet.IQ public String getChildElementXML() { return null; } }; } iq.setPacketID(attributeValue); iq.setTo(attributeValue2); iq.setFrom(attributeValue3); iq.setType(fromString); iq.setError(xMPPError); return iq; } public static Collection<String> parseMechanisms(XmlPullParser xmlPullParser) throws Exception { ArrayList arrayList = new ArrayList(); boolean z = false; while (!z) { int next = xmlPullParser.next(); if (next == 2) { if (xmlPullParser.getName().equals("mechanism")) { arrayList.add(xmlPullParser.nextText()); } } else if (next == 3 && xmlPullParser.getName().equals("mechanisms")) { z = true; } } return arrayList; } public static Packet parseMessage(XmlPullParser xmlPullParser) throws Exception { HashMap hashMap; Message message = new Message(); String attributeValue = xmlPullParser.getAttributeValue("", "id"); if (attributeValue == null) { attributeValue = Packet.ID_NOT_AVAILABLE; } message.setPacketID(attributeValue); message.setTo(xmlPullParser.getAttributeValue("", "to")); message.setFrom(xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_FROM)); message.setType(Message.Type.fromString(xmlPullParser.getAttributeValue("", "type"))); message.attributes.parserAttribute(xmlPullParser); message.attributes.removeAttribute("id"); message.attributes.removeAttribute("to"); message.attributes.removeAttribute(PrivacyItem.PrivacyRule.SUBSCRIPTION_FROM); message.attributes.removeAttribute("type"); String languageAttribute = getLanguageAttribute(xmlPullParser); if (languageAttribute == null || "".equals(languageAttribute.trim())) { languageAttribute = Packet.getDefaultLanguage(); } else { message.setLanguage(languageAttribute); } String str = null; Map<String, Object> map = null; boolean z = false; while (!z) { int next = xmlPullParser.next(); if (next == 2) { String name = xmlPullParser.getName(); String namespace = xmlPullParser.getNamespace(); if (name.equals("subject")) { String languageAttribute2 = getLanguageAttribute(xmlPullParser); if (languageAttribute2 == null) { languageAttribute2 = languageAttribute; } String parseContent = parseContent(xmlPullParser); if (message.getSubject(languageAttribute2) == null) { message.addSubject(languageAttribute2, parseContent); } } else if (name.equals("body")) { String languageAttribute3 = getLanguageAttribute(xmlPullParser); if (languageAttribute3 == null) { languageAttribute3 = languageAttribute; } int attributeCount = xmlPullParser.getAttributeCount(); if (attributeCount > 0) { hashMap = new HashMap(); for (int i = 0; i < attributeCount; i++) { hashMap.put(xmlPullParser.getAttributeName(i), xmlPullParser.getAttributeValue(i)); } } else { hashMap = null; } String parseContent2 = parseContent(xmlPullParser); if (message.getBody(languageAttribute3) == null) { Message.Body addBody = message.addBody(languageAttribute3, parseContent2); if (attributeCount > 0) { addBody.attributes.addAttributes(hashMap); } } } else if (name.equals("thread")) { if (str == null) { str = xmlPullParser.nextText(); } } else if (name.equals(c.O)) { message.setError(parseError(xmlPullParser)); } else if (!name.equals("properties") || !namespace.equals(PROPERTIES_NAMESPACE)) { message.addExtension(parsePacketExtension(name, namespace, xmlPullParser)); } else { map = parseProperties(xmlPullParser); } } else if (next == 3 && xmlPullParser.getName().equals("message")) { z = true; } } message.setThread(str); if (map != null) { for (String str2 : map.keySet()) { message.setProperty(str2, map.get(str2)); } } return message; } public static PacketExtension parsePacketExtension(String str, String str2, XmlPullParser xmlPullParser) throws Exception { String text; Object extensionProvider = ProviderManager.getInstance().getExtensionProvider(str, str2); if (extensionProvider != null) { if (extensionProvider instanceof PacketExtensionProvider) { return ((PacketExtensionProvider) extensionProvider).parseExtension(xmlPullParser); } if (extensionProvider instanceof Class) { return (PacketExtension) parseWithIntrospection(str, (Class) extensionProvider, xmlPullParser); } } DefaultPacketExtension defaultPacketExtension = new DefaultPacketExtension(str, str2); boolean z = false; while (!z) { int next = xmlPullParser.next(); if (next == 2) { String name = xmlPullParser.getName(); if (xmlPullParser.isEmptyElementTag()) { text = ""; } else if (xmlPullParser.next() == 4) { text = xmlPullParser.getText(); } defaultPacketExtension.setValue(name, text); } else if (next == 3 && xmlPullParser.getName().equals(str)) { z = true; } } return defaultPacketExtension; } public static Presence parsePresence(XmlPullParser xmlPullParser) throws Exception { Presence.Type type = Presence.Type.available; String attributeValue = xmlPullParser.getAttributeValue("", "type"); if (attributeValue != null && !attributeValue.equals("")) { try { type = Presence.Type.valueOf(attributeValue); } catch (IllegalArgumentException unused) { PrintStream printStream = System.err; printStream.println("Found invalid presence type " + attributeValue); } } Presence presence = new Presence(type); presence.setTo(xmlPullParser.getAttributeValue("", "to")); presence.setFrom(xmlPullParser.getAttributeValue("", PrivacyItem.PrivacyRule.SUBSCRIPTION_FROM)); String attributeValue2 = xmlPullParser.getAttributeValue("", "id"); presence.setPacketID(attributeValue2 == null ? Packet.ID_NOT_AVAILABLE : attributeValue2); String languageAttribute = getLanguageAttribute(xmlPullParser); if (languageAttribute != null && !"".equals(languageAttribute.trim())) { presence.setLanguage(languageAttribute); } if (attributeValue2 == null) { attributeValue2 = Packet.ID_NOT_AVAILABLE; } presence.setPacketID(attributeValue2); boolean z = false; while (!z) { int next = xmlPullParser.next(); if (next == 2) { String name = xmlPullParser.getName(); String namespace = xmlPullParser.getNamespace(); if (name.equals("status")) { presence.setStatus(xmlPullParser.nextText()); } else if (name.equals("priority")) { try { presence.setPriority(Integer.parseInt(xmlPullParser.nextText())); } catch (NumberFormatException unused2) { } catch (IllegalArgumentException unused3) { presence.setPriority(0); } } else if (name.equals("show")) { String nextText = xmlPullParser.nextText(); try { presence.setMode(Presence.Mode.valueOf(nextText)); } catch (IllegalArgumentException unused4) { PrintStream printStream2 = System.err; printStream2.println("Found invalid presence mode " + nextText); } } else if (name.equals(c.O)) { presence.setError(parseError(xmlPullParser)); } else if (!name.equals("properties") || !namespace.equals(PROPERTIES_NAMESPACE)) { presence.addExtension(parsePacketExtension(name, namespace, xmlPullParser)); } else { Map<String, Object> parseProperties = parseProperties(xmlPullParser); for (String str : parseProperties.keySet()) { presence.setProperty(str, parseProperties.get(str)); } } } else if (next == 3 && xmlPullParser.getName().equals("presence")) { z = true; } } return presence; } /* JADX WARN: Multi-variable type inference failed */ /* JADX WARN: Type inference failed for: r1v24, types: [java.lang.Boolean] */ /* JADX WARN: Type inference failed for: r1v25, types: [java.lang.Double] */ /* JADX WARN: Type inference failed for: r1v26, types: [java.lang.Float] */ /* JADX WARN: Type inference failed for: r1v27, types: [java.lang.Long] */ /* JADX WARN: Type inference failed for: r1v29, types: [java.lang.Integer] */ /* JADX WARNING: Unknown variable types count: 5 */ public static Map<String, Object> parseProperties(XmlPullParser xmlPullParser) throws Exception { String str; HashMap hashMap = new HashMap(); while (true) { int next = xmlPullParser.next(); if (next == 2 && xmlPullParser.getName().equals("property")) { boolean z = false; String str2 = null; String str3 = null; String str4 = null; String str5 = null; while (!z) { int next2 = xmlPullParser.next(); if (next2 == 2) { String name = xmlPullParser.getName(); if (name.equals("name")) { str4 = xmlPullParser.nextText(); } else if (name.equals("value")) { str2 = xmlPullParser.getAttributeValue("", "type"); str3 = xmlPullParser.nextText(); } } else if (next2 == 3 && xmlPullParser.getName().equals("property")) { if ("integer".equals(str2)) { str = Integer.valueOf(str3); } else if ("long".equals(str2)) { str = Long.valueOf(str3); } else if ("float".equals(str2)) { str = Float.valueOf(str3); } else if ("double".equals(str2)) { str = Double.valueOf(str3); } else if (FormField.TYPE_BOOLEAN.equals(str2)) { str = Boolean.valueOf(str3); } else { if ("string".equals(str2)) { str5 = str3; } else if ("java-object".equals(str2)) { try { str = new ObjectInputStream(new ByteArrayInputStream(StringUtils.decodeBase64(str3))).readObject(); } catch (Exception e2) { e2.printStackTrace(); } } if (!(str4 == null || str5 == null)) { hashMap.put(str4, str5); } z = true; } str5 = str; hashMap.put(str4, str5); z = true; } } } else if (next == 3 && xmlPullParser.getName().equals("properties")) { return hashMap; } } } private static Registration parseRegistration(XmlPullParser xmlPullParser) throws Exception { Registration registration = new Registration(); boolean z = false; while (!z) { int next = xmlPullParser.next(); if (next == 2) { if (xmlPullParser.getNamespace().equals("jabber:iq:register")) { String name = xmlPullParser.getName(); if (xmlPullParser.next() == 4) { String text = xmlPullParser.getText(); if (name.equals("instructions")) { registration.setInstructions(text); } else { registration.addAttribute(name, text); } } else if (name.equals("registered")) { registration.setRegistered(true); } else { registration.addRequiredField(name); } } else { registration.addExtension(parsePacketExtension(xmlPullParser.getName(), xmlPullParser.getNamespace(), xmlPullParser)); } } else if (next == 3 && xmlPullParser.getName().equals("query")) { z = true; } } return registration; } private static Bind parseResourceBinding(XmlPullParser xmlPullParser) throws IOException, XmlPullParserException { Bind bind = new Bind(); boolean z = false; while (!z) { int next = xmlPullParser.next(); if (next == 2) { if (xmlPullParser.getName().equals("resource")) { bind.setResource(xmlPullParser.nextText()); } else if (xmlPullParser.getName().equals("jid")) { bind.setJid(xmlPullParser.nextText()); } } else if (next == 3 && xmlPullParser.getName().equals("bind")) { z = true; } } return bind; } private static RosterPacket parseRoster(XmlPullParser xmlPullParser) throws Exception { String nextText; RosterPacket rosterPacket = new RosterPacket(); RosterPacket.Item item = null; boolean z = false; while (!z) { if (xmlPullParser.getEventType() == 2 && xmlPullParser.getName().equals("query")) { rosterPacket.setVersion(xmlPullParser.getAttributeValue(null, "ver")); rosterPacket.mAttris.parserAttribute(xmlPullParser); } int next = xmlPullParser.next(); if (next == 2) { if (xmlPullParser.getName().equals("item")) { String attributeValue = xmlPullParser.getAttributeValue("", "jid"); RosterPacket.Item item2 = new RosterPacket.Item(attributeValue, xmlPullParser.getAttributeValue("", "name")); item2.setItemStatus(RosterPacket.ItemStatus.fromString(xmlPullParser.getAttributeValue("", "ask"))); String attributeValue2 = xmlPullParser.getAttributeValue("", "subscription"); if (attributeValue2 == null) { attributeValue2 = "none"; } item2.setItemType(RosterPacket.ItemType.valueOf(attributeValue2)); item2.attris.parserAttribute(xmlPullParser); if (StringUtils.parseServer(attributeValue).startsWith("broadcast")) { RosterPacket.Item.Member member = null; boolean z2 = false; while (!z2) { int next2 = xmlPullParser.next(); String name = xmlPullParser.getName(); if (next2 == 2) { if ("member".equals(name)) { member = new RosterPacket.Item.Member(); member.mAttris.parserAttribute(xmlPullParser); } } else if (next2 == 3) { if ("member".equals(name)) { item2.addMember(member); } else if ("item".equals(name)) { z2 = true; } } } } rosterPacket.addRosterItem(item2); item = item2; } if (xmlPullParser.getName().equals("group") && item != null && (nextText = xmlPullParser.nextText()) != null && nextText.trim().length() > 0) { item.addGroupName(nextText); } } else if (next == 3 && xmlPullParser.getName().equals("query")) { z = true; } } return rosterPacket; } public static SASLMechanism.Failure parseSASLFailure(XmlPullParser xmlPullParser) throws Exception { String str = null; boolean z = false; while (!z) { int next = xmlPullParser.next(); if (next == 2) { if (!xmlPullParser.getName().equals("failure")) { str = xmlPullParser.getName(); } } else if (next == 3 && xmlPullParser.getName().equals("failure")) { z = true; } } return new SASLMechanism.Failure(str); } public static StreamError parseStreamError(XmlPullParser xmlPullParser) throws IOException, XmlPullParserException { StreamError streamError = null; boolean z = false; while (!z) { int next = xmlPullParser.next(); if (next == 2) { streamError = new StreamError(xmlPullParser.getName()); } else if (next == 3 && xmlPullParser.getName().equals(c.O)) { z = true; } } return streamError; } public static Object parseWithIntrospection(String str, Class cls, XmlPullParser xmlPullParser) throws Exception { Object newInstance = cls.newInstance(); boolean z = false; while (!z) { int next = xmlPullParser.next(); if (next == 2) { String name = xmlPullParser.getName(); String nextText = xmlPullParser.nextText(); Class<?> cls2 = newInstance.getClass(); Class<?> returnType = cls2.getMethod(PrescriptionPatientInfo.OPERATE_PRESCRIPTIONPATIENTINFO_GET + Character.toUpperCase(name.charAt(0)) + name.substring(1), new Class[0]).getReturnType(); Object decode = decode(returnType, nextText); Class<?> cls3 = newInstance.getClass(); cls3.getMethod(PrescriptionPatientInfo.OPERATE_PRESCRIPTIONPATIENTINFO_SET + Character.toUpperCase(name.charAt(0)) + name.substring(1), returnType).invoke(newInstance, decode); } else if (next == 3 && xmlPullParser.getName().equals(str)) { z = true; } } return newInstance; } }