示例#1
0
        /// <summary>
        /// 请求发送验证码。
        /// </summary>
        /// <returns>是否发送成功。</returns>
        /// <param name="mobilePhoneNumber">手机号。</param>
        /// <param name="name">应用名称。</param>
        /// <param name="op">进行的操作名称。</param>
        /// <param name="ttl">验证码失效时间。</param>
        /// <param name="cancellationToken">Cancellation token。</param>
        public static Task <bool> RequestSMSCodeAsync(string mobilePhoneNumber, string name, string op, int ttl, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(mobilePhoneNumber))
            {
                throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null);
            }

            Dictionary <string, object> strs = new Dictionary <string, object>()
            {
                { "mobilePhoneNumber", mobilePhoneNumber },
            };

            if (!string.IsNullOrEmpty(name))
            {
                strs.Add("name", name);
            }
            if (!string.IsNullOrEmpty(op))
            {
                strs.Add("op", op);
            }
            if (ttl > 0)
            {
                strs.Add("ttl", ttl);
            }

            return(AVClient.RequestAsync("POST", "/requestSmsCode", null, strs, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => {
                return AVClient.IsSuccessStatusCode(t.Result.Item1);
            }));
        }
示例#2
0
        /// <summary>
        /// 请求发送验证码。
        /// </summary>
        /// <returns>是否发送成功。</returns>
        /// <param name="mobilePhoneNumber">手机号。</param>
        /// <param name="name">应用名称。</param>
        /// <param name="op">进行的操作名称。</param>
        /// <param name="ttl">验证码失效时间。</param>
        /// <param name="cancellationToken">Cancellation token。</param>
        public static Task <bool> RequestSMSCodeAsync(string mobilePhoneNumber, string name, string op, int ttl = 10, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (string.IsNullOrEmpty(mobilePhoneNumber))
            {
                throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null);
            }

            Dictionary <string, object> strs = new Dictionary <string, object>()
            {
                { "mobilePhoneNumber", mobilePhoneNumber },
            };

            if (!string.IsNullOrEmpty(name))
            {
                strs.Add("name", name);
            }
            if (!string.IsNullOrEmpty(op))
            {
                strs.Add("op", op);
            }
            if (ttl > 0)
            {
                strs.Add("TTL", ttl);
            }
            var command = new AVCommand("requestSmsCode",
                                        method: "POST",
                                        sessionToken: null,
                                        data: strs);

            return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).ContinueWith(t =>
            {
                return AVClient.IsSuccessStatusCode(t.Result.Item1);
            }));
        }
示例#3
0
        /// <summary>
        /// 验证是否是有效短信验证码。
        /// </summary>
        /// <returns>是否验证通过。</returns>
        /// <param name="code">验证码。</param>
        /// <param name="mobilePhoneNumber">手机号</param>
        /// <param name="cancellationToken">Cancellation token.</param>
        public static Task <bool> VerifySmsCodeAsync(string code, string mobilePhoneNumber, CancellationToken cancellationToken)
        {
            Dictionary <string, object> strs = new Dictionary <string, object>()
            {
                { "code", code.Trim() },
                { "mobilePhoneNumber", mobilePhoneNumber.Trim() },
            };

            return(AVClient.RequestAsync("POST", "/verifySmsCode/" + code.Trim() + "?mobilePhoneNumber=" + mobilePhoneNumber.Trim(), null, null, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => {
                return AVClient.IsSuccessStatusCode(t.Result.Item1);
            }));
        }
示例#4
0
        /// <summary>
        /// 验证是否是有效短信验证码。
        /// </summary>
        /// <returns>是否验证通过。</returns>
        /// <param name="code">验证码。</param>
        /// <param name="mobilePhoneNumber">手机号</param>
        /// <param name="cancellationToken">Cancellation token.</param>
        public static Task <bool> VerifySmsCodeAsync(string code, string mobilePhoneNumber, CancellationToken cancellationToken)
        {
            var command = new AVCommand("verifySmsCode/" + code.Trim() + "?mobilePhoneNumber=" + mobilePhoneNumber.Trim(),
                                        method: "POST",
                                        sessionToken: null,
                                        data: null);

            return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).ContinueWith(t =>
            {
                return AVClient.IsSuccessStatusCode(t.Result.Item1);
            }));
        }
示例#5
0
        /// <summary>
        /// 发送认证码到需要认证的手机上
        /// </summary>
        /// <param name="mobilePhoneNumber">手机号</param>
        /// <param name="cancellationToken">CancellationToken</param>
        /// <returns></returns>
        public static Task <bool> RequestMobilePhoneVerifyAsync(string mobilePhoneNumber, CancellationToken cancellationToken)
        {
            string currentSessionToken       = AVUser.CurrentSessionToken;
            Dictionary <string, object> strs = new Dictionary <string, object>()
            {
                { "mobilePhoneNumber", mobilePhoneNumber }
            };

            return(AVClient.RequestAsync("POST", "/requestMobilePhoneVerify", currentSessionToken, strs, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => {
                return AVClient.IsSuccessStatusCode(t.Result.Item1);
            }));
        }
示例#6
0
        /// <summary>
        /// 通过验证码重置密码。
        /// </summary>
        /// <param name="newPassword">新密码</param>
        /// <param name="smsCode">6位数验证码</param>
        /// <param name="cancellationToken">cancellationToken</param>
        /// <returns></returns>
        public static Task <bool> ResetPasswordBySmsCodeAsync(string newPassword, string smsCode, CancellationToken cancellationToken)
        {
            string currentSessionToken       = AVUser.CurrentSessionToken;
            Dictionary <string, object> strs = new Dictionary <string, object>()
            {
                { "password", newPassword }
            };

            return(AVClient.RequestAsync("PUT", "/resetPasswordBySmsCode/" + smsCode, currentSessionToken, strs, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => {
                return AVClient.IsSuccessStatusCode(t.Result.Item1);
            }));
        }
示例#7
0
        /// <summary>
        /// Requests the login SMS code asynchronous.
        /// </summary>
        /// <param name="mobilePhoneNumber">The mobile phone number.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        public static Task <bool> RequestLoginSmsCodeAsync(string mobilePhoneNumber, CancellationToken cancellationToken)
        {
            Dictionary <string, object> strs = new Dictionary <string, object>()
            {
                { "mobilePhoneNumber", mobilePhoneNumber }
            };
            var command = new AVCommand("/requestLoginSmsCode",
                                        method: "POST",
                                        sessionToken: CurrentSessionToken,
                                        data: null);

            return(AVClient.RequestAsync("POST", "/requestLoginSmsCode", null, strs, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => {
                return AVClient.IsSuccessStatusCode(t.Result.Item1);
            }));
        }
示例#8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="mobilePhoneNumber"></param>
        /// <returns></returns>
        public static Task <bool> RequestVoiceCodeAsync(string mobilePhoneNumber)
        {
            if (string.IsNullOrEmpty(mobilePhoneNumber))
            {
                throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null);
            }
            Dictionary <string, object> strs = new Dictionary <string, object>()
            {
                { "mobilePhoneNumber", mobilePhoneNumber },
                { "smsType", "voice" },
                { "IDD", "+86" }
            };

            return(AVClient.RequestAsync("POST", "/requestSmsCode", null, strs, CancellationToken.None).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => {
                return AVClient.IsSuccessStatusCode(t.Result.Item1);
            }));
        }
示例#9
0
        /// <summary>
        /// 根据 ObjectId 获取文件
        /// </summary>
        /// <remarks>获取之后并没有实际执行下载,只是加载了文件的元信息以及物理地址(Url)
        /// </remarks>
        public static Task <AVFile> GetFileWithObjectIdAsync(string objectId, CancellationToken cancellationToken)
        {
            string currentSessionToken = AVUser.CurrentSessionToken;

            return(AVClient.RequestAsync("GET", new Uri(string.Format("/files/{0}", objectId), UriKind.Relative), currentSessionToken, null, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, AVFile>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) =>
            {
                AVFile rtn = null;
                if (AVClient.IsSuccessStatusCode(t.Result.Item1))
                {
                    var metaData = t.Result.Item2["metaData"] as IDictionary <string, object>;

                    rtn = new AVFile(t.Result.Item2["name"] as string, t.Result.Item2["url"] as string, metaData);
                    rtn.MergeFromJSON(t.Result.Item2);
                }
                return rtn;
            }));
        }
示例#10
0
 public static Task <DateTime> GetServerDateTime()
 {
     return(AVClient.RequestAsync("GET", "/date", null, null, CancellationToken.None).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, DateTime>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => {
         DateTime rtn = DateTime.MinValue;
         if (AVClient.IsSuccessStatusCode(t.Result.Item1))
         {
             var date = AVDecoder.Instance.Decode(t.Result.Item2);
             if (date != null)
             {
                 if (date is DateTime)
                 {
                     rtn = (DateTime)date;
                 }
             }
         }
         return rtn;
     }));
 }
示例#11
0
        /// <summary>
        ///
        // 发送手机短信,并指定模板以及传入模板所需的参数。
        //
        // Exceptions:
        //   AVOSCloud.AVException:
        //   手机号为空。
        ///
        /// <param name="mobilePhoneNumber"></param>
        /// <param name="template"></param>
        /// <param name="env"></param>
        /// <returns></returns>
        public static Task <bool> RequestSMSCodeAsync(string mobilePhoneNumber, string template, IDictionary <string, object> env)
        {
            if (string.IsNullOrEmpty(mobilePhoneNumber))
            {
                throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null);
            }
            Dictionary <string, object> strs = new Dictionary <string, object>()
            {
                { "mobilePhoneNumber", mobilePhoneNumber },
            };

            strs.Add("template", template);
            foreach (var key in env.Keys)
            {
                strs.Add(key, env[key]);
            }
            return(AVClient.RequestAsync("POST", "/requestSmsCode", null, strs, CancellationToken.None).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => {
                return AVClient.IsSuccessStatusCode(t.Result.Item1);
            }));
        }
示例#12
0
        /// <summary>
        /// 发送手机短信,并指定模板以及传入模板所需的参数。
        /// Exceptions:
        ///   AVOSCloud.AVException:
        ///   手机号为空。
        /// <param name="mobilePhoneNumber"></param>
        /// <param name="template">Sms's template</param>
        /// <param name="env">Template variables env.</param>
        /// <param name="sign">Sms's sign.</param>
        /// <param name="cancellationToken">Cancellation token.</param>
        /// <returns></returns>
        public static Task <bool> RequestSMSCodeAsync(
            string mobilePhoneNumber,
            string template,
            IDictionary <string, object> env,
            string sign          = "",
            string validateToken = "",
            CancellationToken cancellationToken = default(CancellationToken))
        {
            if (string.IsNullOrEmpty(mobilePhoneNumber))
            {
                throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null);
            }
            Dictionary <string, object> strs = new Dictionary <string, object>()
            {
                { "mobilePhoneNumber", mobilePhoneNumber },
            };

            strs.Add("template", template);
            if (String.IsNullOrEmpty(sign))
            {
                strs.Add("sign", sign);
            }
            if (String.IsNullOrEmpty(validateToken))
            {
                strs.Add("validate_token", validateToken);
            }
            foreach (var key in env.Keys)
            {
                strs.Add(key, env[key]);
            }
            var command = new AVCommand("requestSmsCode",
                                        method: "POST",
                                        sessionToken: null,
                                        data: strs);

            return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command).ContinueWith(t =>
            {
                return AVClient.IsSuccessStatusCode(t.Result.Item1);
            }));
        }
示例#13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="mobilePhoneNumber"></param>
        /// <returns></returns>
        public static Task <bool> RequestVoiceCodeAsync(string mobilePhoneNumber)
        {
            if (string.IsNullOrEmpty(mobilePhoneNumber))
            {
                throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null);
            }
            Dictionary <string, object> strs = new Dictionary <string, object>()
            {
                { "mobilePhoneNumber", mobilePhoneNumber },
                { "smsType", "voice" },
                { "IDD", "+86" }
            };

            var command = new AVCommand("requestSmsCode",
                                        method: "POST",
                                        sessionToken: null,
                                        data: strs);

            return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command).ContinueWith(t =>
            {
                return AVClient.IsSuccessStatusCode(t.Result.Item1);
            }));
        }
示例#14
0
        /// <summary>
        /// 获取 LeanCloud 服务器的时间
        /// <remarks>
        /// 如果获取失败,将返回 DateTime.MinValue
        /// </remarks>
        /// </summary>
        /// <returns>服务器的时间</returns>
        public static Task <DateTime> GetServerDateTimeAsync()
        {
            var command = new AVCommand(relativeUri: "date",
                                        method: "GET",
                                        sessionToken: null,
                                        data: null);

            return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command).ContinueWith(t =>
            {
                DateTime rtn = DateTime.MinValue;
                if (AVClient.IsSuccessStatusCode(t.Result.Item1))
                {
                    var date = AVDecoder.Instance.Decode(t.Result.Item2);
                    if (date != null)
                    {
                        if (date is DateTime)
                        {
                            rtn = (DateTime)date;
                        }
                    }
                }
                return rtn;
            }));
        }