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; } }
public void ParseResponse(ActiveSync.RequestBase request, ZPushConnection.Response response) { RawResponse = response; if (!response.Success) { throw new System.Exception("Response failure"); } ParseResponseBody(request, response); }
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); } }
override protected void ParseResponseBody(ActiveSync.RequestBase request, ZPushConnection.Response response) { Logger.Instance.Trace(this, "ActiveSync: Status: {0}", response.Body.ToXMLString()); }
abstract protected void ParseResponseBody(ActiveSync.RequestBase request, ZPushConnection.Response response);