private InternalGetMessageTrackingReportResponse(string domain, Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.GetMessageTrackingReportResponseMessageType dispatcherResponse) { this.Response = new Microsoft.Exchange.SoapWebClient.EWS.GetMessageTrackingReportResponseMessageType(); this.Response.Diagnostics = dispatcherResponse.Diagnostics; Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.MessageTrackingReportType messageTrackingReport = dispatcherResponse.MessageTrackingReport; Microsoft.Exchange.SoapWebClient.EWS.MessageTrackingReportType messageTrackingReportType = new Microsoft.Exchange.SoapWebClient.EWS.MessageTrackingReportType(); messageTrackingReportType.OriginalRecipients = MessageConverter.CopyEmailAddressArray(messageTrackingReport.OriginalRecipients); messageTrackingReportType.PurportedSender = MessageConverter.CopyEmailAddress(messageTrackingReport.PurportedSender); messageTrackingReportType.Sender = MessageConverter.CopyEmailAddress(messageTrackingReport.Sender); messageTrackingReportType.Subject = messageTrackingReport.Subject; messageTrackingReportType.SubmitTime = messageTrackingReport.SubmitTime; messageTrackingReportType.SubmitTimeSpecified = messageTrackingReport.SubmitTimeSpecified; messageTrackingReportType.Properties = MessageConverter.CopyTrackingProperties(dispatcherResponse.Properties); this.Response.MessageTrackingReport = messageTrackingReportType; this.Response.Properties = MessageConverter.CopyTrackingProperties(dispatcherResponse.Properties); this.Response.Errors = MessageConverter.CopyErrors(dispatcherResponse.Errors); Microsoft.Exchange.SoapWebClient.EWS.ResponseCodeType responseCode; if (EnumValidator <Microsoft.Exchange.SoapWebClient.EWS.ResponseCodeType> .TryParse(dispatcherResponse.ResponseCode, EnumParseOptions.Default, out responseCode)) { this.Response.ResponseCode = responseCode; } else { TraceWrapper.SearchLibraryTracer.TraceError <string>(0, "{0} cannot be converted to a valid ResponseCodeType, mapping to ErrorMessageTrackingPermanentError", dispatcherResponse.ResponseCode); this.Response.ResponseCode = Microsoft.Exchange.SoapWebClient.EWS.ResponseCodeType.ErrorMessageTrackingPermanentError; } this.Response.ResponseClass = EnumConverter <Microsoft.Exchange.SoapWebClient.EWS.ResponseClassType, Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.ResponseClassType> .Convert(dispatcherResponse.ResponseClass); this.Response.MessageText = dispatcherResponse.MessageText; messageTrackingReportType.RecipientTrackingEvents = null; this.RecipientTrackingEvents = InternalGetMessageTrackingReportResponse.CreateEventList <Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.RecipientTrackingEventType>(domain, messageTrackingReport.RecipientTrackingEvents, InternalGetMessageTrackingReportResponse.dispatcherConversionDelegate); }
internal static InternalGetMessageTrackingReportResponse Create(string domain, Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.GetMessageTrackingReportResponseMessageType response) { if (!InternalGetMessageTrackingReportResponse.CheckValidAndFixupIfNeeded(response)) { return(null); } return(new InternalGetMessageTrackingReportResponse(domain, response)); }
internal static InternalGetMessageTrackingReportResponse Create(string domain, Microsoft.Exchange.SoapWebClient.EWS.GetMessageTrackingReportResponseMessageType response) { if (!InternalGetMessageTrackingReportResponse.CheckValidAndFixupIfNeeded(response)) { return(null); } return(new InternalGetMessageTrackingReportResponse(domain, response)); }
public InternalGetMessageTrackingReportResponse GetMessageTrackingReport(GetMessageTrackingReportRequestTypeWrapper request, TimeSpan timeout) { this.ewsBinding.Timeout = (int)Math.Min(timeout.TotalMilliseconds, 2147483647.0); GetMessageTrackingReportResponseMessageType messageTrackingReport = this.ewsBinding.GetMessageTrackingReport(request.PrepareEWSRequest(this.serverVersion)); MessageTrackingReportId messageTrackingReportId; if (!MessageTrackingReportId.TryParse(request.WrappedRequest.MessageTrackingReportId, out messageTrackingReportId)) { throw new ArgumentException("Invalid MessageTrackingReportId, caller should have validated"); } return(InternalGetMessageTrackingReportResponse.Create(messageTrackingReportId.Domain, messageTrackingReport)); }
InternalGetMessageTrackingReportResponse IClientProxy.GetMessageTrackingReport(GetMessageTrackingReportRequestTypeWrapper request, TimeSpan timeout) { GetMessageTrackingQuery getMessageTrackingQuery = new GetMessageTrackingQuery(this.proxyRecipient, this.directoryContext, request, this.ewsVersionRequested, timeout); GetMessageTrackingQueryResult getMessageTrackingQueryResult = getMessageTrackingQuery.Execute(); if (getMessageTrackingQueryResult == null) { TraceWrapper.SearchLibraryTracer.TraceError(this.GetHashCode(), "Empty result in Request Dispatcher FindMessageTrackingQuery.Execute", new object[0]); return(null); } Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.GetMessageTrackingReportResponseMessageType response = getMessageTrackingQueryResult.Response; MessageTrackingReportId messageTrackingReportId; if (!MessageTrackingReportId.TryParse(request.WrappedRequest.MessageTrackingReportId, out messageTrackingReportId)) { throw new ArgumentException("Invalid MessageTrackingReportId, caller should have validated"); } return(InternalGetMessageTrackingReportResponse.Create(messageTrackingReportId.Domain, response)); }
public InternalGetMessageTrackingReportResponse GetMessageTrackingReport(string messageTrackingReportId, ReportTemplate reportTemplate, SmtpAddress[] recipientFilter, SearchScope scope, bool returnQueueEvents, TrackingEventBudget eventBudget) { GetMessageTrackingReportRequestType getMessageTrackingReportRequestType = new GetMessageTrackingReportRequestType(); getMessageTrackingReportRequestType.MessageTrackingReportId = messageTrackingReportId; if (reportTemplate == ReportTemplate.Summary) { getMessageTrackingReportRequestType.ReportTemplate = MessageTrackingReportTemplateType.Summary; } else { if (reportTemplate != ReportTemplate.RecipientPath) { throw new ArgumentException("ReportTemplate must be RecipientPath or Summary", "reportTemplate"); } getMessageTrackingReportRequestType.ReportTemplate = MessageTrackingReportTemplateType.RecipientPath; } if (recipientFilter != null && recipientFilter.Length > 0) { getMessageTrackingReportRequestType.RecipientFilter = new EmailAddressType(); getMessageTrackingReportRequestType.RecipientFilter.EmailAddress = recipientFilter[0].ToString(); } getMessageTrackingReportRequestType.ReturnQueueEvents = returnQueueEvents; getMessageTrackingReportRequestType.ReturnQueueEventsSpecified = true; if (this.diagnosticsContext.Enabled) { getMessageTrackingReportRequestType.DiagnosticsLevel = Names <DiagnosticsLevel> .Map[(int)this.diagnosticsContext.DiagnosticsLevel]; } TimeSpan clientTimeout; TimeSpan value; this.directoryContext.TrackingBudget.GetTimeBudgetRemainingForWSCall(this.trackingAuthority.TrackingAuthorityKind, out clientTimeout, out value); TrackingExtendedProperties trackingExtendedProperties = new TrackingExtendedProperties(false, false, new TimeSpan?(value), reportTemplate == ReportTemplate.Summary, false); getMessageTrackingReportRequestType.Properties = trackingExtendedProperties.ToTrackingPropertyArray(); getMessageTrackingReportRequestType.Scope = WebServiceBinding.GetWebServiceScope(scope); Exception ex = null; InternalGetMessageTrackingReportResponse internalGetMessageTrackingReportResponse = null; this.WriteStartEvent(false, messageTrackingReportId, null); internalGetMessageTrackingReportResponse = this.TryCallWebServiceMethod <InternalGetMessageTrackingReportResponse, GetMessageTrackingReportRequestType>(delegate(GetMessageTrackingReportRequestType req) { if (clientTimeout == TimeSpan.Zero) { throw new TimeoutExpiredException("Not enough time remaining"); } return(this.clientProxy.GetMessageTrackingReport(new GetMessageTrackingReportRequestTypeWrapper(req), clientTimeout)); }, getMessageTrackingReportRequestType, out ex); if (internalGetMessageTrackingReportResponse != null) { if (internalGetMessageTrackingReportResponse.Response.ResponseClass != ResponseClassType.Success) { TrackingError trackingErrorFromWebResponseError = this.GetTrackingErrorFromWebResponseError(internalGetMessageTrackingReportResponse.Response.ResponseCode, this.trackingAuthority.Domain, internalGetMessageTrackingReportResponse.Response.MessageText); this.errors.Errors.Add(trackingErrorFromWebResponseError); } this.errors.ReadErrorsFromWSMessage(internalGetMessageTrackingReportResponse.Response.Diagnostics, internalGetMessageTrackingReportResponse.Response.Errors); this.diagnosticsContext.MergeEvents(internalGetMessageTrackingReportResponse.Response.Diagnostics); } int num = 0; if (internalGetMessageTrackingReportResponse != null && internalGetMessageTrackingReportResponse.Response.MessageTrackingReport != null && internalGetMessageTrackingReportResponse.RecipientTrackingEvents != null) { num = internalGetMessageTrackingReportResponse.RecipientTrackingEvents.Count; if (this.diagnosticsContext.VerboseDiagnostics) { foreach (RecipientTrackingEvent recipientTrackingEvent in internalGetMessageTrackingReportResponse.RecipientTrackingEvents) { SmtpAddress recipientAddress = recipientTrackingEvent.RecipientAddress; string text = recipientTrackingEvent.RecipientAddress.ToString(); string value2 = text; if (!string.IsNullOrEmpty(recipientTrackingEvent.UniquePathId)) { value2 = string.Format("[{0}]{1}", recipientTrackingEvent.UniquePathId, text); } this.diagnosticsContext.AddProperty(DiagnosticProperty.Data1, value2); this.diagnosticsContext.WriteEvent(); } } } eventBudget.IncrementBy((uint)num); this.WriteEndEvent(ex, num); if (ex != null) { throw ex; } return(internalGetMessageTrackingReportResponse); }
private InternalGetMessageTrackingReportResponse(string domain, Microsoft.Exchange.SoapWebClient.EWS.GetMessageTrackingReportResponseMessageType response) { this.Response = response; this.RecipientTrackingEvents = InternalGetMessageTrackingReportResponse.CreateEventList <Microsoft.Exchange.SoapWebClient.EWS.RecipientTrackingEventType>(domain, response.MessageTrackingReport.RecipientTrackingEvents, InternalGetMessageTrackingReportResponse.ewsConversionDelegate); response.MessageTrackingReport.RecipientTrackingEvents = null; }