/// <summary> /// GETs url, logs in if we are logged out. /// </summary> /// <param name="url"></param> /// <returns></returns> public async Task <MyHttpWebResponse> GetUrl(string url) { MyHttpWebResponse response; string responseText = null; do { if (responseText != null) { await Login(); } var request = MyHttpWebRequest.Create(url); request.CookieContainer = CookieContainer; request.Method = "GET"; await ThrottleBeforeRequestAsync(); response = await request.GetResponseAsync(); responseText = response.ResponseText; } while (IsLoggedIn(responseText) == false); return(response); }
public async Task <string> PostJson(string url, object payload) { var requestText = JsonConvert.SerializeObject(payload); var requsstTextBytes = Encoding.UTF8.GetBytes(requestText); var request = MyHttpWebRequest.Create(url); request.CookieContainer = CookieContainer; request.Method = "POST"; request.ContentType = "application/json"; request.GetRequestStream().Write(requsstTextBytes, 0, requsstTextBytes.Length); await ThrottleBeforeRequestAsync(); var response = await request.GetResponseAsync(); var responseText = response.ResponseText; return(responseText); }
/// <summary> /// Login to the website with credentials. /// </summary> async Task Login() { Log.Trace("Logging in..."); var request = MyHttpWebRequest.Create(loginPageUrl); request.CookieContainer = CookieContainer; request.Method = "GET"; await ThrottleBeforeRequestAsync(); var response = await request.GetResponseAsync(); var html = response.HtmlDocument; var loginForm = html.GetElementbyId("aspnetForm"); var form = new WebFormHandler(loginPageUrl, loginForm, CookieContainer); form.FillInput("ctl00$bcr$ctl03$ctl07$username", username); form.FillInput("ctl00$bcr$ctl03$ctl07$password", password); form.FillInput("ctl00$bcr$ctl03$ctl07$loginButton", "Sign in »"); response = form.SubmitForm(); if (IsLoggedIn(response.ResponseText)) { Log.Trace("Successfully logged in..."); } else { Log.Warn("Failed to log in..."); Log.Trace("Resetting registry stored user details."); var registry = Registry.CurrentUser.CreateSubKey(this.GetType().FullName); registry.SetValue("username", ""); registry.SetValue("password", ""); } }