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 } }
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); }
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); } }
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); }