示例#1
0
        public static T Get <T>(this IBarrel source, string key, T defaultValue)
        {
            if (string.IsNullOrWhiteSpace(key) || !source.Exists(key))
            {
                return(defaultValue);
            }

            return(source.Get <T>(key));
        }
示例#2
0
 public ObservableCollection <T> GetMonkey <T>(string nameMonkey) where T : Entity
 {
     if (file.Exists(nameMonkey))
     {
         var enumerableMonkey = file.Get <ObservableCollection <T> >(nameMonkey);
         return(enumerableMonkey);
     }
     return(null);
 }
示例#3
0
        /// <summary>
        /// Find element in file store
        /// </summary>
        /// <typeparam name="T">type element savind in file store</typeparam>
        /// <param name="nameMonkey">name with the save element in file store</param>
        /// <returns></returns>
        public ConfigurationItem <T> GetMonkey <T>(string nameMonkey)
        {
            if (file.Exists(nameMonkey))
            {
                return(new ConfigurationItem <T>()
                {
                    IsExpired = file.IsExpired(nameMonkey),
                    Item = file.Get <T>(nameMonkey)
                });
            }

            return(null);
        }
示例#4
0
        public static T GetOrCreate <T>(this IBarrel barrel, string key, T defaultValue, TimeSpan timeSpan = default)
        {
            if (string.IsNullOrWhiteSpace(key) || !barrel.Exists(key))
            {
                if (timeSpan == default)
                {
                    timeSpan = TimeSpan.MaxValue;
                }
                barrel.Add(key, defaultValue, timeSpan);
                return(defaultValue);
            }

            return(barrel.Get <T>(key));
        }
示例#5
0
        public Task <IEnumerable <IPlaylist> > GetAll()
        {
            try
            {
                if (!_barrel.Exists("playlists"))
                {
                    _barrel.Add <IEnumerable <IPlaylist> >("playlists", new List <IPlaylist>(), TimeSpan.MaxValue);
                }

                var items = _barrel.Get <IEnumerable <IPlaylist> >("playlists");
                return(Task.FromResult(items));
            }
            catch
            { }
            return(Task.FromResult <IEnumerable <IPlaylist> >(null));
        }
        /// <summary>
        /// WebAPIから県別のデータを取得する.
        /// </summary>
        /// <returns></returns>
        public async Task <IEnumerable <Prefecture> > GetPrefectures()
        {
            try
            {
                //キャッシュが存在して,有効期間内の場合はキャッシュから
                if (!_barrel.IsExpired(key: CachePrefecturesKey))
                {
                    await Task.Yield();

                    return(_barrel.Get <IEnumerable <Prefecture> >(key: CachePrefecturesKey));
                }

                //インターネットに接続してれば取得
                if (Connectivity.NetworkAccess == NetworkAccess.Internet)
                {
                    //WebAPIからデータ取得
                    var prefecturesData = await _httpClient.GetFromJsonAsync <IEnumerable <Prefecture> >("prefectures");

                    //キャッシュを更新.キャッシュの有効期限を設定
                    _barrel.Add(key: CachePrefecturesKey, data: prefecturesData, expireIn: TimeSpan.FromMinutes(10));

                    return(prefecturesData);
                }

                //インターネットにも接続してないし,キャッシュも有効期限切れだった場合
                //それでも有効期限切れのキャッシュデータを返すか.
                if (_barrel.Exists(key: CachePrefecturesKey))
                {
                    //とりあえず返すことにした.
                    return(_barrel.Get <IEnumerable <Prefecture> >(key: CachePrefecturesKey));
                }

                return(new List <Prefecture>());
            }
            catch
            {
                throw;
            }
        }
示例#7
0
        public void EmptyExpiredTest()
        {
            var url2 = "url2";

            //Saves the cache and pass it a timespan for expiration
            barrel.Add(key: url, data: monkeys, expireIn: TimeSpan.FromDays(1));
            barrel.Add(key: url2, data: monkeys, expireIn: TimeSpan.FromDays(-1));



            Assert.IsTrue(barrel.Exists(url));
            Assert.IsTrue(barrel.Exists(url2));

            barrel.EmptyExpired();

            Assert.IsTrue(barrel.Exists(url));
            Assert.IsFalse(barrel.Exists(url2));
        }