public async Task <RestApiResult <UserInfo> > GetUserInformationAsync(string userName, string password, bool isBearerToken) { var requestUri = new Uri(_apiUri, "2.0/user"); using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUri)) { if (isBearerToken) { request.AddBearerAuthenticationHeader(password); } else { request.AddBasicAuthenticationHeader(userName, password); } _context.Trace.WriteLine($"HTTP: GET {requestUri}"); using (HttpResponseMessage response = await HttpClient.SendAsync(request)) { _context.Trace.WriteLine($"HTTP: Response {(int) response.StatusCode} [{response.StatusCode}]"); string json = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) { var obj = JsonConvert.DeserializeObject <UserInfo>(json, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); return(new RestApiResult <UserInfo>(response.StatusCode, obj)); } return(new RestApiResult <UserInfo>(response.StatusCode)); } } }
private static void TestAddBasicAuthenticationHeader(string userName, string password, string expectedParameterValue) { var message = new HttpRequestMessage(); message.AddBasicAuthenticationHeader(userName, password); var authHeader = message.Headers.Authorization; Assert.NotNull(authHeader); Assert.Equal(Constants.Http.WwwAuthenticateBasicScheme, authHeader.Scheme); Assert.Equal(expectedParameterValue, authHeader.Parameter); }
public async Task <AuthenticationResult> CreatePersonalAccessTokenAsync(Uri targetUri, string username, string password, string authenticationCode, IEnumerable <string> scopes) { EnsureArgument.AbsoluteUri(targetUri, nameof(targetUri)); EnsureArgument.NotNull(scopes, nameof(scopes)); Uri requestUri = GetApiRequestUri(targetUri, "authorizations"); _context.Trace.WriteLine($"HTTP: POST {requestUri}"); using (HttpContent content = GetTokenJsonContent(targetUri, scopes)) using (var request = new HttpRequestMessage(HttpMethod.Post, requestUri)) { // Set the request content as well as auth and 2FA headers request.Content = content; request.AddBasicAuthenticationHeader(username, password); if (!string.IsNullOrWhiteSpace(authenticationCode)) { request.Headers.Add(GitHubConstants.GitHubOptHeader, authenticationCode); } // Send the request! using (HttpResponseMessage response = await HttpClient.SendAsync(request)) { _context.Trace.WriteLine($"HTTP: Response {(int) response.StatusCode} [{response.StatusCode}]"); switch (response.StatusCode) { case HttpStatusCode.OK: case HttpStatusCode.Created: return(await ParseSuccessResponseAsync(targetUri, response)); case HttpStatusCode.Unauthorized: return(ParseUnauthorizedResponse(targetUri, authenticationCode, response)); case HttpStatusCode.Forbidden: return(await ParseForbiddenResponseAsync(targetUri, password, response)); default: _context.Trace.WriteLine($"Authentication failed for '{targetUri}'."); return(new AuthenticationResult(GitHubAuthenticationResultType.Failure)); } } } }