private async Task <UrlCacheInfo> InsertUrl(Uri uri)
        {
            var          realm    = Realm.GetInstance();
            UrlCacheInfo hero     = null;
            var          response = await FetchFromWeb(uri);

            if (string.IsNullOrEmpty(response))
            {
                return(hero);
            }

            var timestamp = DateTime.Now.Ticks;

            realm.Write(() =>
            {
                hero              = realm.CreateObject <UrlCacheInfo>();
                hero.Response     = response;
                hero.Url          = uri.OriginalString;
                hero.Created      = timestamp;
                hero.LastAccessed = timestamp;
                hero.LastUpdated  = timestamp;
            });

            _log.Log("New url cached: " + uri.OriginalString);

            return(hero);
        }
        private async Task UpdateUrl(Uri uri, UrlCacheInfo hero)
        {
            var realm    = Realm.GetInstance();
            var response = await FetchFromWeb(uri);

            if (string.IsNullOrEmpty(response))
            {
                return;
            }

            var timestamp = DateTime.Now.Ticks;

            realm.Write(() =>
            {
                hero.Response     = response;
                hero.Url          = uri.OriginalString;
                hero.LastAccessed = timestamp;
                hero.LastUpdated  = timestamp;
            });
        }
 private bool ShouldInvalidate(UrlCacheInfo hero, long freshnessTreshold)
 {
     return(TimeSpanBetween(hero.LastUpdated, DateTime.Now.Ticks) > freshnessTreshold);
 }