public static bool validate_device_token( ValidateDeviceTokenParams validateDeviceTokenParams, out int result, out int error_id) { return validate_device_token_internal( validateDeviceTokenParams, out result, out error_id); }
// // create_validate_device_token_message: generates a validate device token message to be sent // to the PhoneFactor backend. // // Return value: // a complete validate device token xml message ready to be sent to the PhoneFactor backend // private static string create_validate_device_token_message( ValidateDeviceTokenParams validateDeviceTokenParams) { XmlDocument doc = new XmlDocument(); // start message // <pfpMessage></pfpMessage> XmlElement root = doc.CreateElement("pfpMessage"); root.SetAttribute("version", "1.5"); doc.AppendChild(root); // message header // <header></header> XmlElement header = doc.CreateElement("header"); root.AppendChild(header); XmlElement element = doc.CreateElement("source"); header.AppendChild(element); element = doc.CreateElement("component"); element.SetAttribute("type", "pfsdk"); header.AppendChild(element); element = doc.CreateElement("host"); element.SetAttribute("ip", validateDeviceTokenParams.IpAddress); element.SetAttribute("hostname", validateDeviceTokenParams.Hostname); header.AppendChild(element); // request // <request></request> XmlElement request = doc.CreateElement("request"); Random random = new Random(); string request_id = random.Next(10000).ToString(); request.SetAttribute("request-id", request_id); request.SetAttribute("async", "0"); request.SetAttribute("response-url", ""); root.AppendChild(request); XmlElement validate_device_token_request = doc.CreateElement("validateDeviceTokenRequest"); request.AppendChild(validate_device_token_request); XmlElement customer = doc.CreateElement("customer"); validate_device_token_request.AppendChild(customer); element = doc.CreateElement("licenseKey"); element.InnerText = LICENSE_KEY; customer.AppendChild(element); element = doc.CreateElement("groupKey"); element.InnerText = GROUP_KEY; customer.AppendChild(element); element = doc.CreateElement("username"); element.InnerText = validateDeviceTokenParams.Username; validate_device_token_request.AppendChild(element); element = doc.CreateElement("deviceToken"); if (validateDeviceTokenParams.NotificationType.Length > 0) { element.SetAttribute("notificationType", validateDeviceTokenParams.NotificationType); } element.InnerText = validateDeviceTokenParams.DeviceToken; validate_device_token_request.AppendChild(element); element = doc.CreateElement("phoneAppAccountName"); element.InnerText = validateDeviceTokenParams.AccountName; validate_device_token_request.AppendChild(element); return doc.InnerXml; }
private static bool validate_device_token_internal( ValidateDeviceTokenParams validateDeviceTokenParams, out int result, out int error_id) { if (validateDeviceTokenParams.Hostname.Length == 0) validateDeviceTokenParams.Hostname = "pfsdk-hostname"; if (validateDeviceTokenParams.IpAddress.Length == 0) validateDeviceTokenParams.IpAddress = "255.255.255.255"; result = 0; error_id = 0; string validate_device_token_message = create_validate_device_token_message(validateDeviceTokenParams); int tries = 1; if (mMutex.WaitOne()) { try { tries = mTargets.Count + 1; } finally { mMutex.ReleaseMutex(); } } for (int i = 0; i < tries; i++) { string response; if (send_message(mCurrentTarget, validate_device_token_message, validateDeviceTokenParams.CertFilePath, out response)) { bool success = get_validate_device_token_response_status(response, out result, out error_id); return success; } else { if (mMutex.WaitOne()) { try { mTargets.Enqueue(mCurrentTarget); mCurrentTarget = mTargets.Dequeue().ToString(); } finally { mMutex.ReleaseMutex(); } } } } return false; }