Exemple #1
0
        internal Incident(ResponseObjects.Incident respIncident, IEnumerable <Component> componentsLookup)
        {
            Id        = respIncident.Id;
            Name      = respIncident.Name;
            Shortlink = respIncident.Shortlink;
            Impact    = respIncident.Impact;

            CreatedOn = respIncident.CreatedOn.UtcDateTime;
            UpdatedOn = respIncident.UpdatedOn.UtcDateTime;

            if (respIncident.StartedOn.HasValue)
            {
                StartedOn = respIncident.StartedOn.Value.UtcDateTime;
            }
            if (respIncident.ResolvedOn.HasValue)
            {
                ResolvedOn = respIncident.ResolvedOn.Value.UtcDateTime;
            }

            Status = new StatusDescription(respIncident.Status, null);

            if (respIncident.ComponentImpacts != null)
            {
                var componentDictionary = componentsLookup.ToDictionary(c => c.Id);

                ImpactedComponents = (from ic in respIncident.ComponentImpacts
                                      where componentDictionary.ContainsKey(ic.Id)
                                      select componentDictionary[ic.Id]).ToArray();
            }

            if (respIncident.Updates != null)
            {
                Updates = respIncident.Updates.Select(iu => new IncidentUpdate(iu, componentsLookup)).ToArray();
            }
        }
        internal ComponentStatusChange(ResponseObjects.ComponentImpact respComponentImpact, IEnumerable <Component> componentsLookup)
        {
            Name      = respComponentImpact.Name;
            OldStatus = new StatusDescription(respComponentImpact.OldStatus, null);
            NewStatus = new StatusDescription(respComponentImpact.NewStatus, null);

            Component = componentsLookup.FirstOrDefault(c => string.Equals(c.Id, respComponentImpact.ComponentId, StringComparison.InvariantCultureIgnoreCase));
        }
        internal Component(ResponseObjects.Component respComponent)
        {
            _rawSubcomponents = respComponent.SubcomponentIds ?? Enumerable.Empty <string>();

            Id              = respComponent.Id;
            Name            = respComponent.Name;
            Description     = respComponent.Description;
            DisplayPosition = respComponent.Position;
            Status          = new StatusDescription(respComponent.Status, null);
        }
Exemple #4
0
        internal IncidentUpdate(ResponseObjects.IncidentUpdate respIncidentUpdate, IEnumerable <Component> componentsLookup)
        {
            Id        = respIncidentUpdate.Id;
            Body      = respIncidentUpdate.Body;
            CreatedOn = respIncidentUpdate.CreatedOn.UtcDateTime;
            UpdatedOn = respIncidentUpdate.UpdatedOn.UtcDateTime;
            Status    = new StatusDescription(respIncidentUpdate.Status, null);
            TweetId   = respIncidentUpdate.TweetId;

            if (respIncidentUpdate.ComponentImpacts != null)
            {
                ComponentStatusChanges = respIncidentUpdate.ComponentImpacts.Select(ci => new ComponentStatusChange(ci, componentsLookup)).ToArray();
            }
        }
        internal StatusPage(ResponseObjects.SummaryResponse summaryResponse, ResponseObjects.ScheduledMaintenanceResponse scheduledMaintenanceResponse, ResponseObjects.IncidentsResponse incidentsResponse)
        {
            if (summaryResponse == null)
            {
                throw new ArgumentNullException(nameof(summaryResponse));
            }

            Id   = summaryResponse.Page.Id;
            Name = summaryResponse.Page.Name;
            Url  = summaryResponse.Page.Url;

            OverallStatus = new StatusDescription(summaryResponse.Status.Indicator, summaryResponse.Status.Description);

            Components = summaryResponse.Components.Select(c => new Component(c)).ToArray();
            foreach (var c in Components)
            {
                c.ProcessSubcomponents(Components);
            }

            Incidents = summaryResponse.Incidents.Select(i => new Incident(i, Components)).ToArray();

            if (incidentsResponse != null && incidentsResponse.Incidents != null)
            {
                var priorIncidents = incidentsResponse.Incidents.Select(i => new Incident(i, Components)).ToArray();

                Incidents = Incidents.Concat(priorIncidents.Except(Incidents)).ToArray();
            }

            // The summary response will have currently active scheduled maintenance records in, but if we've got the extra data then we should use it.
            ScheduledMaintenances = summaryResponse.ScheduledMaintenances.Select(schedMaint => new ScheduledMaintenance(schedMaint, Components)).ToArray();

            if (scheduledMaintenanceResponse != null && scheduledMaintenanceResponse.ScheduledMaintenances != null)
            {
                var priorScheduledMaintenance = scheduledMaintenanceResponse.ScheduledMaintenances.Select(schedMaint => new ScheduledMaintenance(schedMaint, Components)).ToArray();

                ScheduledMaintenances = ScheduledMaintenances.Concat(priorScheduledMaintenance.Except(ScheduledMaintenances)).ToArray();
            }
        }