Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }