monithor/Monithor.api/Alerting/ZulipWebhookTarget.cs

38 lines
1.2 KiB
C#

using System;
using System.Net;
using Telegram.Bot;
using Telegram.Bot.Types.Enums;
using Telegram.Bot.Types.ReplyMarkups;
namespace Monithor.api.Alerting {
public class ZulipWebhookTarget : ITarget {
public ZulipWebhookTarget(string domain, string apikey, IMonitor monitor, string displayName, string stream, string topic = "monithor-alerting") {
_domain = domain;
_apikey = apikey;
_stream = stream;
_topic = topic;
Monitor = monitor;
_displayName = displayName;
}
private readonly string _domain;
private readonly string _apikey;
private readonly string _stream;
private readonly string _topic;
public IMonitor Monitor { get; set; }
private readonly string _displayName;
public void SendMessage() {
var message = General.GetMessage(Monitor, _displayName);
var json = $"{{ \"text\": \"{message}\" }}".Replace("\n", "\\n");
try {
var client = new WebClient();
client.Headers.Add("Content-Type", "application/json");
client.UploadString($"https://{_domain}/api/v1/external/slack_incoming?api_key={_apikey}&stream={_stream}&topic={_topic}", json);
}
catch (Exception e) {
Console.WriteLine(e);
}
}
}
}