public IActionResult Create([FromQuery] string code, [FromBody] string callbackUri) { if (code == null) { return(BadRequest()); } if (callbackUri == null) { return(BadRequest()); } AccessToken accessToken = ObtainAccessToken(code, callbackUri).Result; bimsyncUser bsUser = GetCurrentUser(accessToken).Result; //BCFToken bcfAccessToken = ObtainBCFToken(codeBCF).Result; var user = _context.Users.FirstOrDefault(t => t.bimsync_id == bsUser.id); if (user == null) { user = new User { Id = System.Guid.NewGuid().ToString(), Name = bsUser.name, bimsync_id = bsUser.id, PowerBiSecret = System.Guid.NewGuid().ToString(), AccessToken = accessToken.access_token, TokenExpireIn = accessToken.expires_in, RefreshDate = System.DateTime.Now + new System.TimeSpan(0, 0, accessToken.expires_in), TokenType = accessToken.token_type, RefreshToken = accessToken.refresh_token, BCFToken = "" }; _context.Users.Add(user); _context.SaveChanges(); } else { user.AccessToken = accessToken.access_token; user.TokenExpireIn = accessToken.expires_in; user.RefreshDate = System.DateTime.Now + new System.TimeSpan(0, 0, accessToken.expires_in - 60); user.TokenType = accessToken.token_type; user.RefreshToken = accessToken.refresh_token; _context.Users.Update(user); _context.SaveChanges(); } return(CreatedAtRoute("GetUser", new { id = user.Id }, user)); }
private async Task <bimsyncUser> GetCurrentUser(AccessToken accessToken) { HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Accept.Clear(); //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded")); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken.access_token); HttpResponseMessage response = await client.GetAsync("https://api.bimsync.com/v2/user"); DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(bimsyncUser)); //response.EnsureSuccessStatusCode(); Stream responseStream = await response.Content.ReadAsStreamAsync(); bimsyncUser bimsyncUser = serializer.ReadObject(responseStream) as bimsyncUser; return(bimsyncUser); }