OpenMetaverse.NetworkManager.Get3DiChallengeCode C# (CSharp) Method

Get3DiChallengeCode() private method

private Get3DiChallengeCode ( LoginParams loginParams ) : string
loginParams LoginParams
return string
        private string Get3DiChallengeCode(LoginParams loginParams)
        {
            string challengeCode = null;
            // Try to get challenge code
            try
            {
                string loginServerVersion = GetLoginServerVersion(loginParams.URI);
                if (loginServerVersion == "3Di OpenSim LoginService 1.0")
                {
                    // we are connecting to 3Di login server; use custom password routine
                    string baseLoginServerUri = loginParams.URI;
                    if (baseLoginServerUri[baseLoginServerUri.Length - 1] == '/')
                        baseLoginServerUri.Remove(baseLoginServerUri.Length - 1, 1);

                    string getChallengeCodeUri = baseLoginServerUri
                        + "/" + "ChallengeCode"
                        + "/" + loginParams.FirstName + "&" + loginParams.LastName;

                    // get XML from challenge code response
                    XmlReader reader = XmlReader.Create(getChallengeCodeUri);
                    XPathDocument xpathDoc = new XPathDocument(reader);
                    XPathNavigator xpathnav = xpathDoc.CreateNavigator();
                    string xpathQuery = "/code";
                    XPathExpression xpathExpr = xpathnav.Compile(xpathQuery);
                    XPathNodeIterator xpathIter = xpathnav.Select(xpathExpr);
                    if (xpathIter.MoveNext())
                    {
                        // got the challenge code
                        challengeCode = xpathIter.Current.Value;
                    }
                    else
                    {
                        // did not get challenge code (e.g. invalid user name)
                    }
                }
            }
            catch
            {
            }

            return challengeCode;
        }