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)); }
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); }
/// <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); }
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)); }
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; } }
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)); }