chore: 简化 AVClient

oneRain 2019-08-06 14:18:02 +08:00
parent 70b3a37fe3
commit 56a051080a
8 changed files with 80 additions and 238 deletions

View File

@ -47,7 +47,7 @@ namespace LeanCloudTests {
public void DeserializeList() {
var json = "[1, \"hello\", [2, 3, 4], { \"count\": 22 }]";
TestContext.Out.WriteLine(JsonConvert.DeserializeObject(json).GetType());
var obj = JsonConvert.DeserializeObject<object>(json, new LeanCloudJsonConverter());
var obj = JsonConvert.DeserializeObject<IList<object>>(json, new LeanCloudJsonConverter());
if (obj is IList<object>) {
var arr = obj as List<object>;
TestContext.Out.WriteLine(arr.GetType());

View File

@ -1,8 +1,7 @@
using System;
using System.Threading.Tasks;
using System.Threading.Tasks;
using System.Threading;
using System.Collections.Generic;
using LeanCloud.Storage.Internal;
using Newtonsoft.Json;
namespace LeanCloud.Storage.Internal {
/// <summary>
@ -34,7 +33,7 @@ namespace LeanCloud.Storage.Internal {
string propertiesString = tmp as string;
if (propertiesString != null) {
var dictionary = AVClient.DeserializeJsonString(propertiesString);
var dictionary = JsonConvert.DeserializeObject<IDictionary<string, object>>(propertiesString);
currentConfig = new AVConfig(dictionary);
} else {
currentConfig = new AVConfig();
@ -53,7 +52,7 @@ namespace LeanCloud.Storage.Internal {
currentConfig = config;
var jsonObject = ((IJsonConvertible)config).ToJSON();
var jsonString = AVClient.SerializeJsonString(jsonObject);
var jsonString = JsonConvert.SerializeObject(jsonObject);
return storageController.LoadAsync().OnSuccess(t => t.Result.AddAsync(CurrentConfigKey, jsonString));
}).Unwrap().Unwrap(), CancellationToken.None);

View File

@ -7,6 +7,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Net.Http;
using Newtonsoft.Json;
namespace LeanCloud.Storage.Internal
{
@ -83,12 +84,10 @@ namespace LeanCloud.Storage.Internal
var blockSize = remainingSize > BLOCKSIZE ? BLOCKSIZE : remainingSize;
return MakeBlock(state, firstChunkBinary, blockSize).ContinueWith(t =>
{
var dic = AVClient.ReponseResolve(t.Result, CancellationToken.None);
var ctx = dic.Item2["ctx"].ToString();
offset = long.Parse(dic.Item2["offset"].ToString());
var host = dic.Item2["host"].ToString();
var dict = JsonConvert.DeserializeObject<IDictionary<string, object>>(t.Result.Item2, new LeanCloudJsonConverter());
var ctx = dict["ctx"].ToString();
offset = long.Parse(dict["offset"].ToString());
var host = dict["host"].ToString();
state.completed += firstChunkBinary.Length;
if (state.completed % BLOCKSIZE == 0 || state.completed == totalSize)
@ -105,11 +104,11 @@ namespace LeanCloud.Storage.Internal
var chunkBinary = GetChunkBinary(state.completed, dataStream);
return PutChunk(state, chunkBinary, context, offset).ContinueWith(t =>
{
var dic = AVClient.ReponseResolve(t.Result, CancellationToken.None);
var ctx = dic.Item2["ctx"].ToString();
var dict = JsonConvert.DeserializeObject<IDictionary<string, object>>(t.Result.Item2, new LeanCloudJsonConverter());
var ctx = dict["ctx"].ToString();
offset = long.Parse(dic.Item2["offset"].ToString());
var host = dic.Item2["host"].ToString();
offset = long.Parse(dict["offset"].ToString());
var host = dict["host"].ToString();
state.completed += chunkBinary.Length;
if (state.completed % BLOCKSIZE == 0 || state.completed == totalSize)
{

View File

@ -170,11 +170,7 @@ namespace LeanCloud
private static readonly object mutex = new object();
static AVClient()
{
versionString = "net-portable-" + Version;
//AVModuleController.Instance.ScanForModules();
static AVClient() {
}
/// <summary>
@ -197,7 +193,6 @@ namespace LeanCloud
}
}
private static readonly string versionString;
/// <summary>
/// 当前 SDK 版本号
/// </summary>
@ -205,7 +200,7 @@ namespace LeanCloud
{
get
{
return versionString;
return "net-v0.1.0";
}
}
@ -244,40 +239,19 @@ namespace LeanCloud
/// <param name="log"></param>
public static void PrintLog(string log)
{
if (AVClient.LogTracker != null)
{
AVClient.LogTracker(log);
}
LogTracker?.Invoke(log);
}
static bool useProduction = true;
/// <summary>
/// Gets or sets a value indicating whether send the request to production server or staging server.
/// </summary>
/// <value><c>true</c> if use production; otherwise, <c>false</c>.</value>
public static bool UseProduction
{
get
{
return useProduction;
}
set
{
useProduction = value;
}
public static bool UseProduction {
get; set;
}
static bool useMasterKey = false;
public static bool UseMasterKey
{
get
{
return useMasterKey;
}
set
{
useMasterKey = value;
}
public static bool UseMasterKey {
get; set;
}
/// <summary>
@ -363,90 +337,5 @@ namespace LeanCloud
}
return dict;
}
internal static IDictionary<string, object> DeserializeJsonString(string jsonData)
{
return JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonData, new LeanCloudJsonConverter());
}
internal static string SerializeJsonString(IDictionary<string, object> jsonData)
{
return JsonConvert.SerializeObject(jsonData);
}
//public static Task<Tuple<HttpStatusCode, string>> HttpGetAsync(Uri uri)
//{
// return RequestAsync(uri, "GET", null, body: null, contentType: null, cancellationToken: CancellationToken.None);
//}
//public static Task<Tuple<HttpStatusCode, string>> RequestAsync(Uri uri, string method, IList<KeyValuePair<string, string>> headers, IDictionary<string, object> body, string contentType, CancellationToken cancellationToken)
//{
// var dataStream = body != null ? new MemoryStream(Encoding.UTF8.GetBytes(Json.Encode(body))) : null;
// return AVClient.RequestAsync(uri, method, headers, dataStream, contentType, cancellationToken);
// //return AVPlugins.Instance.HttpClient.ExecuteAsync(request, null, null, cancellationToken);
//}
//public static Task<Tuple<HttpStatusCode, string>> RequestAsync(Uri uri, string method, IList<KeyValuePair<string, string>> headers, Stream data, string contentType, CancellationToken cancellationToken)
//{
// HttpRequest request = new HttpRequest()
// {
// Data = data != null ? data : null,
// Headers = headers,
// Method = method,
// Uri = uri
// };
// return AVPlugins.Instance.HttpClient.ExecuteAsync(request, null, null, cancellationToken).OnSuccess(t =>
// {
// var response = t.Result;
// var contentString = response.Item2;
// int responseCode = (int)response.Item1;
// var responseLog = responseCode + ";" + contentString;
// PrintLog(responseLog);
// return response;
// });
//}
internal static Tuple<HttpStatusCode, IDictionary<string, object>> ReponseResolve(Tuple<HttpStatusCode, string> response, CancellationToken cancellationToken)
{
Tuple<HttpStatusCode, string> result = response;
HttpStatusCode code = result.Item1;
string item2 = result.Item2;
if (item2 == null)
{
cancellationToken.ThrowIfCancellationRequested();
return new Tuple<HttpStatusCode, IDictionary<string, object>>(code, null);
}
IDictionary<string, object> strs = null;
try
{
strs = !item2.StartsWith("[", StringComparison.Ordinal) ? AVClient.DeserializeJsonString(item2) : new Dictionary<string, object>()
{
{ "results", JsonConvert.DeserializeObject<Dictionary<string, object>>(item2, new LeanCloudJsonConverter()) }
};
}
catch (Exception exception)
{
throw new AVException(AVException.ErrorCode.OtherCause, "Invalid response from server", exception);
}
var codeValue = (int)code;
if (codeValue > 203 || codeValue < 200)
{
throw new AVException((AVException.ErrorCode)((int)((strs.ContainsKey("code") ? (long)strs["code"] : (long)-1))), (strs.ContainsKey("error") ? strs["error"] as string : item2), null);
}
cancellationToken.ThrowIfCancellationRequested();
return new Tuple<HttpStatusCode, IDictionary<string, object>>(code, strs);
}
internal static Task<Tuple<HttpStatusCode, IDictionary<string, object>>> RunCommandAsync(AVCommand command)
{
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
internal static bool IsSuccessStatusCode(HttpStatusCode responseStatus) {
return (responseStatus >= HttpStatusCode.OK) && (responseStatus <= HttpStatusCode.PartialContent);
}
}
}

View File

@ -87,7 +87,7 @@ namespace LeanCloud {
/// <param name="op">进行的操作名称。</param>
/// <param name="ttl">验证码失效时间。</param>
/// <returns></returns>
public static Task<bool> RequestSMSCodeAsync(string mobilePhoneNumber, string name, string op, int ttl = 10)
public static Task RequestSMSCodeAsync(string mobilePhoneNumber, string name, string op, int ttl = 10)
{
return RequestSMSCodeAsync(mobilePhoneNumber, name, op, ttl, CancellationToken.None);
}
@ -102,7 +102,7 @@ namespace LeanCloud {
/// <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))
public static Task RequestSMSCodeAsync(string mobilePhoneNumber, string name, string op, int ttl = 10, CancellationToken cancellationToken = default(CancellationToken))
{
if (string.IsNullOrEmpty(mobilePhoneNumber))
{
@ -130,10 +130,7 @@ namespace LeanCloud {
Method = HttpMethod.Post,
Content = strs
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command, cancellationToken: cancellationToken).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command, cancellationToken: cancellationToken);
}
/// <summary>
@ -141,9 +138,9 @@ namespace LeanCloud {
/// </summary>
/// <returns>是否发送成功。</returns>
/// <param name="mobilePhoneNumber">手机号。</param>
public static Task<bool> RequestSMSCodeAsync(string mobilePhoneNumber)
public static Task RequestSMSCodeAsync(string mobilePhoneNumber)
{
return AVCloud.RequestSMSCodeAsync(mobilePhoneNumber, CancellationToken.None);
return RequestSMSCodeAsync(mobilePhoneNumber, CancellationToken.None);
}
@ -153,9 +150,9 @@ namespace LeanCloud {
/// <returns>是否发送成功。</returns>
/// <param name="mobilePhoneNumber">手机号。</param>
/// <param name="cancellationToken">Cancellation Token.</param>
public static Task<bool> RequestSMSCodeAsync(string mobilePhoneNumber, CancellationToken cancellationToken)
public static Task RequestSMSCodeAsync(string mobilePhoneNumber, CancellationToken cancellationToken)
{
return AVCloud.RequestSMSCodeAsync(mobilePhoneNumber, null, null, 0, cancellationToken);
return RequestSMSCodeAsync(mobilePhoneNumber, null, null, 0, cancellationToken);
}
/// <summary>
@ -169,7 +166,7 @@ namespace LeanCloud {
/// <param name="sign">Sms's sign.</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns></returns>
public static Task<bool> RequestSMSCodeAsync(
public static Task RequestSMSCodeAsync(
string mobilePhoneNumber,
string template,
IDictionary<string, object> env,
@ -204,10 +201,7 @@ namespace LeanCloud {
Method = HttpMethod.Post,
Content = strs
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
/// <summary>
@ -215,7 +209,7 @@ namespace LeanCloud {
/// </summary>
/// <param name="mobilePhoneNumber"></param>
/// <returns></returns>
public static Task<bool> RequestVoiceCodeAsync(string mobilePhoneNumber)
public static Task RequestVoiceCodeAsync(string mobilePhoneNumber)
{
if (string.IsNullOrEmpty(mobilePhoneNumber))
{
@ -234,10 +228,7 @@ namespace LeanCloud {
Content = body
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
/// <summary>
@ -246,9 +237,9 @@ namespace LeanCloud {
/// <returns>是否验证通过。</returns>
/// <param name="mobilePhoneNumber">手机号</param>
/// <param name="code">验证码。</param>
public static Task<bool> VerifySmsCodeAsync(string code, string mobilePhoneNumber)
public static Task VerifySmsCodeAsync(string code, string mobilePhoneNumber)
{
return AVCloud.VerifySmsCodeAsync(code, mobilePhoneNumber, CancellationToken.None);
return VerifySmsCodeAsync(code, mobilePhoneNumber, CancellationToken.None);
}
/// <summary>
@ -258,15 +249,12 @@ namespace LeanCloud {
/// <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)
public static Task VerifySmsCodeAsync(string code, string mobilePhoneNumber, CancellationToken cancellationToken)
{
var command = new AVCommand {
Path = $"verifySmsCode/{code.Trim()}?mobilePhoneNumber={mobilePhoneNumber.Trim()}",
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command, cancellationToken: cancellationToken).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command, cancellationToken: cancellationToken);
}
/// <summary>
@ -499,8 +487,7 @@ namespace LeanCloud {
Method = HttpMethod.Post,
Content = encodedParameters
};
return AVClient.RunCommandAsync(command);
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}).Unwrap().OnSuccess(s =>
{
var responseBody = s.Result.Item2;

View File

@ -369,11 +369,10 @@ namespace LeanCloud
};
}
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(cmd).ContinueWith(t =>
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(cmd).OnSuccess(t =>
{
var result = t.Result.Item2;
this.state.ObjectId = result["objectId"].ToString();
return AVClient.IsSuccessStatusCode(t.Result.Item1);
state.ObjectId = result["objectId"].ToString();
});
}

View File

@ -69,7 +69,7 @@ namespace LeanCloud
{
get
{
return AVClient.SerializeJsonString(this.BuildParameters(true));
return JsonConvert.SerializeObject(BuildParameters(true));
}
}

View File

@ -58,7 +58,7 @@ namespace LeanCloud
/// Whether the AVUser has been authenticated on this device, and the AVUser's session token is expired.
/// Only an authenticated AVUser can be saved and deleted.
/// </summary>
public Task<bool> IsAuthenticatedAsync()
public Task IsAuthenticatedAsync()
{
lock (mutex)
{
@ -71,10 +71,7 @@ namespace LeanCloud
Path = $"users/me?session_token={CurrentSessionToken}",
Method = HttpMethod.Get
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
/// <summary>
@ -279,9 +276,9 @@ namespace LeanCloud
/// </summary>
/// <param name="userObjectId">被关注的用户</param>
/// <returns></returns>
public Task<bool> FollowAsync(string userObjectId)
public Task FollowAsync(string userObjectId)
{
return this.FollowAsync(userObjectId, null);
return FollowAsync(userObjectId, null);
}
/// <summary>
@ -290,7 +287,7 @@ namespace LeanCloud
/// <param name="userObjectId">被关注的用户Id</param>
/// <param name="data">关注的时候附加属性</param>
/// <returns></returns>
public Task<bool> FollowAsync(string userObjectId, IDictionary<string, object> data)
public Task FollowAsync(string userObjectId, IDictionary<string, object> data)
{
if (data != null)
{
@ -301,10 +298,7 @@ namespace LeanCloud
Method = HttpMethod.Post,
Content = data
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
/// <summary>
@ -312,16 +306,13 @@ namespace LeanCloud
/// </summary>
/// <param name="userObjectId"></param>
/// <returns></returns>
public Task<bool> UnfollowAsync(string userObjectId)
public Task UnfollowAsync(string userObjectId)
{
var command = new AVCommand {
Path = $"users/{ObjectId}/friendship/{userObjectId}",
Method = HttpMethod.Delete
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
/// <summary>
@ -330,8 +321,9 @@ namespace LeanCloud
/// <returns></returns>
public AVQuery<AVUser> GetFollowerQuery()
{
AVQuery<AVUser> query = new AVQuery<AVUser>();
query.RelativeUri = string.Format("users/{0}/followers", this.ObjectId);
AVQuery<AVUser> query = new AVQuery<AVUser> {
RelativeUri = string.Format("users/{0}/followers", this.ObjectId)
};
return query;
}
@ -1001,9 +993,9 @@ namespace LeanCloud
/// </summary>
/// <param name="mobilePhoneNumber">The mobile phone number.</param>
/// <returns></returns>
public static Task<bool> RequestLogInSmsCodeAsync(string mobilePhoneNumber)
public static Task RequestLogInSmsCodeAsync(string mobilePhoneNumber)
{
return AVUser.RequestLogInSmsCodeAsync(mobilePhoneNumber, CancellationToken.None);
return RequestLogInSmsCodeAsync(mobilePhoneNumber, CancellationToken.None);
}
/// <summary>
@ -1012,9 +1004,9 @@ namespace LeanCloud
/// <param name="mobilePhoneNumber">The mobile phone number.</param>
/// <param name="validateToken">Validate token.</param>
/// <returns></returns>
public static Task<bool> RequestLogInSmsCodeAsync(string mobilePhoneNumber, string validateToken)
public static Task RequestLogInSmsCodeAsync(string mobilePhoneNumber, string validateToken)
{
return AVUser.RequestLogInSmsCodeAsync(mobilePhoneNumber, null, CancellationToken.None);
return RequestLogInSmsCodeAsync(mobilePhoneNumber, null, CancellationToken.None);
}
/// <summary>
@ -1023,7 +1015,7 @@ namespace LeanCloud
/// <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)
public static Task RequestLogInSmsCodeAsync(string mobilePhoneNumber, CancellationToken cancellationToken)
{
return RequestLogInSmsCodeAsync(mobilePhoneNumber, null, cancellationToken);
}
@ -1035,7 +1027,7 @@ namespace LeanCloud
/// <param name="validateToken">Validate token.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns></returns>
public static Task<bool> RequestLogInSmsCodeAsync(string mobilePhoneNumber, string validateToken, CancellationToken cancellationToken)
public static Task RequestLogInSmsCodeAsync(string mobilePhoneNumber, string validateToken, CancellationToken cancellationToken)
{
Dictionary<string, object> strs = new Dictionary<string, object>()
{
@ -1050,10 +1042,7 @@ namespace LeanCloud
Method = HttpMethod.Post,
Content = strs
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
/// <summary>
@ -1189,10 +1178,7 @@ namespace LeanCloud
Method = HttpMethod.Post,
Content = strs
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
/// <summary>
@ -1201,9 +1187,9 @@ namespace LeanCloud
/// <param name="newPassword">新密码</param>
/// <param name="smsCode">6位数验证码</param>
/// <returns></returns>
public static Task<bool> ResetPasswordBySmsCodeAsync(string newPassword, string smsCode)
public static Task ResetPasswordBySmsCodeAsync(string newPassword, string smsCode)
{
return AVUser.ResetPasswordBySmsCodeAsync(newPassword, smsCode, CancellationToken.None);
return ResetPasswordBySmsCodeAsync(newPassword, smsCode, CancellationToken.None);
}
/// <summary>
@ -1213,7 +1199,7 @@ namespace LeanCloud
/// <param name="smsCode">6位数验证码</param>
/// <param name="cancellationToken">cancellationToken</param>
/// <returns></returns>
public static Task<bool> ResetPasswordBySmsCodeAsync(string newPassword, string smsCode, CancellationToken cancellationToken)
public static Task ResetPasswordBySmsCodeAsync(string newPassword, string smsCode, CancellationToken cancellationToken)
{
string currentSessionToken = AVUser.CurrentSessionToken;
Dictionary<string, object> strs = new Dictionary<string, object>()
@ -1225,10 +1211,7 @@ namespace LeanCloud
Method = HttpMethod.Put,
Content = strs
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
/// <summary>
@ -1236,9 +1219,9 @@ namespace LeanCloud
/// </summary>
/// <param name="mobilePhoneNumber">手机号</param>
/// <returns></returns>
public static Task<bool> RequestMobilePhoneVerifyAsync(string mobilePhoneNumber)
public static Task RequestMobilePhoneVerifyAsync(string mobilePhoneNumber)
{
return AVUser.RequestMobilePhoneVerifyAsync(mobilePhoneNumber, null, CancellationToken.None);
return RequestMobilePhoneVerifyAsync(mobilePhoneNumber, null, CancellationToken.None);
}
/// <summary>
@ -1247,9 +1230,9 @@ namespace LeanCloud
/// <param name="mobilePhoneNumber">手机号</param>
/// <param name="validateToken">Validate token.</param>
/// <returns></returns>
public static Task<bool> RequestMobilePhoneVerifyAsync(string mobilePhoneNumber, string validateToken)
public static Task RequestMobilePhoneVerifyAsync(string mobilePhoneNumber, string validateToken)
{
return AVUser.RequestMobilePhoneVerifyAsync(mobilePhoneNumber, validateToken, CancellationToken.None);
return RequestMobilePhoneVerifyAsync(mobilePhoneNumber, validateToken, CancellationToken.None);
}
/// <summary>
@ -1258,7 +1241,7 @@ namespace LeanCloud
/// <param name="mobilePhoneNumber">手机号</param>
/// <param name="cancellationToken">CancellationToken</param>
/// <returns></returns>
public static Task<bool> RequestMobilePhoneVerifyAsync(string mobilePhoneNumber, CancellationToken cancellationToken)
public static Task RequestMobilePhoneVerifyAsync(string mobilePhoneNumber, CancellationToken cancellationToken)
{
return RequestMobilePhoneVerifyAsync(mobilePhoneNumber, null, cancellationToken);
}
@ -1270,15 +1253,13 @@ namespace LeanCloud
/// <param name="validateToken">Validate token.</param>
/// <param name="cancellationToken">CancellationToken</param>
/// <returns></returns>
public static Task<bool> RequestMobilePhoneVerifyAsync(string mobilePhoneNumber, string validateToken, CancellationToken cancellationToken)
public static Task RequestMobilePhoneVerifyAsync(string mobilePhoneNumber, string validateToken, CancellationToken cancellationToken)
{
string currentSessionToken = AVUser.CurrentSessionToken;
Dictionary<string, object> strs = new Dictionary<string, object>()
{
Dictionary<string, object> strs = new Dictionary<string, object> {
{ "mobilePhoneNumber", mobilePhoneNumber }
};
if (String.IsNullOrEmpty(validateToken))
{
if (!string.IsNullOrEmpty(validateToken)) {
strs.Add("validate_token", validateToken);
}
var command = new AVCommand {
@ -1286,10 +1267,7 @@ namespace LeanCloud
Method = HttpMethod.Post,
Content = strs
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
/// <summary>
@ -1298,9 +1276,9 @@ namespace LeanCloud
/// <param name="code">手机收到的验证码</param>
/// <param name="mobilePhoneNumber">手机号</param>
/// <returns></returns>
public static Task<bool> VerifyMobilePhoneAsync(string code, string mobilePhoneNumber)
public static Task VerifyMobilePhoneAsync(string code, string mobilePhoneNumber)
{
return AVUser.VerifyMobilePhoneAsync(code, mobilePhoneNumber, CancellationToken.None);
return VerifyMobilePhoneAsync(code, mobilePhoneNumber, CancellationToken.None);
}
/// <summary>
@ -1310,16 +1288,13 @@ namespace LeanCloud
/// <param name="mobilePhoneNumber">手机号,可选</param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static Task<bool> VerifyMobilePhoneAsync(string code, string mobilePhoneNumber, CancellationToken cancellationToken)
public static Task VerifyMobilePhoneAsync(string code, string mobilePhoneNumber, CancellationToken cancellationToken)
{
var command = new AVCommand {
Path = $"verifyMobilePhone/{code.Trim()}?mobilePhoneNumber={mobilePhoneNumber.Trim()}",
Method = HttpMethod.Post
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
/// <summary>
@ -1327,16 +1302,13 @@ namespace LeanCloud
/// </summary>
/// <param name="code">手机收到的验证码</param>
/// <returns></returns>
public static Task<bool> VerifyMobilePhoneAsync(string code)
public static Task VerifyMobilePhoneAsync(string code)
{
var command = new AVCommand {
Path = $"verifyMobilePhone/{code.Trim()}",
Method = HttpMethod.Post
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
/// <summary>
@ -1360,7 +1332,7 @@ namespace LeanCloud
/// </summary>
/// <param name="email">邮箱地址</param>
/// <returns></returns>
public static Task<bool> RequestEmailVerifyAsync(string email)
public static Task RequestEmailVerifyAsync(string email)
{
Dictionary<string, object> strs = new Dictionary<string, object>()
{
@ -1371,10 +1343,7 @@ namespace LeanCloud
Method = HttpMethod.Post,
Content = strs
};
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command).ContinueWith(t =>
{
return AVClient.IsSuccessStatusCode(t.Result.Item1);
});
return AVPlugins.Instance.CommandRunner.RunCommandAsync<IDictionary<string, object>>(command);
}
#endregion