public void MainProgram()
        {
            bool isDatabaseAvailable = Database.CheckAvailability();

            if (!isDatabaseAvailable)
            {
                throw new Exception("Cannot connect to database, please check if the database server is running.");
            }

            WriteToConsole("Database connection established.");

            string searchQuery = ConfigurationManager.AppSettings["searchQuery"];

            string url = string.Format(urlBase, Uri.EscapeDataString(searchQuery));

            string torrentHash = GetTorrentHashFromUrl(url);

            while (true)
            {
                string torrentAnnounceInfo = GetTorrentInfoFromTracker(torrentHash);

                TorrentAnnounceInfo parsedTorrentAnnounceInfo = ParseTorrentInfo(torrentAnnounceInfo, torrentHash);

                InsertInfoToDatabase(parsedTorrentAnnounceInfo);

                WriteToConsole("Added info to database, will check again {0} seconds.", intervalSeconds);
                Thread.Sleep(oneMinuteMillis);
            }
        }
        public static void Insert(TorrentAnnounceInfo parsedTorrentAnnounceInfo)
        {
            string query = "INSERT INTO [Casual].[dbo].[TorrentPeerState] ([TorrentHash], [Datetime], [Seed], [Leech], [Peers], [FullText], [Interval], [MinInterval])" + "\n" +
                           "VALUES (@TorrentHash, @Datetime, @Seed, @Leech, @Peers, @FullText, @Interval, @MinInterval)";

            List <SqlParameter> parameters = new List <SqlParameter>();

            parameters.Add(new SqlParameter("TorrentHash", parsedTorrentAnnounceInfo.TorrentHash));
            parameters.Add(new SqlParameter("Datetime", DateTime.Now));
            parameters.Add(new SqlParameter("Seed", parsedTorrentAnnounceInfo.Complete));
            parameters.Add(new SqlParameter("Leech", parsedTorrentAnnounceInfo.Incomplete));
            parameters.Add(new SqlParameter("Peers", parsedTorrentAnnounceInfo.Peers));
            parameters.Add(new SqlParameter("FullText", parsedTorrentAnnounceInfo.FullText));
            parameters.Add(new SqlParameter("Interval", parsedTorrentAnnounceInfo.Interval));
            parameters.Add(new SqlParameter("MinInterval", parsedTorrentAnnounceInfo.MinInterval));

            RunQueryUpdateOneRow(query, parameters);
        }
 private static void InsertInfoToDatabase(TorrentAnnounceInfo parsedTorrentAnnounceInfo)
 {
     Database.Insert(parsedTorrentAnnounceInfo);
 }