Beispiel #1
0
        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);
                }
            };
        }