コード例 #1
0
 private void SetException(VictorOpsAlert payload, PostAlertOptions options)
 {
     if (!string.IsNullOrEmpty(options.Exception))
     {
         payload.Exception = options.Exception.Substring(0, 1124); // https://help.victorops.com/knowledge-base/rest-endpoint-integration-guide/#note-vo_annotate-s-note
     }
 }
コード例 #2
0
        private string GetVictorOpsUri(PostAlertOptions options)
        {
            UriBuilder    uriBuilder = new UriBuilder(_baseUri);
            StringBuilder sb         = new StringBuilder(options.RestApiKey).Append("/");

            if (!string.IsNullOrWhiteSpace(options.RoutingKey))
            {
                sb.Append(options.RoutingKey);
            }

            uriBuilder.Path += sb.ToString();
            var uri = uriBuilder.ToString();

            return(uri);
        }
コード例 #3
0
        public async Task PostAlert(PostAlertOptions options)
        {
            var uri = GetVictorOpsUri(options);

            var payloadJson = GetPayloadJson(options);

            _logger.Verbose("Sending VictorOps alert: {PayloadJson} to base Uri: {Uri}", payloadJson, _baseUri);

            if (options.TestMode)
            {
                _logger.Information($"Test mode enabled. Not sending incident.");
            }
            else
            {
                await CreateIncident(uri, payloadJson);
            }
        }
コード例 #4
0
        private string GetPayloadJson(PostAlertOptions options)
        {
            var payload = new VictorOpsAlert()
            {
                Tool        = AlertSource.Seq,
                MessageType = options.Type,
                Title       = options.Title,
                Message     = options.Message,
                Id          = options.Id
            };

            SetException(payload, options);

            var jo = (JObject)JToken.FromObject(payload);

            foreach (var property in options.Properties)
            {
                jo.Add(property.Key, property.Value);
            }

            var payloadJson = JsonConvert.SerializeObject(jo);

            return(payloadJson);
        }