WindowsPhoneMessageStatus ParseStatus(HttpWebResponse resp, WindowsPhoneNotification notification)
        {
            var result = new WindowsPhoneMessageStatus();

            result.Notification = notification;
            result.HttpStatus   = HttpStatusCode.ServiceUnavailable;

            var wpStatus                 = string.Empty;
            var wpChannelStatus          = string.Empty;
            var wpDeviceConnectionStatus = string.Empty;
            var messageID                = string.Empty;

            if (resp != null)
            {
                result.HttpStatus = resp.StatusCode;

                wpStatus                 = resp.Headers["X-NotificationStatus"];
                wpChannelStatus          = resp.Headers["X-SubscriptionStatus"];
                wpDeviceConnectionStatus = resp.Headers["X-DeviceConnectionStatus"];
                messageID                = resp.Headers["X-MessageID"];
            }

            Guid msgGuid = Guid.NewGuid();

            if (Guid.TryParse(messageID, out msgGuid))
            {
                result.MessageID = msgGuid;
            }

            WPDeviceConnectionStatus devConStatus = WPDeviceConnectionStatus.NotAvailable;

            Enum.TryParse <WPDeviceConnectionStatus>(wpDeviceConnectionStatus, true, out devConStatus);
            result.DeviceConnectionStatus = devConStatus;

            WPNotificationStatus notStatus = WPNotificationStatus.NotAvailable;

            Enum.TryParse <WPNotificationStatus>(wpStatus, true, out notStatus);
            result.NotificationStatus = notStatus;

            WPSubscriptionStatus subStatus = WPSubscriptionStatus.NotAvailable;

            Enum.TryParse <WPSubscriptionStatus>(wpChannelStatus, true, out subStatus);
            result.SubscriptionStatus = subStatus;

            return(result);
        }
        WindowsPhoneMessageStatus ParseStatus(HttpWebResponse resp, WindowsPhoneNotification notification)
        {
            var result = new WindowsPhoneMessageStatus();

            result.Notification = notification;
            result.HttpStatus   = resp.StatusCode;

            var wpStatus                 = resp.Headers["X-NotificationStatus"];
            var wpChannelStatus          = resp.Headers["X-SubscriptionStatus"];
            var wpDeviceConnectionStatus = resp.Headers["X-DeviceConnectionStatus"];
            var messageID                = resp.Headers["X-MessageID"];

            Guid msgGuid = Guid.NewGuid();

            if (Guid.TryParse(messageID, out msgGuid))
            {
                result.MessageID = msgGuid;
            }

            WPDeviceConnectionStatus devConStatus = WPDeviceConnectionStatus.InActive;

            Enum.TryParse <WPDeviceConnectionStatus>(wpDeviceConnectionStatus, out devConStatus);
            result.DeviceConnectionStatus = devConStatus;

            WPNotificationStatus notStatus = WPNotificationStatus.Dropped;

            Enum.TryParse <WPNotificationStatus>(wpStatus, out notStatus);
            result.NotificationStatus = notStatus;

            WPSubscriptionStatus subStatus = WPSubscriptionStatus.Expired;

            Enum.TryParse <WPSubscriptionStatus>(wpChannelStatus, out subStatus);
            result.SubscriptionStatus = subStatus;

            return(result);
        }