private async Task ExecuteRequestAsync() { const string mediaType = "application/json"; var requestDTO = new PostAccountRequestDTO() { AccountName = $"usr.{AgentName}.{CurrentRequest}", Password = $"pss-{AgentName}-{CurrentRequest}" }; var serializedDTO = JsonConvert.SerializeObject(requestDTO); var responseDTO = (PostAccountResponseDTO)null; var stopWatch = new Stopwatch(); var proxyMiliseconds = (long)0; using (var httpClient = new HttpClient()) { httpClient.Timeout = new TimeSpan(0, 0, 30); using (var requestContent = new StringContent(serializedDTO, Encoding.UTF8, mediaType)) { using (var requestMessage = new HttpRequestMessage(HttpMethod.Post, PostAccountUri)) { requestMessage.Headers.Add(HttpRequestHeader.ContentType.ToString(), mediaType); requestMessage.Content = requestContent; stopWatch.Start(); using (var responseMessage = await httpClient.SendAsync(requestMessage).ConfigureAwait(false)) { var responseContent = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false); stopWatch.Stop(); try { proxyMiliseconds = long.Parse(responseMessage.Headers.GetValues("X-Proxy-Time").Single()); responseDTO = JsonConvert.DeserializeObject <PostAccountResponseDTO>(responseContent); } catch (Exception) { System.Console.WriteLine("error:"); System.Console.WriteLine(responseContent); throw; } } } } } _responses.Add(new PostAccountTestResult(responseDTO, stopWatch.ElapsedMilliseconds, proxyMiliseconds)); }
public IActionResult PostAccount([FromBody] PostAccountRequestDTO request) { var responseDTO = new PostAccountResponseDTO(); if (request == null) { responseDTO.StatusCode = 400; Response.StatusCode = responseDTO.StatusCode; responseDTO.Messages.Add("invalid request object."); return(Json(responseDTO)); } if (string.IsNullOrWhiteSpace(request.AccountName) || request.AccountName.Length < 5) { responseDTO.Messages.Add("invalid Account Name."); } if (string.IsNullOrWhiteSpace(request.Password) || request.Password.Length < 6) { responseDTO.Messages.Add("invalid Password"); } if (responseDTO.Messages.Count > 0) { responseDTO.StatusCode = 400; Response.StatusCode = responseDTO.StatusCode; return(Json(responseDTO)); } var passBytes = Encoding.UTF8.GetBytes(request.Password); using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(_config.CredentialSalt))) { var securedPass = hmac.ComputeHash(passBytes); } responseDTO.StatusCode = 201; responseDTO.AccountId = Guid.NewGuid().ToString("N"); Response.StatusCode = responseDTO.StatusCode; return(Json(responseDTO)); }