public async Task ExecuteRuleAsyncShouldReturnErrorResultWithTimeoutIfRuleTakesTooLongToExecute([Frozen] IGetsRuleContext contextFactory, [RuleContext] RuleContext context, [ExecutableModel] ExecutableRule rule, SingleRuleExecutor sut) { var timeout = TimeSpan.FromMilliseconds(100); Mock.Get(rule.RuleLogic).Setup(x => x.GetTimeout()).Returns(timeout); Mock.Get(rule.RuleLogic) .Setup(x => x.GetResultAsync(It.IsAny <object>(), It.IsAny <object>(), It.IsAny <RuleContext>(), It.IsAny <CancellationToken>())) .Returns(() => Task.Run(async() => { await Task.Delay(200); return(CommonResults.Pass()); })); Mock.Get(contextFactory).Setup(x => x.GetRuleContext(rule)).Returns(context); var result = await sut.ExecuteRuleAsync(rule); Assert.Multiple(() => { Assert.That(result.Outcome, Is.EqualTo(RuleOutcome.Errored), "Result has error outcome"); Assert.That(result.Data, Does.ContainKey(RuleResult.RuleTimeoutDataKey), "Result has a rule-timeout data key"); if (result.Data.TryGetValue(RuleResult.RuleTimeoutDataKey, out var timeoutData)) { Assert.That(timeoutData, Is.EqualTo(timeout), "Timeout data is equal"); } }); }
public static async Task <Result> HandleGetMethodErrors(this HttpResponseMessage responseMessage) { try { if (responseMessage.StatusCode == HttpStatusCode.Unauthorized) { return(CommonResults.UnauthorizedResult("Unauthorized", "دوبازه لاگین کنید")); } else if (responseMessage.StatusCode == HttpStatusCode.Forbidden) { return(CommonResults.ForbiddenResult("Forbidden", "شما دسترسی به همه امکانات را ندارید")); } var responseBody = await responseMessage.Content.ReadAsStringAsync(); if (responseBody != null) { return(JsonConvert.DeserializeObject <Result>(responseBody)); } //else if (responseBody == null && responseMessage.StatusCode == HttpStatusCode.NotFound) //{ // return CommonResults.NotFoundResult("Not Found", "یافت نشد"); //} return(CommonResults.BadRequestResult("unknown", "خطا")); } catch (Exception) { return(CommonResults.ConnectionLostResult("Network problem", "ارتباط شما با سرور قطع شده است")); } }
public async Task <Result> AccountConfirmedOTP(int randomNumber) { try { var email = await _currentUser.GetEmail(); OTPConfirmationModel otpModel = new() { RandomNumber = randomNumber, Email = email }; var loginAsJson = JsonConvert.SerializeObject(otpModel); var response = await httpClient.PostAsync("api/v1/OAuth/AccountOTPConfirmation", new StringContent(loginAsJson, Encoding.UTF8, "application/json")); var loginResult = JsonConvert.DeserializeObject <AuthenticationResult>(await response.Content.ReadAsStringAsync()); if (!response.IsSuccessStatusCode) { return(Result.Failure(loginResult.EnError, loginResult.FaError)); } await SetAuthentication(loginResult.Token, loginResult.RefreshToken); return(Result.Success()); } catch (Exception) { return(CommonResults.InternalServerError("Internal Server Error", "سرور در حال بارگذاری می باشد")); } }
public async Task <Result> ForgotPasswordOTPConfirmation(int randomNumber) { try { var email = await _currentUser.GetEmail(); OTPConfirmationModel model = new() { RandomNumber = randomNumber, Email = email }; var usernameAsJson = JsonConvert.SerializeObject(model); var response = await httpClient.PostAsync("api/v1/OAuth/ForgotPasswordOTPConfirmation", new StringContent(usernameAsJson, Encoding.UTF8, "application/json")); await _currentUser.SetEmail(model.Email); return(await response.DeserializeResponseMessageStatus()); } catch (Exception) { return(CommonResults.InternalServerError("Internal Server Error", "سرور در حال بارگذاری می باشد")); } }
public async Task <Result> AuthorizePutAsync <T>(T command, string rout) { try { var token = await _currentUser.GetAuthToken(); var modelAsJson = JsonConvert.SerializeObject(command); var requestMessage = new HttpRequestMessage(HttpMethod.Put, rout); requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token); requestMessage.Content = new StringContent(modelAsJson); requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var response = await _httpClient.SendAsync(requestMessage); return(response.DeserializeResponseMessageStatus().Result); } catch (Exception) { return(CommonResults.InternalServerError("Internal Server Error", "سرور در حال بارگذاری می باشد")); } }
public async Task <Result> RefreshTokenAsync() { try { var refreshToken = new RefreshTokenModel() { RefreshToken = await _currentUser.GetAuthRefreshToken(), Token = await _currentUser.GetAuthToken() }; var loginAsJson = JsonConvert.SerializeObject(refreshToken); var response = await httpClient.PostAsync("api/v1/OAuth/RefreshToken", new StringContent(loginAsJson, Encoding.UTF8, "application/json")); var result = JsonConvert.DeserializeObject <AuthenticationResult>(await response.Content.ReadAsStringAsync()); if (!response.IsSuccessStatusCode) { return(Result.Failure(result.EnError, result.FaError)); } await SetAuthentication(result.Token, result.RefreshToken); return(Result.Success()); } catch (Exception) { return(CommonResults.InternalServerError("Internal Server Error", "سرور در حال بارگذاری می باشد")); } }
/// <summary> /// 获取所有视频 /// </summary> /// <returns></returns> public async Task <CommonResults <VideoListDto> > GetAll() { var result = new CommonResults <VideoListDto>(); try { var videos = await _context.Videos.Select(v => new VideoListDto { Id = v.Id, Name = v.Title, Image = v.Img }).ToArrayAsync(); result.scode = "200"; result.remark = "查询数据成功"; result.results = videos; return(result); } catch (Exception ex) { result.scode = "500"; result.remark = "服务器端错误:" + ex.Message; return(result); } }
public async Task <Result> Delete(T entity) { context.Remove(entity); var affectedRows = await SaveChangesAsync(); return(affectedRows > 0 ? Result.Ok() : CommonResults.EntityNotFoundToRemove <T>(entity.Id)); }
public async Task <Result <T> > GetById(int id) { var entity = await context.Set <T>().FindAsync(id); if (entity == null) { return(CommonResults.NotFound <T>(id)); } return(Result.Ok(entity)); }
public async Task <Result> Delete(int id) { // TODO: Avoid getting from database or add constraint new() var entity = await GetByIdOrNull(id); if (entity == null) { return(CommonResults.EntityNotFoundToRemove <T>(id)); } return(await Delete(entity)); }
public async Task <Result> Delete(int entityId) { if (data.TryRemove(entityId, out T entity)) { logger.LogTrace($"#{entityId} removed"); return(Result.Ok()); } logger.LogTrace($"#{entityId} not found"); return(CommonResults.EntityNotFoundToRemove <T>(entityId)); }
static async Task <RuleResult> WaitForResultAsync(Task <RuleResult> ruleTask, CancellationToken combinedToken, TimeSpan?timeout) { if (!timeout.HasValue) { return(await ruleTask.ConfigureAwait(false)); } if (await Task.WhenAny(ruleTask, Task.Delay(timeout.Value, combinedToken)).ConfigureAwait(false) == ruleTask) { return(await ruleTask.ConfigureAwait(false)); } return(CommonResults.Error(data: new Dictionary <string, object> { { RuleResult.RuleTimeoutDataKey, timeout.Value } })); }
public async Task <Result> AuthorizePostQueryAsync(string rout) { try { var token = await _currentUser.GetAuthToken(); _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); var response = await _httpClient.PostAsync(rout, null); return(response.DeserializeResponseMessageStatus().Result); } catch (Exception) { return(CommonResults.InternalServerError("Internal Server Error", "سرور در حال بارگذاری می باشد")); } }
public static async Task <Result> DeserializeResponseMessageStatus(this HttpResponseMessage responseMessage) { try { var responseBody = await responseMessage.Content.ReadAsStringAsync(); if (responseMessage.StatusCode == HttpStatusCode.Unauthorized) { return(CommonResults.UnauthorizedResult("Unauthorized", "دوباره لاگین کنید")); } return(JsonConvert.DeserializeObject <Result>(responseBody)); } catch (Exception) { return(CommonResults.ConnectionLostResult("Network problem", "ارتباط شما با سرور قطع شده است")); } }
public void ExecuteRuleAsyncShouldReturnPassResultWithTimeoutIfRuleCompletesInATimelyManner([Frozen] IGetsRuleContext contextFactory, [RuleContext] RuleContext context, [ExecutableModel] ExecutableRule rule, SingleRuleExecutor sut) { var timeout = TimeSpan.FromMilliseconds(300); Mock.Get(rule.RuleLogic).Setup(x => x.GetTimeout()).Returns(timeout); Mock.Get(rule.RuleLogic) .Setup(x => x.GetResultAsync(It.IsAny <object>(), It.IsAny <object>(), It.IsAny <RuleContext>(), It.IsAny <CancellationToken>())) .Returns(() => Task.Run(async() => { await Task.Delay(50); return(CommonResults.Pass()); })); Mock.Get(contextFactory).Setup(x => x.GetRuleContext(rule)).Returns(context); Assert.That(() => sut.ExecuteRuleAsync(rule), Is.PassingValidationResult); }
public async Task <Result> ResetPassword(string password) { try { var email = await _currentUser.GetEmail(); ResetPasswordModel model = new() { Email = email, Password = password }; var usernameAsJson = JsonConvert.SerializeObject(model); var response = await httpClient.PostAsync("api/v1/OAuth/ResetPassword", new StringContent(usernameAsJson, Encoding.UTF8, "application/json")); return(await response.DeserializeResponseMessageStatus()); } catch (Exception) { return(CommonResults.InternalServerError("Internal Server Error", "سرور در حال بارگذاری می باشد")); } }
public async Task <Result> ForgotPassword(ForgotPasswordModel model) { try { var usernameAsJson = JsonConvert.SerializeObject(model); var response = await httpClient.PostAsync("api/v1/OAuth/ForgotPassword", new StringContent(usernameAsJson, Encoding.UTF8, "application/json")); var result = await response.DeserializeResponseMessageStatus();; if (result.Succeeded) { await _currentUser.SetEmail(model.Email); } return(result); } catch (Exception) { return(CommonResults.InternalServerError("Internal Server Error", "سرور در حال بارگذاری می باشد")); } }
public async Task <Result> CreateUserAsync(RegisterModel registerModel) { try { var registerAsJson = JsonConvert.SerializeObject(registerModel); var response = await httpClient.PostAsync("api/v1/OAuth/Register", new StringContent(registerAsJson, Encoding.UTF8, "application/json")); var result = JsonConvert.DeserializeObject <Result>(await response.Content.ReadAsStringAsync()); if (result.Succeeded) { await _currentUser.SetEmail(registerModel.Email); } return(result); } catch (Exception ex) { return(CommonResults.InternalServerError("Internal Server Error", "سرور در حال بارگذاری می باشد")); } }
public async Task <Result> EnsureExists(int id) { var exists = await Exists(id); return(exists ? Result.Ok() : CommonResults.NotFound <T>(id)); }
public async Task <Result <T> > GetById(int id) { var entity = await GetByIdOrNull(id); return(entity == null?CommonResults.NotFound <T>(id) : Result.Ok(entity)); }