コード例 #1
0
            protected override void ParseResponseBody(ActiveSync.RequestBase request, ZPushConnection.Response response)
            {
                // Check capabilities
                if (response.Capabilities == null)
                {
                    SupportsTimes = null;
                }
                else if (response.Capabilities.Has(Constants.ZPUSH_CAPABILITY_OUT_OF_OFFICE_TIMES))
                {
                    SupportsTimes = true;
                }
                else if (response.Capabilities.Has(Constants.ZPUSH_CAPABILITY_OUT_OF_OFFICE))
                {
                    SupportsTimes = false;
                }
                else
                {
                    SupportsTimes = null;
                }

                // Parse contents
                XPathNavigator nav = response.Body.CreateNavigator().SelectSingleNode("/Settings/Oof/Get");

                State = (OOFState)nav.SelectSingleNode("OofState").ValueAsInt;
                From  = nav.SelectSingleNode("StartTime")?.ValueAsDateTime.ToLocalTime();
                Till  = nav.SelectSingleNode("EndTime")?.ValueAsDateTime.ToLocalTime();

                // Messages
                Message = new OOFMessage[3];
                foreach (XPathNavigator node in nav.Select("OofMessage"))
                {
                    // Target
                    OOFTarget target;
                    if (node.SelectSingleNode("AppliesToInternal") != null)
                    {
                        target = OOFTarget.Internal;
                    }
                    else if (node.SelectSingleNode("AppliesToExternalKnown") != null)
                    {
                        target = OOFTarget.ExternalKnown;
                    }
                    else if (node.SelectSingleNode("AppliesToExternalUnknown") != null)
                    {
                        target = OOFTarget.ExternalUnknown;
                    }
                    else
                    {
                        Logger.Instance.Warning(this, "Unknown OOF message: {0}", node.OuterXml);
                        continue;
                    }

                    // Message
                    OOFMessage oof = new OOFMessage();
                    oof.Message = node.SelectSingleNode("ReplyMessage")?.Value;

                    // Create the object
                    Message[(int)target] = oof;
                }
            }
コード例 #2
0
 public void ParseResponse(ActiveSync.RequestBase request, ZPushConnection.Response response)
 {
     RawResponse = response;
     if (!response.Success)
     {
         throw new System.Exception("Response failure");
     }
     ParseResponseBody(request, response);
 }
コード例 #3
0
            protected override void ParseResponseBody(ActiveSync.RequestBase requestBase, ZPushConnection.Response response)
            {
                ResolveRecipientsRequest request = (ResolveRecipientsRequest)requestBase;

                // Only handle MergedFreeBusy for now
                XmlNode node = response.Body.SelectSingleNode("//MergedFreeBusy/text()");

                Logger.Instance.Trace(this, "FreeBusy response for {0}: {1}", request.Recipient, node?.Value);
                if (node != null)
                {
                    FreeBusy = new MergedFreeBusy(request.StartTime, node.Value);
                }
            }
コード例 #4
0
 override protected void ParseResponseBody(ActiveSync.RequestBase request, ZPushConnection.Response response)
 {
     Logger.Instance.Trace(this, "ActiveSync: Status: {0}", response.Body.ToXMLString());
 }
コード例 #5
0
 abstract protected void ParseResponseBody(ActiveSync.RequestBase request, ZPushConnection.Response response);