Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 private static bool CheckValidAndFixupIfNeeded(Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.GetMessageTrackingReportResponseMessageType response)
 {
     if (response == null)
     {
         TraceWrapper.SearchLibraryTracer.TraceError(0, "Empty/Invalid response for Proxy.GetMessageTrackingReport", new object[0]);
         return(false);
     }
     if (response.MessageTrackingReport == null)
     {
         if (response.ResponseClass == Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.ResponseClassType.Success && response.Errors == null && response.Errors.Length == 0)
         {
             TraceWrapper.SearchLibraryTracer.TraceError(0, "Empty/Invalid response for Proxy.GetMessageTrackingReport is only permitted if there were errors", new object[0]);
             return(false);
         }
         TraceWrapper.SearchLibraryTracer.TraceError(0, "Fixing up error response by inserting empty Proxy.MessageTrackingReportType", new object[0]);
         response.MessageTrackingReport = new Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.MessageTrackingReportType();
     }
     return(true);
 }
Exemplo n.º 3
0
 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));
 }
Exemplo n.º 4
0
        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));
        }