/// <summary>
 /// Handler of event to receive notification when the document finishes loading.
 /// </summary>
 /// <param name="webBrowser">The <see cref="System.Windows.Forms.WebBrowser"/> instance.</param>
 /// <param name="url">The loaded url.</param>
 public void WebDocumentLoaded(System.Windows.Forms.WebBrowser webBrowser, Uri url)
 {
     if (url.Fragment.IndexOf("code=") != -1)
     {
         // is result
         var v = UniValue.ParseParameters(url.Fragment.Substring(1));
         this.GetAccessToken(v["code"].ToString());
     }
 }
Ejemplo n.º 2
0
        public void ParseParameters()
        {
#if NET35
            Assert.Throws <InvalidDataException>(() => UniValue.ParseParameters("test,1,#2,$3\r\n"));
#elif NET40
            Assert.Throws <InvalidDataException>(() => UniValue.ParseParameters("test,1,#2,$3\r\n"));
#else
            Assert.ThrowsAny <InvalidDataException>(() => UniValue.ParseParameters("test,1,#2,$3\r\n"));
#endif

            UniValue r = UniValue.Empty;

            Assert.False(UniValue.TryParseParameters("test,1,#2,$3\r\n", out r));
            Assert.True(UniValue.TryParseParameters("a=1&b=2&c=3", out r));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Default callback.
        /// </summary>
        /// <param name="sender">Sender.</param>
        /// <param name="e">Event arguments.</param>
        protected internal void DefaultCallback(object sender, WebBrowserCallbackEventArgs e)
        {
            Debug.WriteLine("Default Callback", "LoginForm");

            // Process erros before everything...
            string errorMessage = null;

            if (!String.IsNullOrEmpty(e.Url.Query))
            {
                errorMessage = this.GetErrorMessage(UniValue.ParseParameters(e.Url.Query.Substring(1)));
            }

            if (String.IsNullOrEmpty(errorMessage) && !String.IsNullOrEmpty(e.Url.Fragment))
            {
                errorMessage = this.GetErrorMessage(UniValue.ParseParameters(e.Url.Fragment.Substring(1)));
            }

            if (!String.IsNullOrEmpty(errorMessage))
            {
                // MessageBox.Show(errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.ErrorMessage = errorMessage;
                this.Close();
                return;
            }

            // waiting for results
            if (this.Client.Version.Major == 2 && ((OAuth2Client)this.Client).ResponseType == ResponseType.Token)
            {
                // OAuth v2.0 with token request
                int tokenStartIndex = e.Url.Fragment.IndexOf("access_token");

                if (tokenStartIndex != -1)
                {
                    this.CanLogin = false;

                    var token = AccessToken.Parse(e.Url.Fragment.Substring(1));

                    this.Client.SetAccessToken(token);

                    // completion to set
                    this.GetAccessTokenThread("");

                    return;
                }
            }

            // OAuth v1.x/2.0 with authorization code request or token request is not support
            if (e.Url.Query.IndexOf("code=") != -1 || e.Url.Query.IndexOf("oauth_verifier=") != -1)
            {
                // is result
                var code = UniValue.ParseParameters(e.Url.Query.Substring(1));

                if (code.ContainsKey("code"))
                {
                    this.AuthorizationCode = code["code"].ToString();
                }
                else
                {
                    this.AuthorizationCode = code["oauth_verifier"].ToString();
                }

                return;
            }


            // hide progress
            if (!this.AccessTokenProcessing) // is impossible to determine the exact address
            {
                this.HideProgress();
            }

            // additional custom handler
            if (typeof(ILoginForm).IsAssignableFrom(this.GetType()))
            {
                this.CanLogin = false;

                Debug.WriteLine("ILoginForm", "LoginForm");

                ((ILoginForm)this).WebDocumentLoaded(this.webBrowser1, e.Url);
            }
        }
Ejemplo n.º 4
0
        public void UniValue_Common()
        {
            Console.WriteLine("Test 1: Types");
            var test = new Dictionary <string, UniValue>();

            test.Add("a", 123);
            test.Add("b", "test");
            test.Add("c", DateTime.Now);
            test.Add("d", 4.2);
            test.Add("e", new byte[] { 1, 2, 3 });
            test.Add("f", UniValue.Create(new Uri("http://localhost")));
            test.Add("g", UniValue.Create(new { id = 123, name = "tester", date = DateTime.Now, obj = new { a = 1, b = 2, c = 3, d = new int[] { 1, 2, 3 } } }));
            test.Add("h", new int[] { 1, 2, 3 });
            test.Add("i", new string[] { "a", "b", "c" });
            StringBuilder sb = new StringBuilder(); sb.Append("xyz");

            test.Add("j", sb);

            /*ResultValue a = 123;
             * ResultValue b = "test";
             * ResultValue c = DateTime.Now;
             * ResultValue d = 4.2;
             * ResultValue e = new byte[] { 1, 2, 3 };
             * ResultValue f = new Uri("http://localhost");*/

            foreach (var key in test.Keys)
            {
                Console.WriteLine("{0} = {1}", key, test[key]);
            }

            Console.WriteLine("-------------------------------------");

            Console.WriteLine("Test 2: Parse");

            Console.WriteLine("JSON");
            try
            {
                var r = UniValue.ParseJson("test,1,#2,$3");
                Assert.Fail("Invalid parse: ERROR");
            }
            catch
            {
                Console.WriteLine("Invalid parse: OK");
            }
            try
            {
                UniValue r = UniValue.Empty;
                if (!UniValue.TryParseJson("test,1,#2,$3", out r))
                {
                    Console.WriteLine("Try parse #1: OK");
                }
                else
                {
                    Assert.Fail("Try parse #1: ERROR");
                }
                if (UniValue.TryParseJson("[1,2,3]", out r))
                {
                    Console.WriteLine("Try parse #2: OK / {0}", r);
                }
                else
                {
                    Assert.Fail("Try parse #2: ERROR");
                }
            }
            catch
            {
                Assert.Fail("Try parse: ERROR");
            }

            Console.WriteLine("-------------------------------------");

            Console.WriteLine("XML");
            try
            {
                var r = UniValue.ParseXml("test,1,#2,$3");
                Assert.Fail("Invalid parse: ERROR");
            }
            catch
            {
                Console.WriteLine("Invalid parse: OK");
            }
            try
            {
                UniValue r = UniValue.Empty;
                if (!UniValue.TryParseXml("test,1,#2,$3", out r))
                {
                    Console.WriteLine("Try parse #1: OK");
                }
                else
                {
                    Assert.Fail("Try parse #1: ERROR");
                }
                if (UniValue.TryParseXml("<items><item>1</item><item>2</item><item>3</item></items>", out r))
                {
                    Console.WriteLine("Try parse #2: OK / {0}", r);
                }
                else
                {
                    Assert.Fail("Try parse #2: ERROR");
                }
            }
            catch
            {
                Assert.Fail("Try parse: ERROR");
            }

            Console.WriteLine("-------------------------------------");

            Console.WriteLine("PARAMETERS");
            try
            {
                var r = UniValue.ParseParameters("test,1,#2,$3\r\n");
                Assert.Fail("Invalid parse: ERROR");
            }
            catch
            {
                Console.WriteLine("Invalid parse: OK");
            }
            try
            {
                UniValue r = UniValue.Empty;
                if (!UniValue.TryParseParameters("test,1,#2,$3\r\n", out r))
                {
                    Console.WriteLine("Try parse #1: OK");
                }
                else
                {
                    Assert.Fail("Try parse #1: ERROR");
                }
                if (UniValue.TryParseParameters("a=1&b=2&c=3", out r))
                {
                    Console.WriteLine("Try parse #2: OK / {0}", r);
                }
                else
                {
                    Assert.Fail("Try parse #2: ERROR");
                }
            }
            catch
            {
                Assert.Fail("Try parse: ERROR");
            }

            Console.WriteLine("-------------------------------------");

            Console.WriteLine("Test 3");

            Console.WriteLine("ToString");

            UniValue r2  = "world!";
            string   ttt = "Hello, " + r2;

            Console.WriteLine("IsString: {0}", r2.IsString);
            if (!r2.IsString)
            {
                Assert.Fail();
            }
            Console.WriteLine(ttt);
            Console.WriteLine("OK");

            Console.WriteLine("ToInt32");

            r2 = 123;
            int num = (int)r2;

            num = Convert.ToInt32(r2);

            r2  = "ff";
            num = Convert.ToInt32(r2.ToString(), 16);

            r2  = "123";
            num = (int)r2;

            r2  = 123.123;
            num = (int)r2;

            r2  = "123.123";
            num = (int)r2;

            r2  = "123,123";
            num = (int)r2;

            try
            {
                r2  = "abc";
                num = (int)r2;
                Assert.Fail();
            }
            catch
            {
            }
            Console.WriteLine("OK");

            Console.WriteLine("ToDouble");
            r2 = 123;
            double num2 = (double)r2;

            r2   = "123";
            num2 = (double)r2;

            r2   = "123.123";
            num2 = (double)r2;

            r2   = "123,123";
            num2 = (double)r2;

            try
            {
                r2   = "abc";
                num2 = (double)r2;
                Assert.Fail();
            }
            catch
            {
            }
            Console.WriteLine("OK");

            Console.WriteLine("ToDateTime");

            r2 = "Thu Dec 04, 2014";
            Convert.ToDateTime(r2);

            Console.WriteLine("OK");
        }