Exemplo n.º 1
0
        public static void GetNewTokens()
        {
            HttpListener listener = new HttpListener();

            listener.Prefixes.Add(_redirectURI);
            listener.Start();
            var t = Task.Run(() =>
            {
                IAsyncResult asyncResult = listener.BeginGetContext(HttpListener_Callback, listener);
                asyncResult.AsyncWaitHandle.WaitOne();

                DateTime timeout = DateTime.Now.AddMinutes(2);
                while (!asyncResult.IsCompleted || _token == null)
                {
                    if (DateTime.Now > timeout)
                    {
                        return;
                    }
                }

                _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                    "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{_clientID}:{_clientSecret}")));

                var content = new Dictionary <string, string>
                {
                    { "code", _token },
                    { "grant_type", "authorization_code" },
                    { "redirect_uri", "http://localhost:4200/" }
                };

                var json               = PostRequest("https://accounts.spotify.com/api/token", content);
                string accessToken     = json["access_token"];
                string refreshToken    = json["refresh_token"];
                string tokenExpiration = DateTime.Now.AddSeconds((double)json["expires_in"]).ToBinary().ToString();

                _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                    "Bearer", accessToken);

                if (SQLite.ExecuteQuery("select * from api").Rows.Count > 0)
                {
                    SQLite.ExecuteNonQuery($"update api set access_token = '{accessToken}', refresh_token = '{refreshToken}', token_expiration = '{tokenExpiration}' where service='spotify';");
                }
                else
                {
                    SQLite.ExecuteNonQuery($"insert into api (access_token, refresh_token, token_expiration, service) values ('{accessToken}', '{refreshToken}', '{tokenExpiration}', 'spotify');");
                }

                EventSystem.Publish <SpotifyAccessTokenMessage>();
            });
        }
Exemplo n.º 2
0
 public static void Start()
 {
     if (File.Exists("map_dump.json"))
     {
         mapDump = LoadMapDump();
     }
     else
     {
         mapDump = DownloadMapDump();
     }
     Console.WriteLine("updating map dump");
     UpdateMapDump(ref mapDump);
     Console.WriteLine("map dump updated");
     SaveMapDump(mapDump);
     EventSystem.Publish <MapDumpUpdated>();
 }
Exemplo n.º 3
0
        /*
         * static SpotifyAPI()
         * {
         *  var table = SQLite.ExecuteQuery("select * from api where service='spotify'");
         *  Console.WriteLine(table.Rows.Count);
         *
         *  if (table.Rows.Count > 0)
         *  {
         *      var tokenExpirationDT = DateTime.FromBinary(Convert.ToInt64(table.Rows[0]["token_expiration"]));
         *      if (DateTime.Compare(DateTime.Now, tokenExpirationDT) < 0)
         *          _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", (string)table.Rows[0]["access_token"]);
         *      else
         *      {
         *          _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
         *          "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{_clientID}:{_clientSecret}")));
         *
         *          var content = new Dictionary<string, string>
         *          {
         *              { "grant_type", "refresh_token" },
         *              { "refresh_token", (string)table.Rows[0]["refresh_token"] }
         *          };
         *
         *          var json = PostRequest("https://accounts.spotify.com/api/token", content);
         *          string accessToken = json["access_token"];
         *          string tokenExpiration = DateTime.Now.AddSeconds((double)json["expires_in"]).ToBinary().ToString();
         *
         *          _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
         *          SQLite.ExecuteNonQuery($"update api set access_token = '{accessToken}', token_expiration = '{tokenExpiration}' where service='spotify';");
         *      }
         *      Task.Run(() =>
         *      {
         *          bool localLoaded = false;
         *          var subToken = EventSystem.Subscribe<PlaylistsFromLocalMessage>(a =>
         *          {
         *              Console.WriteLine("received local load message");
         *              localLoaded = true;
         *          });
         *          Console.WriteLine("Waiting for local load");
         *          while (!localLoaded)
         *          { }
         *          EventSystem.Publish<SpotifyAccessTokenMessage>();
         *          EventSystem.Unsubscribe<PlaylistsFromLocalMessage>(subToken);
         *
         *      });
         *  }
         *
         *  else
         *  {
         *      EventSystem.Publish<SpotifySignInMessage>();
         *  }
         * }
         */
        public static void Start()
        {
            var table = SQLite.ExecuteQuery("select * from api where service='spotify'");

            Console.WriteLine(table.Rows.Count);

            if (table.Rows.Count > 0)
            {
                var tokenExpirationDT = DateTime.FromBinary(Convert.ToInt64(table.Rows[0]["token_expiration"]));
                if (DateTime.Compare(DateTime.Now, tokenExpirationDT) < 0)
                {
                    _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", (string)table.Rows[0]["access_token"]);
                }
                else
                {
                    _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                        "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{_clientID}:{_clientSecret}")));

                    var content = new Dictionary <string, string>
                    {
                        { "grant_type", "refresh_token" },
                        { "refresh_token", (string)table.Rows[0]["refresh_token"] }
                    };

                    var    json            = PostRequest("https://accounts.spotify.com/api/token", content);
                    string accessToken     = json["access_token"];
                    string tokenExpiration = DateTime.Now.AddSeconds((double)json["expires_in"]).ToBinary().ToString();

                    _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
                    SQLite.ExecuteNonQuery($"update api set access_token = '{accessToken}', token_expiration = '{tokenExpiration}' where service='spotify';");
                }

                EventSystem.Publish <SpotifyAccessTokenMessage>();
            }

            else
            {
                EventSystem.Publish <SpotifySignInMessage>();
            }
        }