Esempio n. 1
0
        public override Version GetMinApiVersion()
        {
            XmlNode mandatoryOweXmlNode = base.GetMandatoryOweXmlNode("Requirements");
            Version version             = null;

            foreach (object obj in mandatoryOweXmlNode.ChildNodes)
            {
                XmlNode xmlNode = (XmlNode)obj;
                if (xmlNode.NodeType == XmlNodeType.Element && "Sets".Equals(xmlNode.LocalName, StringComparison.Ordinal))
                {
                    string input = ExtensionData.GetOptionalAttributeStringValue(xmlNode, "DefaultMinVersion", "1.1");
                    if (!Version.TryParse(input, out version) || version < SchemaConstants.LowestApiVersionSupportedBySchemaVersion1_1)
                    {
                        throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonDefaultVersionIsInvalid));
                    }
                    int num = 0;
                    foreach (object obj2 in xmlNode)
                    {
                        XmlNode xmlNode2 = (XmlNode)obj2;
                        if (xmlNode2.NodeType == XmlNodeType.Element && "Set".Equals(xmlNode2.LocalName, StringComparison.Ordinal))
                        {
                            num++;
                            if (num > 1)
                            {
                                throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonOnlyMailboxSetAllowedInRequirement));
                            }
                            string attributeStringValue = ExtensionData.GetAttributeStringValue(xmlNode2, "Name");
                            if (!"Mailbox".Equals(attributeStringValue, StringComparison.OrdinalIgnoreCase))
                            {
                                throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonOnlyMailboxSetAllowedInRequirement));
                            }
                            if (xmlNode2.Attributes != null)
                            {
                                XmlAttribute xmlAttribute = xmlNode2.Attributes["MinVersion"];
                                if (xmlAttribute != null && !string.IsNullOrEmpty(xmlAttribute.Value))
                                {
                                    input = xmlAttribute.Value;
                                    if (!Version.TryParse(input, out version) || version < SchemaConstants.LowestApiVersionSupportedBySchemaVersion1_1)
                                    {
                                        throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonMinVersionIsInvalid));
                                    }
                                }
                            }
                        }
                    }
                    if (num != 1)
                    {
                        throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonOnlyMailboxSetAllowedInRequirement));
                    }
                    break;
                }
            }
            return(version);
        }
        // Token: 0x06000BB5 RID: 2997 RVA: 0x0002FB58 File Offset: 0x0002DD58
        protected override void ParseResponse(byte[] responseBuffer, int responseBufferSize)
        {
            Dictionary <string, string> dictionary  = new Dictionary <string, string>();
            Dictionary <string, string> dictionary2 = new Dictionary <string, string>();

            try
            {
                using (MemoryStream memoryStream = new MemoryStream(responseBuffer, 0, responseBuffer.Length))
                {
                    SafeXmlDocument safeXmlDocument = new SafeXmlDocument();
                    safeXmlDocument.PreserveWhitespace = true;
                    safeXmlDocument.Load(memoryStream);
                    XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(safeXmlDocument.NameTable);
                    xmlNamespaceManager.AddNamespace("o", "urn:schemas-microsoft-com:office:office");
                    XmlNodeList xmlNodeList = safeXmlDocument.SelectNodes("/o:assets/o:asset", xmlNamespaceManager);
                    foreach (object obj in xmlNodeList)
                    {
                        XmlNode xmlNode = (XmlNode)obj;
                        string  attributeStringValue  = ExtensionData.GetAttributeStringValue(xmlNode, "o:cm");
                        string  attributeStringValue2 = ExtensionData.GetAttributeStringValue(xmlNode, "o:assetid");
                        string  value = HttpUtility.UrlEncode(HttpUtility.HtmlDecode(ExtensionData.GetAttributeStringValue(xmlNode, "o:etok")));
                        bool    flag  = false;
                        string  optionalAttributeStringValue = ExtensionData.GetOptionalAttributeStringValue(xmlNode, "o:status", string.Empty);
                        foreach (TokenRenewRequestAsset tokenRenewRequestAsset in this.extensionTokenRenewList)
                        {
                            if (string.Equals(tokenRenewRequestAsset.MarketplaceAssetID, attributeStringValue2, StringComparison.OrdinalIgnoreCase) && string.Equals(tokenRenewRequestAsset.MarketplaceContentMarket, attributeStringValue, StringComparison.OrdinalIgnoreCase))
                            {
                                tokenRenewRequestAsset.IsResponseFound = true;
                                if ("1".Equals(optionalAttributeStringValue, StringComparison.OrdinalIgnoreCase))
                                {
                                    dictionary.Add(tokenRenewRequestAsset.ExtensionID, value);
                                }
                                else if ("6".Equals(optionalAttributeStringValue, StringComparison.OrdinalIgnoreCase))
                                {
                                    dictionary2.Add(tokenRenewRequestAsset.ExtensionID, "2.1");
                                }
                                else
                                {
                                    dictionary2.Add(tokenRenewRequestAsset.ExtensionID, "2.0");
                                }
                                flag = true;
                                break;
                            }
                        }
                        if (!flag)
                        {
                            BaseAsyncCommand.Tracer.TraceError <string, string, string>(0L, "The returned token does not match the asset and marketplace in the request. Asset id: {0} Marketplace: {1} Status code: {2}.", attributeStringValue2, attributeStringValue, optionalAttributeStringValue);
                            ExtensionDiagnostics.Logger.LogEvent(ApplicationLogicEventLogConstants.Tuple_MismatchedReturnedToken, attributeStringValue2, new object[]
                            {
                                this.scenario,
                                this.requestId,
                                base.GetLoggedMailboxIdentifier(),
                                attributeStringValue2,
                                attributeStringValue,
                                optionalAttributeStringValue
                            });
                        }
                    }
                    foreach (TokenRenewRequestAsset tokenRenewRequestAsset2 in this.extensionTokenRenewList)
                    {
                        if (!tokenRenewRequestAsset2.IsResponseFound)
                        {
                            dictionary2.Add(tokenRenewRequestAsset2.ExtensionID, "2.0");
                        }
                    }
                }
            }
            catch (XmlException exception)
            {
                this.InternalFailureCallback(exception, null);
                return;
            }
            base.LogResponseParsed();
            this.successCallback(dictionary, dictionary2);
        }