public ResponseStatus Send(string username) { Status status = Status.NoKeyFound; string url = string.Empty; IDictionary <string, string> variables = new Dictionary <string, string>(); using (HttpRequest client = new HttpRequest()) { #region Preparing client client.IgnoreProtocolErrors = true; client.Cookies = new CookieStorage(); #endregion foreach (var request in _config.Requests) { #region Preparing Request if (string.IsNullOrEmpty(request.UserAgent)) { client.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"; } else { client.UserAgent = request.UserAgent; } if (request.Headers != null) { foreach (var header in request.Headers) { client.AddHeader(header.Key, Format(header.Value, username, ref variables)); } } if (request.Cookies != null) { foreach (var cookie in request.Cookies) { client.Cookies.Add(new System.Net.Cookie(cookie.Key, Format(cookie.Value, username, ref variables), "*/*", TextUtilities.UrlToHost(request.Url))); } } #endregion #region Request And Response try { var response = client.Raw(RequestUtilities.GetMethod(request.Method), Format(request.Url, username, ref variables), new StringContent(Format(request.Content, username, ref variables)) { ContentType = request.ContentType }); string responseContent = response.ToString(); if (request.CaptureRaw) { responseContent = $"HTTP/{response.ProtocolVersion.ToString()} {Convert.ToInt32(response.StatusCode)} {response.StatusCode.ToString()}{Environment.NewLine}{RequestUtilities.GetHeaders(response.EnumerateHeaders())}{"Cookie: " + response.Cookies.GetCookieHeader(new Uri(Format(request.Url, username, ref variables)))}{Environment.NewLine}{Environment.NewLine}{responseContent}"; } #region Getting Variables if (request.GetbetweenVariables != null) { foreach (var x in request.GetbetweenVariables) { var variable = GetVariable(x, responseContent, username, ref variables, out bool found); if (found) { variables.Add(variable); } } } if (request.RegexVariables != null) { foreach (var x in request.RegexVariables) { var variable = GetVariable(x, responseContent, username, ref variables, out bool found); if (found) { variables.Add(variable); } } } #endregion #region Checking For Keys if (HasKey(responseContent, request.FailureKeys)) { return new ResponseStatus() { Status = Status.Unsuccessful, Variables = new Dictionary <string, string>(variables), Url = response.Address.ToString() } } ; if (HasKey(responseContent, request.SuccessKeys)) { if (status == Status.NoKeyFound) { status = Status.Success; url = response.Address.ToString(); } } #endregion } catch { return(new ResponseStatus() { Status = Status.RequestFailed, Variables = new Dictionary <string, string>(variables), Url = Format(request.Url, username, ref variables) }); } #endregion } } return(new ResponseStatus() { Status = status, Variables = new Dictionary <string, string>(variables), Url = url }); }