/// <summary> /// Retrieve an item /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="result"></param> public bool Get <T>(string key, out SimpleStoreItem <T> result) { result = null; var storeFilePath = new FileInfo(this.GetDestinationPath(key)); if (!storeFilePath.Exists) { return(false); } var contents = File.ReadAllText(storeFilePath.FullName, Encoding.UTF8); var restored = JsonConvert.DeserializeObject <SimpleStoreItem <T> >(contents); if (restored.Ttl > 0 && restored.Created.AddMinutes(restored.Ttl) < DateTime.UtcNow) { File.Delete(storeFilePath.FullName); return(false); } restored.StorePath = storeFilePath.FullName; result = restored; return(true); }
/// <summary> /// Store an item /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="data"></param> /// <param name="ttl">Time to live for the item in minutes. Default to 0 - no expiration.</param> public void Set <T>(string key, T data, int ttl = 0) { var cacheItem = new SimpleStoreItem <T>(); cacheItem.Created = DateTime.UtcNow; cacheItem.Ttl = ttl; cacheItem.Data = data; cacheItem.Key = key; cacheItem.StorePath = this.GetDestinationPath(key); string serialized = JsonConvert.SerializeObject(cacheItem, Formatting.Indented); File.WriteAllText(cacheItem.StorePath, serialized, Encoding.UTF8); }