public async Task <Option <User> > AddNewUser(SpotifyConnectionDataDto spotifyConnectionData) { var jsonResponse = await GetUserInfo(spotifyConnectionData); if (jsonResponse == null) { return(Option.None <User>()); } if (string.IsNullOrEmpty((string)jsonResponse["id"])) { return(Option.None <User>()); } var newUser = new User { AccessToken = spotifyConnectionData.access_token, ExpirationTime = DateTime.Now.Add(TimeSpan.FromSeconds(spotifyConnectionData.expires_in)), RefreshToken = spotifyConnectionData.refresh_token, Scope = spotifyConnectionData.scope, TokenType = spotifyConnectionData.token_type, SpotifyId = (string)jsonResponse["id"] }; await _billboardDbContext.AddAsync(newUser); await _billboardDbContext.SaveChangesAsync(); return(Option.Some(newUser)); }
public User UpdateUserWithNewScope(User user, SpotifyConnectionDataDto spotifyConnectionData, string scope) { user.AccessToken = spotifyConnectionData.access_token; user.RefreshToken = spotifyConnectionData.refresh_token; user.ExpirationTime = DateTime.Now.Add(TimeSpan.FromSeconds(spotifyConnectionData.expires_in)); user.Scope = scope; user.TokenType = spotifyConnectionData.token_type; _billboardDbContext.SaveChanges(); return(user); }
public async Task <JObject> GetUserInfo(SpotifyConnectionDataDto spotifyConnectionData) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(Constants.BASE_ADDRESS_API); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(spotifyConnectionData.token_type, spotifyConnectionData.access_token); HttpResponseMessage response = await client.GetAsync("v1/me"); if (response.IsSuccessStatusCode) { return(JObject.Parse(await response.Content.ReadAsStringAsync())); } } return(null); }