Exemple #1
0
        public void NetTimeToAlibabaTimeTest()
        {
            DateTime time   = new DateTime(2012, 8, 1, 15, 42, 20, 368, DateTimeKind.Local);
            string   actual = AlibabaHelper.NetTimeToAlibabaTime(time);

            Assert.AreEqual <string>("20120801154220368+0800", actual);
        }
Exemple #2
0
        public void IndexAsync()
        {
            this.AsyncManager.OutstandingOperations.Increment();
            this.m_service.BeginGetIsAuthorized((ar) => {
                Exception error   = null;
                bool isAuthorized = false;

                try {
                    isAuthorized = this.m_service.EndGetIsAuthorized(ar);
                } catch (Exception ex) {
                    error = ex;
                }

                ActionResult result = null;
                if (error != null)
                {
                    result = this.Content(string.Format("Error: {0}\r\n{1}", error.Message, error.StackTrace));
                }
                else if (isAuthorized)
                {
                    result = this.View();
                }
                else
                {
                    result = this.Redirect(AlibabaHelper.GetChinaOAuthUri(MvcApplication.APP_KEY, MvcApplication.APP_SECRET, this.GetAbsoluteUrl(this.Url.Action("Authorize")), null));
                }

                this.AsyncManager.Parameters["result"] = result;
                this.AsyncManager.OutstandingOperations.Decrement();
            }, null);
        }
Exemple #3
0
        public void GetApiSignatureTest_Null()
        {
            string actual = AlibabaHelper.GetApiSignature("param2", "1", "system", "currentTime", "2988940", new Dictionary <string, string> {
                { "client_id", "2988940" },
                { "site", "china" },
                { "redirect_uri", "http://www.xphter.com" },
                { "state", string.Empty },
            }, "3tzdn2c9CU");

            Assert.AreEqual <string>("AA4B09182881EBC69D9CC718AB992696A658B153", actual);
        }
Exemple #4
0
        public void GetApiSignatureTest_Absolute()
        {
            string actual = AlibabaHelper.GetApiSignature("http://gw.open.1688.com/openapi/param2/1/system/currentTime/2988940", new {
                client_id    = "2988940",
                site         = "china",
                redirect_uri = "http://www.xphter.com",
                state        = "xphter",
            }, "3tzdn2c9CU");

            Assert.AreEqual <string>("A70625750557474FFD0F65973D3CA23D237CF472", actual);
        }
Exemple #5
0
        public void GetApiSignatureTest_Object()
        {
            string actual = AlibabaHelper.GetApiSignature("param2", "1", "system", "currentTime", "2988940", new {
                client_id    = "2988940",
                site         = "china",
                redirect_uri = "http://www.xphter.com",
                state        = "xphter",
            }, "3tzdn2c9CU");

            Assert.AreEqual <string>("A70625750557474FFD0F65973D3CA23D237CF472", actual);
        }
Exemple #6
0
        public void GetApiSignatureTest()
        {
            string actual = AlibabaHelper.GetApiSignature("param2", "1", "system", "currentTime", "2988940", new Dictionary <string, string> {
                { "client_id", "2988940" },
                { "site", "china" },
                { "redirect_uri", "http://www.xphter.com" },
                { "state", "xphter" },
            }, "3tzdn2c9CU");

            Assert.AreEqual <string>("A70625750557474FFD0F65973D3CA23D237CF472", actual);
        }
Exemple #7
0
        public void GetParamSignatureTest_Null()
        {
            string actual = AlibabaHelper.GetParamSignature(new Dictionary <string, string> {
                { "client_id", "2988940" },
                { "site", "china" },
                { "redirect_uri", "http://www.xphter.com" },
                { "state", null },
            }, "3tzdn2c9CU");

            Assert.AreEqual <string>("9732B9F140CB44FB8AA3D8010BE547D788E7A297", actual);
        }
Exemple #8
0
        public void GetParamSignatureTest_Object()
        {
            string actual = AlibabaHelper.GetParamSignature(new {
                client_id    = "2988940",
                site         = "china",
                redirect_uri = "http://www.xphter.com",
                state        = "xphter",
            }, "3tzdn2c9CU");

            Assert.AreEqual <string>("A6EA9CEBF3C5F15A48E9D5C36E646789993F9677", actual);
        }
Exemple #9
0
        public void GetParamSignatureTest()
        {
            string actual = AlibabaHelper.GetParamSignature(new Dictionary <string, string> {
                { "client_id", "2988940" },
                { "site", "china" },
                { "redirect_uri", "http://www.xphter.com" },
                { "state", "xphter" },
            }, "3tzdn2c9CU");

            Assert.AreEqual <string>("A6EA9CEBF3C5F15A48E9D5C36E646789993F9677", actual);
        }
Exemple #10
0
        public void AlibabaTimeToNetTimeTest()
        {
            DateTime actual = AlibabaHelper.AlibabaTimeToLocalTime("20120801154220368+0800");

            Assert.IsTrue(actual.Year == 2012);
            Assert.IsTrue(actual.Month == 8);
            Assert.IsTrue(actual.Day == 1);
            Assert.IsTrue(actual.Hour == 15);
            Assert.IsTrue(actual.Minute == 42);
            Assert.IsTrue(actual.Second == 20);
            Assert.IsTrue(actual.Millisecond == 368);
            Assert.IsTrue(actual.Kind == DateTimeKind.Local);
        }
        public IAsyncResult BeginGetCurrentTime(AsyncCallback callback, object userState)
        {
            AsyncResult <DateTime> result = new AsyncResult <DateTime>(callback, userState);

            this.SendApiRequest(this.m_apiFacgory.GetSystemTime, null, (error, content) => {
                DateTime time = DateTime.MinValue;
                if (error == null)
                {
                    time = AlibabaHelper.AlibabaTimeToLocalTime(content.Substring(1, content.Length - 2));
                }

                result.MarkCompleted(error, false, time);
            });

            return(result);
        }
        private void SendApiRequest(IChinaAlibabaApi api, object args, Action <Exception, string> callback)
        {
            string apiUri = api.GetRequestUri(this.m_appKey);
            IDictionary <string, string> arguments = AlibabaHelper.GetArgumentsDictionary(args);

            if (api.NeedAuthroized)
            {
                arguments[ACCESS_TOKEN_ARGUMENT_NAME] = this.m_accessToken;
            }
            if (api.NeedTimestamp)
            {
                arguments[TIMESTAMP_ARGUMENT_NAME] = (DateTime.Now - this.m_timestampBase).TotalMilliseconds + this.m_timeError.ToString();
            }
            if (api.NeedSignature)
            {
                arguments[SIGNATURE_ARGUMENT_NAME] = AlibabaHelper.GetApiSignature(apiUri, arguments, this.m_appSecret);
            }

            this.SendPostRequest(apiUri, arguments, api.Encoding, callback);
        }
        private void SendPostRequest(string url, IDictionary <string, string> args, Encoding encoding, Action <Exception, string> callback)
        {
            HttpWebRequest request     = this.CreateRequest(url, WebRequestMethods.Http.Post, encoding);
            string         queryString = AlibabaHelper.GetQueryString(args, encoding ?? this.m_defaultEncoding);

            byte[] data = queryString.Length > 0 ? (encoding ?? this.m_defaultEncoding).GetBytes(queryString) : null;

            if (data != null)
            {
                request.ContentLength = data.Length;
                NetworkRequestAsyncTimeout.RegisterRequest(request.BeginGetRequestStream((ar) => {
                    Exception error = null;

                    try {
                        using (Stream writer = request.EndGetRequestStream(ar)) {
                            writer.Write(data, 0, data.Length);
                        }
                    } catch (WebException ex) {
                        error = this.GetAlibabaException(ex);
                    } catch (Exception ex) {
                        error = new AlibabaException(string.Format("Error occurred when send POST data: {0}", ex.Message), 500, ex);
                    }

                    if (error != null)
                    {
                        callback(error, null);
                    }
                    else
                    {
                        this.SendHttpRequest(request, callback);
                    }
                }, null), request, this.m_timeout);
            }
            else
            {
                this.SendHttpRequest(request, callback);
            }
        }
Exemple #14
0
        public void GetArgumentsDictionaryTest()
        {
            DateTime now  = DateTime.Now;
            object   args = new {
                a = 13,
                b = true,
                c = "xphter",
                d = now,
                e = new int[] {
                    123, 456,
                },
                f = new string[] {
                    "123", "456",
                },
            };
            IDictionary <string, string> actual = AlibabaHelper.GetArgumentsDictionary(args);

            Assert.AreEqual(actual["a"], "13");
            Assert.AreEqual(actual["b"], "true");
            Assert.AreEqual(actual["c"], "xphter");
            Assert.AreEqual(actual["d"], AlibabaHelper.NetTimeToAlibabaTime(now));
            Assert.AreEqual(actual["e"], "[123,456]");
            Assert.AreEqual(actual["f"], "[\"123\",\"456\"]");
        }
Exemple #15
0
 public string GetRequestUri(string appKey)
 {
     return(this.NeedHttps ?
            AlibabaHelper.GetChinaApiHttpsUri(this.ProtocalVersion, this.ApiVersion, this.ApiNamespace, this.ApiName, appKey) :
            AlibabaHelper.GetChinaApiHttpUri(this.ProtocalVersion, this.ApiVersion, this.ApiNamespace, this.ApiName, appKey));
 }