예제 #1
0
        public override IViewModel GenerateToken(Account owner, string code)
        {
            Console.WriteLine($"SpotifyService(GenerateSpotifyToken): The user code is {code}");
            var result = _spotifyWrapper.GenerateSpotifyToken(code);

            if (!result.Success)
            {
                Console.WriteLine("SpotifyService(GenerateSpotifyToken): Failed to get token");
                return(new ErrorViewModel()
                {
                    Error = (result as RequestFailedModel).Error
                });
            }
            SpotifyTokenModel tokenModel = result as SpotifyTokenModel;
            var token = new Models.Token()
            {
                AccessToken  = tokenModel.Access_Token,
                RefreshToken = tokenModel.Refresh_Token,
                ExpireIn     = tokenModel.Expires_In,
                Type         = ServiceTypeEnum.Spotify
            };

            _context.Tokens.Add(token);
            owner.Tokens.Add(token);
            _context.Update(owner);
            _context.SaveChanges();
            Console.WriteLine("SpotifyService(GenerateSpotifyToken): Token successfully saved");
            return(new SuccessViewModel());
        }
예제 #2
0
        public SpotifyWebAPI GetSpotifyWebApi(SpotifyTokenModel model)
        {
            SpotifyWebAPI api = new SpotifyWebAPI()
            {
                AccessToken = model.Access_Token,
                TokenType   = model.Token_Type,
                UseAuth     = true
            };

            return(api);
        }
예제 #3
0
        public IRequestStateModel GetSpotifyProfile(SpotifyTokenModel model)
        {
            using (var httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Add("Authorization", $"{model.Token_Type} {model.Access_Token}");

                var response        = httpClient.GetAsync("https://api.spotify.com/v1/me").Result;
                var responseContent = response.Content.ReadAsStringAsync().Result;
                if (responseContent.Contains("error"))
                {
                    var json = JObject.Parse(responseContent);
                    return(new RequestFailedModel()
                    {
                        Error = (string)json["error_description"]
                    });
                }
                return(JsonConvert.DeserializeObject <SpotifyProfileModel>(responseContent));
            }
        }
        public string GetAccessToken()
        {
            SpotifyTokenModel token = new SpotifyTokenModel();
            string            url5  = "https://accounts.spotify.com/api/token";

            var encode_clientid_clientsecret = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}:{1}", "2de5398af2154649b572315de55900e3", "467401d203114d0bb49fcbf22909998f")));

            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url5);

            webRequest.Method      = "POST";
            webRequest.ContentType = "application/x-www-form-urlencoded";
            webRequest.Accept      = "application/json";
            webRequest.Headers.Add("Authorization: Basic " + encode_clientid_clientsecret);

            var request = ("grant_type=client_credentials");

            byte[] req_bytes = Encoding.ASCII.GetBytes(request);
            webRequest.ContentLength = req_bytes.Length;

            Stream strm = webRequest.GetRequestStream();

            strm.Write(req_bytes, 0, req_bytes.Length);
            strm.Close();

            HttpWebResponse resp = (HttpWebResponse)webRequest.GetResponse();
            String          json = "";

            using (Stream respStr = resp.GetResponseStream())
            {
                using (StreamReader rdr = new StreamReader(respStr, Encoding.UTF8))
                {
                    //should get back a string i can then turn to json and parse for accesstoken
                    json = rdr.ReadToEnd();
                    rdr.Close();
                }
            }
            token = JsonConvert.DeserializeObject <SpotifyTokenModel>(json);
            return(token.Access_token);
        }