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); }