// Token: 0x06000CE9 RID: 3305 RVA: 0x000459B0 File Offset: 0x00043BB0 private bool Respond(StoreObjectId itemId, string requestId, MeetingResponseCommand.RequestNodeData response, bool usingLongId) { if (base.Version <= 141) { return(this.LegacyRespond(itemId, requestId, response.UserResponse, usingLongId)); } if (response.RespondToEventParameters == null) { throw new InvalidOperationException("Response.RespondToEventParameters must not be null at this point."); } StoreObjectId storeObjectId = null; string calendarId = null; if (this.CalendaringContainer == null) { AirSyncDiagnostics.TraceDebug(ExTraceGlobals.RequestsTracer, this, "Set default CalendaringContainer"); this.CalendaringContainer = new CalendaringContainer(base.MailboxSession, null); } if (this.MailboxGuid == Guid.Empty) { AirSyncDiagnostics.TraceDebug(ExTraceGlobals.RequestsTracer, this, "Set default MailboxGuid"); this.MailboxGuid = base.MailboxSession.MailboxGuid; } string key = EntitySyncItem.GetKey(this.MailboxGuid, itemId); IEvents events; if (itemId.ObjectType == StoreObjectType.CalendarItem || itemId.ObjectType == StoreObjectType.CalendarItemOccurrence || itemId.ObjectType == StoreObjectType.CalendarItemSeries) { storeObjectId = itemId; events = EntitySyncItem.GetEvents(this.CalendaringContainer, base.MailboxSession, itemId); } else { if (itemId.ObjectType != StoreObjectType.MeetingRequest) { this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolVersionMismatch, response.UserResponse, "The item is not meeting-request or calendar item.", usingLongId); base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "UnsupportedObjectType" + itemId.ObjectType); return(false); } using (MeetingMessage meetingMessage = MeetingMessage.Bind(base.MailboxSession, itemId)) { if (meetingMessage == null) { this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolVersionMismatch, response.UserResponse, "Cannot find the meeting-request as specified in the reqest.", usingLongId); base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "ItemNotFound"); return(false); } using (CalendarItemBase correlatedItem = meetingMessage.GetCorrelatedItem()) { if (meetingMessage == null) { this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolVersionMismatch, response.UserResponse, "Cannot find the correlated meeitng item.", usingLongId); base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "NullCalItemInMRCmd"); return(false); } storeObjectId = correlatedItem.Id.ObjectId; } } response.RespondToEventParameters.MeetingRequestIdToBeDeleted = key; key = EntitySyncItem.GetKey(this.MailboxGuid, storeObjectId); events = this.CalendaringContainer.Calendars.Default.Events; } try { events.Respond(key, response.RespondToEventParameters, null); } catch (LocalizedException ex) { this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolError, response.UserResponse, ex.Message, usingLongId); base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "EntityRespondError"); return(false); } if (storeObjectId != null) { MailboxSyncItemId mailboxSyncItemId = MailboxSyncItemId.CreateForNewItem(storeObjectId); if (this.CalendarItemIdMapping.Contains(mailboxSyncItemId)) { calendarId = this.CalendarItemIdMapping[mailboxSyncItemId]; } else { calendarId = this.CalendarItemIdMapping.Add(mailboxSyncItemId); this.calendarSyncStateChangedFlag = true; } } this.AppendXmlNode(requestId, StatusCode.Success, calendarId, response.UserResponse, usingLongId); return(true); }
// Token: 0x06000CE5 RID: 3301 RVA: 0x00045540 File Offset: 0x00043740 private void ValidateRequestNodeData(XmlNode requestNode) { XmlNode xmlNode = requestNode["UserResponse", "MeetingResponse:"]; XmlNode xmlNode2 = requestNode["CollectionId", "MeetingResponse:"]; XmlNode xmlNode3 = requestNode["RequestId", "MeetingResponse:"]; XmlNode xmlNode4 = requestNode["LongId", "Search:"]; XmlNode xmlNode5 = requestNode["InstanceId", "MeetingResponse:"]; if (xmlNode4 != null) { if (string.IsNullOrEmpty(xmlNode4.InnerText)) { throw new RequestParsingException("longIdNode cannot be empty", "NoLongId"); } if (xmlNode3 != null || xmlNode2 != null) { throw new RequestParsingException("CollectionId/RequestId cannot be present when LongId supplied!", "TooManyIds"); } } else { if (xmlNode3 == null || string.IsNullOrEmpty(xmlNode3.InnerText)) { throw new RequestParsingException("RequestIdNode cannot be missing or null", "NoRequestId"); } if (xmlNode2 == null || string.IsNullOrEmpty(xmlNode2.InnerText) || (AirSyncUtility.GetCollectionType(xmlNode2.InnerText) != SyncCollection.CollectionTypes.Mailbox && AirSyncUtility.GetCollectionType(xmlNode2.InnerText) != SyncCollection.CollectionTypes.Unknown)) { throw new RequestParsingException("CollectionIdNode cannot be missing, null, or the collection type is other than mailbox or unknown.", "NoCollectionId"); } } if (xmlNode == null || string.IsNullOrEmpty(xmlNode.InnerText) || (xmlNode.InnerText != "1" && xmlNode.InnerText != "2" && xmlNode.InnerText != "3")) { throw new RequestParsingException("UserResponseNode cannot be missing or null", "NoUserResponse"); } if (xmlNode5 != null) { if (string.IsNullOrEmpty(xmlNode5.InnerText)) { throw new RequestParsingException("InstanceIdNode cannot be empty", "InvalidInstanceId"); } if (base.Version >= 160) { throw new RequestParsingException("InstanceIdNode is not supported", "InvalidInstanceId"); } } MeetingResponseCommand.RequestNodeData requestNodeData; if (xmlNode4 != null) { requestNodeData = new MeetingResponseCommand.RequestNodeData(xmlNode, xmlNode4, xmlNode5); if (base.Version >= 160) { requestNodeData.FillRespondToEventParameters(requestNode); } this.longIdRequests.Add(requestNodeData); return; } if (!this.shortIdRequests.ContainsKey(xmlNode2.InnerText)) { this.shortIdRequests.Add(xmlNode2.InnerText, new List <MeetingResponseCommand.RequestNodeData>()); } requestNodeData = new MeetingResponseCommand.RequestNodeData(xmlNode, xmlNode3, xmlNode5); if (base.Version >= 160) { requestNodeData.FillRespondToEventParameters(requestNode); } this.shortIdRequests[xmlNode2.InnerText].Add(requestNodeData); }