public GameEndEventArgs(int?build, BnetRegion region, IGameState gameState, int wins, int losses) { Build = build; Region = region; GameState = gameState; Wins = wins; Losses = losses; }
private static string GetAuthenticationUri(BnetRegion bnetRegion) { switch (bnetRegion) { case BnetRegion.eu: return("https://eu.battle.net"); case BnetRegion.cn: return("https://www.battlenet.com.cn"); default: return("https://eu.battle.net"); } }
public async Task <OAuthToken> GetToken(string code, string redirectUri, BnetRegion region) { var httpClient = new HttpClient(); httpClient.BaseAddress = new Uri($"{GetAuthenticationUri(region)}/oauth/token"); var res = await httpClient.PostAsync($"?code={code}&grant_type=authorization_code&redirect_uri={redirectUri}&client_id={_bnetClientId}&client_secret={_bnetApiSecret}", null); if (!res.IsSuccessStatusCode) { return(null); } var readAsStringAsync = await res.Content.ReadAsStringAsync(); return(JsonSerializer.Deserialize <OAuthToken>(readAsStringAsync)); }
public async Task <BlizzardUserInfo> GetUser(string bearer, BnetRegion region) { var httpClient = new HttpClient(); httpClient.BaseAddress = new Uri($"{GetAuthenticationUri(region)}/oauth/userinfo"); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearer); var res = await httpClient.GetAsync(""); if (!res.IsSuccessStatusCode) { return(null); } var readAsStringAsync = await res.Content.ReadAsStringAsync(); return(JsonSerializer.Deserialize <BlizzardUserInfo>(readAsStringAsync)); }
public async Task <IActionResult> GetBlizzardToken( [FromQuery] string code, [FromQuery] string redirectUri, [FromQuery] BnetRegion region) { var token = await _blizzardAuthenticationService.GetToken(code, redirectUri, region); if (token == null) { return(Unauthorized("Sorry H4ckerb0i")); } var userInfo = await _blizzardAuthenticationService.GetUser(token.access_token, region); if (userInfo == null) { return(Unauthorized("Sorry H4ckerb0i")); } var w3User = W3CUserAuthentication.Create(userInfo.battletag, JwtPrivateKey); return(Ok(w3User)); }