コード例 #1
0
        public async Task <Incident> UpdateIncidentStatusAsync(string incidentId, PagerDutyPerson person, IncidentStatus newStatus)
        {
            if (person == null)
            {
                throw new ArgumentNullException(nameof(person));
            }
            var data = new
            {
                incident = new
                {
                    type   = "incident_reference",
                    status = newStatus.ToString()
                }
            };

            var headers = new Dictionary <string, string>
            {
                ["From"] = person.Email
            };

            try
            {
                var result = await GetFromPagerDutyAsync($"incidents/{incidentId}",
                                                         response => JSON.Deserialize <PagerDutyIncidentUpdateResp>(response, JilOptions),
                                                         httpMethod : "PUT",
                                                         data : data,
                                                         extraHeaders : headers);

                await Incidents.PollAsync(true);

                return(result?.Response ?? new Incident());
            }
            catch (DeserializationException de)
            {
                de.AddLoggedData("Message", de.Message)
                .AddLoggedData("Snippet After", de.SnippetAfterError)
                .Log();
                return(null);
            }
        }
コード例 #2
0
        public async Task <string> SetOverrideAsync(PagerDutySchedule shedule, DateTime start, DateTime end, PagerDutyPerson pdPerson)
        {
            var overrideData = new
            {
                @override = new
                {
                    start,
                    end,
                    user = new
                    {
                        id   = pdPerson.Id,
                        type = "user_reference"
                    }
                }
            };
            var result = await GetFromPagerDutyAsync("schedules/" + shedule.Id + "/overrides",
                                                     getFromJson : response => response, httpMethod : "POST", data : overrideData);

            await OnCallInfo.PollAsync(true);

            await PrimaryScheduleOverrides.PollAsync(true);

            return(result);
        }