internal static async Task <string> SaveClientDataAsync(ClientData clientData) { var result = "Done:)"; try { var data = JsonConvert.SerializeObject(clientData); var current = await DataGetter.GetClientData(); if (current.ClientId.Equals("") && current.ClientSecret.Equals("") && current.Login.Equals("") && current.Password.Equals("")) { using (var file = File.CreateText(DataGetter.ClientDataPath)) { await file.WriteAsync(data); } } else { result = "Data is not empty!"; } } catch (Exception ex) { return($"Error: {ex.Message}! {ex.StackTrace}"); } return(result); }
public static async Task <GitHubClient> GetClient() { var cd = await DataGetter.GetClientData(); var c = new GitHubClient(new ProductHeaderValue("TopRated-Badges-for-GitHub-by-elv1s42")); if (!cd.Login.Equals("") && !cd.Password.Equals("")) { c.Connection.Credentials = new Credentials(cd.Login, cd.Password); } return(c); }
private async Task <string> GetOauthLoginUrl() { var csrf = Membership.GeneratePassword(24, 1); Session["CSRF:State"] = csrf; var cd = await DataGetter.GetClientData(); var request = new OauthLoginRequest(cd.ClientId) { Scopes = { "user", "notifications" }, State = csrf }; var oauthLoginUrl = _client.Oauth.GetGitHubLoginUrl(request); return(oauthLoginUrl.ToString()); }
private static async Task <string> LoadJsonString(string url) { var json = ""; using (var wc = new WebClient()) { var count = 0; bool success; do { success = false; count++; try { Debug.WriteLine($"try #{count}"); var cd = await DataGetter.GetClientData(); var credentials = Convert.ToBase64String( Encoding.ASCII.GetBytes(cd.Login + ":" + cd.Password)); Debug.WriteLine($"CR: {credentials} " + cd.Login + ":" + cd.Password); wc.Headers[HttpRequestHeader.Authorization] = $"Basic {credentials}"; wc.Proxy = null; wc.Headers.Add(HttpRequestHeader.Accept, "application/xml"); wc.Headers.Add(HttpRequestHeader.ContentType, "application/xml; charset=utf-8"); wc.Headers.Add(HttpRequestHeader.Authorization, "Basic " + credentials); wc.Credentials = new NetworkCredential(cd.Login, cd.Password); //wc.Headers.Add("User-Agent: Other"); Debug.WriteLine($"GETTING: {url}"); var r = await wc.DownloadStringTaskAsync(url); json = r; success = true; } catch (Exception ex) { Debug.WriteLine($"{ex.Message} in {ex.StackTrace}"); Debug.WriteLine($"Inner: {ex.InnerException?.Message} in {ex.InnerException?.StackTrace}"); } } while (!success && count <= 5); } return(json.Equals("") ? "" : json); }
public async Task <ActionResult> Authorize(string code, string state) { if (!string.IsNullOrEmpty(code)) { var expectedState = Session["CSRF:State"] as string; if (state != expectedState) { throw new InvalidOperationException("SECURITY FAIL!"); } Session["CSRF:State"] = null; var cd = await DataGetter.GetClientData(); var token = await _client.Oauth.CreateAccessToken( new OauthTokenRequest(cd.ClientId, cd.ClientSecret, code)); Session["OAuthToken"] = token.AccessToken; } return(RedirectToAction("Badges")); }