internal IHttpHandler Details(string key) { if (String.IsNullOrEmpty(key)) { return(base.Json(new JsonErrorViewModel { Success = false, Message = "Missing cache key." }, HttpStatusCode.BadRequest)); } var cache = new HttpCacheShim() as ICache; var entry = cache.GetEntry(key); if (entry == default(CacheEntry))//better check? { return(base.Json(new JsonErrorViewModel { Success = false, Message = "Invalid cache key." }, HttpStatusCode.BadRequest)); } var model = new DetailsViewModel(entry) { Success = true }; return(base.Json(model)); }
internal IHttpHandler Combined() { var cache = new HttpCacheShim() as ICache; var model = new CombinedViewModel(cache, HttpContext.Current) { Success = true }; return(base.Json(model)); }
internal IHttpHandler Cache() { var cache = new HttpCacheShim(); var model = new CacheViewModel(cache) { Success = true }; return(base.Json(model)); }
//combine with delete? not sure how we would want to handle that //HttpPost internal IHttpHandler Clear() { if (!ValidateTokenHeader()) { return(base.Json(new JsonErrorViewModel { Success = false, Message = "Invalid verification token." }, HttpStatusCode.BadRequest)); } var cache = new HttpCacheShim(); cache.Clear(); return(base.Json(new ClearViewModel { Success = true })); }
public virtual Tuple <object, bool> Fill(FreshnessRequest freshness) { HttpCacheShim.Log("Fill", () => "(" + freshness + ") " + Name); var keyString = Name; var startTime = DateTime.UtcNow; var started = s_RunningQueries.TryAdd(keyString, startTime); try { if (started) { var backfilling = freshness == FreshnessRequest.AsyncBackfill; if (backfilling) { if (NumberOfRefillsRemaining > 0) { NumberOfRefillsRemaining--; } HttpCacheShim.Log("Refiller", () => "backfilling " + Name + " remaining " + NumberOfRefillsRemaining); } var result = Filler(freshness); return(Tuple.Create(result, false)); } else { HttpCacheShim.Log("Refiller", () => keyString + " already inflight"); return(Tuple.Create(default(object), true)); } } finally { if (started) { var endTime = DateTime.UtcNow; s_RunningQueries.TryRemove(keyString, out startTime); HttpCacheShim.Log("Refiller", () => keyString + " @" + startTime + " [" + (endTime - startTime) + "]"); } } }
//HttpPost internal IHttpHandler Delete(string key, bool prefix = false) { if (!ValidateTokenHeader()) { return(base.Json(new JsonErrorViewModel { Success = false, Message = "Invalid verification token." }, HttpStatusCode.BadRequest)); } if (String.IsNullOrEmpty(key)) { return(base.Json(new JsonErrorViewModel { Success = false, Message = "Missing cache key or prefix." }, HttpStatusCode.BadRequest)); } var cache = new HttpCacheShim(); cache.Clear(key, prefix); return(base.Json(new DeleteViewModel(cache) { Success = true })); }
public virtual void Put(object value) { HttpCacheShim.Log("Put", () => "[" + Name + "] " + value); Putter(this, value); }