public async Task <AuthenticationResult> AuthenticateWithTokenAsync(string token) { AuthenticationResult result = new AuthenticationResult(); using (HttpClient client = CreateHttpClient()) { // create a basic auth header. client.DefaultRequestHeaders.Add("token", token); // get content. HttpResponseMessage responseMessage = await client.GetAsync("https://api.github.com"); if (responseMessage.StatusCode == System.Net.HttpStatusCode.Unauthorized) { GitHubHeaders headers = new GitHubHeaders(responseMessage.Headers); return(new AuthenticationResult() { OptionHeader = headers.GitHubOptionHeader }); } responseMessage.EnsureSuccessStatusCode(); return(new AuthenticationResult() { AuthenticationSuccessful = true }); } }
public async Task <AuthenticationResult> AuthenticateAsync(string username, string password, string tfaCode) { AuthenticationResult result = new AuthenticationResult(); using (HttpClient client = CreateHttpClient()) { // create a basic auth header. byte[] authroizationHeader = Encoding.ASCII.GetBytes($"{username}:{password}"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(authroizationHeader)); // do we have a tfa code? if (!String.IsNullOrWhiteSpace(tfaCode)) { client.DefaultRequestHeaders.Add("X-GitHub-OTP", tfaCode); } // get content. HttpResponseMessage responseMessage = await client.GetAsync("https://api.github.com"); if (responseMessage.StatusCode == System.Net.HttpStatusCode.Unauthorized) { GitHubHeaders headers = new GitHubHeaders(responseMessage.Headers); return(new AuthenticationResult() { OptionHeader = headers.GitHubOptionHeader }); } responseMessage.EnsureSuccessStatusCode(); return(new AuthenticationResult() { AuthenticationSuccessful = true }); } }