public IHttpActionResult List() { if (!IsAuthenticated) { return(Unauthorized()); } using (new UserSwitcher(Context.Site.Domain.GetFullName(this.ApiUser), false)) { if (!Context.User.IsAdministrator) { return(Unauthorized()); } IList <IndexingUpdate> indexes = ContentSearchManager.Indexes.Where(index => { return(index.Group != IndexGroup.Experience && ContentSearchManager.Locator.GetInstance <ISearchIndexSwitchTracker>().IsIndexOn(index.Name)); }) .Select(index => { StringBuilder sb = new StringBuilder(); sb.AppendLine(IndexingEventHandler.BuildTime(index)); sb.AppendLine(IndexingEventHandler.ThroughPut(index)); sb.AppendLine(string.Concat("Document count: ", index.Summary.NumberOfDocuments)); sb.AppendLine(string.Format("Last Updated: {0} (UTC)", string.Concat(index.Summary.LastUpdated.ToShortDateString(), " - ", index.Summary.LastUpdated.ToShortTimeString()))); var payload = new IndexingUpdate { IndexName = index.Name, Message = sb.ToString(), State = State.UnKnown, NumberOfDocuments = index.Summary.NumberOfDocuments, LastUpdated = index.Summary.LastUpdated, IndexRebuildMilliseconds = IndexHealthHelper.GetIndexRebuildTime(index.Name), IndexRebuildTime = IndexingEventHandler.BuildTime(index) }; return(payload); }).ToList(); return(new JsonResult <IList <IndexingUpdate> >(indexes, new JsonSerializerSettings(), Encoding.UTF8, this)); } }
public IHttpActionResult Rebuild([FromBody] string indexname) { if (!IsAuthenticated) { return(Unauthorized()); } using (new UserSwitcher(Context.Site.Domain.GetFullName(this.ApiUser), false)) { if (!Context.User.IsAdministrator) { return(Unauthorized()); } var index = ContentSearchManager.Indexes.SingleOrDefault(idx => idx.Name == indexname); var payload = new IndexingUpdate { IndexName = index.Name, State = State.Started, NumberOfDocuments = index.Summary.NumberOfDocuments, LastUpdated = index.Summary.LastUpdated, IndexRebuildMilliseconds = IndexHealthHelper.GetIndexRebuildTime(index.Name), IndexRebuildTime = IndexingEventHandler.BuildTime(index) }; if (index.Group == IndexGroup.Experience || !ContentSearchManager.Locator.GetInstance <ISearchIndexSwitchTracker>().IsIndexOn(index.Name)) { payload.State = State.NotStarting; return(new JsonResult <IndexingUpdate>(payload, new JsonSerializerSettings(), Encoding.UTF8, this)); } else { var job = IndexCustodian.FullRebuild(index, true); payload.Job = job.DisplayName; payload.State = State.Started; return(new JsonResult <IndexingUpdate>(payload, new JsonSerializerSettings(), Encoding.UTF8, this)); } } }