38 lines
1.2 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |