public GetEndpoints() { Patch["/endpoints/{id}"] = parameters => { var data = this.Bind <EndpointUpdateModel>(); var endpointId = (Guid)parameters.id; using (var session = Store.OpenSession()) { var endpoint = session.Load <KnownEndpoint>(endpointId); if (endpoint == null) { return(HttpStatusCode.NotFound); } if (data.MonitorHeartbeat == endpoint.Monitored) { return(HttpStatusCode.NotModified); } if (data.MonitorHeartbeat) { Bus.SendLocal(new EnableEndpointMonitoring { EndpointId = endpointId }); } else { Bus.SendLocal(new DisableEndpointMonitoring { EndpointId = endpointId }); } } return(HttpStatusCode.Accepted); }; Get["/endpoints"] = _ => { using (var session = Store.OpenSession()) { QueryHeaderInformation stats; var query = session.Query <KnownEndpoint, KnownEndpointIndex>(); var results = new List <EndpointsView>(); using (var ie = session.Advanced.Stream(query, out stats)) { while (ie.MoveNext()) { var knownEndpoint = ie.Current.Document; var view = new EndpointsView { Id = knownEndpoint.Id, Name = knownEndpoint.EndpointDetails.Name, HostDisplayName = knownEndpoint.HostDisplayName, Monitored = knownEndpoint.Monitored, MonitorHeartbeat = knownEndpoint.Monitored, LicenseStatus = LicenseStatusKeeper.Get(knownEndpoint.EndpointDetails.Name + knownEndpoint.HostDisplayName) }; session.Advanced.Lazily.Load <Heartbeat>(knownEndpoint.Id, heartbeat => { if (heartbeat == null) { return; } view.IsSendingHeartbeats = true; view.MonitorHeartbeat = !heartbeat.Disabled; view.HeartbeatInformation = new HeartbeatInformation { LastReportAt = heartbeat.LastReportAt, ReportedStatus = heartbeat.ReportedStatus }; }); results.Add(view); } session.Advanced.Eagerly.ExecuteAllPendingLazyOperations(); } return(Negotiate.WithModel(results) .WithEtagAndLastModified(stats)); } }; }
public GetEndpoints() { Patch["/endpoints/{id}"] = parameters => { var data = this.Bind<EndpointUpdateModel>(); var endpointId = (Guid) parameters.id; using (var session = Store.OpenSession()) { var endpoint = session.Load<KnownEndpoint>(endpointId); if (endpoint == null) { return HttpStatusCode.NotFound; } if (data.MonitorHeartbeat == endpoint.Monitored) { return HttpStatusCode.NotModified; } if (data.MonitorHeartbeat) { Bus.SendLocal(new EnableEndpointMonitoring{EndpointId = endpointId}); } else { Bus.SendLocal(new DisableEndpointMonitoring { EndpointId = endpointId }); } } return HttpStatusCode.Accepted; }; Get["/endpoints"] = _ => { using (var session = Store.OpenSession()) { QueryHeaderInformation stats; var query = session.Query<KnownEndpoint, KnownEndpointIndex>(); var results = new List<EndpointsView>(); using (var ie = session.Advanced.Stream(query, out stats)) { while (ie.MoveNext()) { var knownEndpoint = ie.Current.Document; var view = new EndpointsView { Id = knownEndpoint.Id, Name = knownEndpoint.EndpointDetails.Name, HostDisplayName = knownEndpoint.HostDisplayName, Monitored = knownEndpoint.Monitored, MonitorHeartbeat = knownEndpoint.Monitored, LicenseStatus = LicenseStatusKeeper.Get(knownEndpoint.EndpointDetails.Name + knownEndpoint.HostDisplayName) }; session.Advanced.Lazily.Load<Heartbeat>(knownEndpoint.Id, heartbeat => { if (heartbeat == null) { return; } view.IsSendingHeartbeats = true; view.MonitorHeartbeat = !heartbeat.Disabled; view.HeartbeatInformation = new HeartbeatInformation { LastReportAt = heartbeat.LastReportAt, ReportedStatus = heartbeat.ReportedStatus }; }); results.Add(view); } session.Advanced.Eagerly.ExecuteAllPendingLazyOperations(); } return Negotiate.WithModel(results) .WithEtagAndLastModified(stats); } }; }