diff --git a/API/APIEndpointRecords/PushoverRecord.cs b/API/APIEndpointRecords/PushoverRecord.cs new file mode 100644 index 0000000..0f79919 --- /dev/null +++ b/API/APIEndpointRecords/PushoverRecord.cs @@ -0,0 +1,13 @@ +namespace API.APIEndpointRecords; + +public record PushoverRecord(string apptoken, string user) +{ + public bool Validate() + { + if (apptoken == string.Empty) + return false; + if (user == string.Empty) + return false; + return true; + } +} \ No newline at end of file diff --git a/API/Controllers/NotificationConnectorController.cs b/API/Controllers/NotificationConnectorController.cs index 186409a..b3a5ed3 100644 --- a/API/Controllers/NotificationConnectorController.cs +++ b/API/Controllers/NotificationConnectorController.cs @@ -120,7 +120,7 @@ public class NotificationConnectorController(PgsqlContext context) : Controller string authHeader = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes($"{ntfyRecord.username}:{ntfyRecord.password}")); string auth = Convert.ToBase64String(Encoding.UTF8.GetBytes(authHeader)).Replace("=",""); - NotificationConnector ntfyConnector = new NotificationConnector(TokenGen.CreateToken("Ntfy"), + NotificationConnector ntfyConnector = new (TokenGen.CreateToken("Ntfy"), $"{ntfyRecord.endpoint}?auth={auth}", new Dictionary() { @@ -150,7 +150,7 @@ public class NotificationConnectorController(PgsqlContext context) : Controller if(!lunaseaRecord.Validate()) return BadRequest(); - NotificationConnector lunaseaConnector = new NotificationConnector(TokenGen.CreateToken("Lunasea"), + NotificationConnector lunaseaConnector = new (TokenGen.CreateToken("Lunasea"), $"https://notify.lunasea.app/v1/custom/{lunaseaRecord.id}", new Dictionary(), "POST", @@ -158,6 +158,32 @@ public class NotificationConnectorController(PgsqlContext context) : Controller return CreateConnector(lunaseaConnector); } + /// + /// Creates a new Pushover-Notification-Connector + /// + /// https://pushover.net/api + /// ID of new connector + /// + /// A NotificationConnector with name already exists + /// Error during Database Operation + [HttpPut("Pushover")] + [ProducesResponseType(Status201Created, "application/json")] + [ProducesResponseType(Status400BadRequest)] + [ProducesResponseType(Status409Conflict)] + [ProducesResponseType(Status500InternalServerError, "text/plain")] + public IActionResult CreatePushoverConnector([FromBody]PushoverRecord pushoverRecord) + { + if(!pushoverRecord.Validate()) + return BadRequest(); + + NotificationConnector pushoverConnector = new (TokenGen.CreateToken("Pushover"), + $"https://api.pushover.net/1/messages.json", + new Dictionary(), + "POST", + $"{{\"token\": \"{pushoverRecord.apptoken}\", \"user\": \"{pushoverRecord.user}\", \"message:\":\"%text\", \"%title\" }}"); + return CreateConnector(pushoverConnector); + } + /// /// Deletes the Notification-Connector with the requested ID ///