using System;
using System.Web;
using System.Web.Caching;
using NLog;
using NzbDrone.Core.Providers.Jobs;

namespace NzbDrone.Core
{
    class WebTimer
    {
        private readonly JobProvider _jobProvider;

        private static CacheItemRemovedCallback _onCacheRemove;
        private static readonly Logger Logger = LogManager.GetCurrentClassLogger();

        public WebTimer(JobProvider jobProvider)
        {
            _jobProvider = jobProvider;
        }

        public void StartTimer(int secondInterval)
        {
            _onCacheRemove = new CacheItemRemovedCallback(DoWork);

            HttpRuntime.Cache.Insert(GetType().ToString(), secondInterval, null,
                DateTime.Now.AddSeconds(secondInterval), Cache.NoSlidingExpiration,
                CacheItemPriority.NotRemovable, _onCacheRemove);
        }


        public void DoWork(string k, object v, CacheItemRemovedReason r)
        {
            _jobProvider.RunScheduled();
            StartTimer(Convert.ToInt32(v));
        }
    }
}