VdSoft.MinimalApi.GotifyToPushover
1.0.0
dotnet add package VdSoft.MinimalApi.GotifyToPushover --version 1.0.0
NuGet\Install-Package VdSoft.MinimalApi.GotifyToPushover -Version 1.0.0
<PackageReference Include="VdSoft.MinimalApi.GotifyToPushover" Version="1.0.0" />
paket add VdSoft.MinimalApi.GotifyToPushover --version 1.0.0
#r "nuget: VdSoft.MinimalApi.GotifyToPushover, 1.0.0"
// Install VdSoft.MinimalApi.GotifyToPushover as a Cake Addin #addin nuget:?package=VdSoft.MinimalApi.GotifyToPushover&version=1.0.0 // Install VdSoft.MinimalApi.GotifyToPushover as a Cake Tool #tool nuget:?package=VdSoft.MinimalApi.GotifyToPushover&version=1.0.0
Implements a minimal API endpoint adapter that converts Gotify notification requests into Pushover requests and calls the Pushover public API.
Project doesn't have any third-party dependencies.
Motivation: Proxmox Virtual Environment offers Gotify notifications, but the iOS client for receiving notifications is unfortunately not officially supported. For this reason, I implemented simple minimal API endpoint for .NET Core that listens for Gotify notifications and translates them on the fly into Pushover requests.
Note: The current implementation is minimal and supports only my use case with Proxmox (and other use cases where Gotify JSON requests are sent). You can adapt the code for your own use case, and if possible, you're welcome to submit a PR.
ASP.NET Core, registration example
using VdSoft.MinimalApi.GotifyToPushover;
//...
var builder = WebApplication.CreateBuilder(args);
//...
//var app = builder.Build();
app.MapGotifyToPushover(new GotifyToPushoverOptions()
{
//required
GetPushoverUserByToken = token => "YOUR_PUSHOVER_USER",
//optional configuration
GotifyPriorityToPushoverPriority = priority => 0, //translates Gotify priority to fixed Pushover priority 0
CanContinueAsync = async (httpContext, gotifyToken, req, cancellationToken) => {
//you can check request before forwarding it to Pushover API
if (gotifyToken == "EXPECTED_GOTIFY_TOKEN")
{
return (true, null); //allow request
}
await Task.Delay(Random.Shared.Next(100, 500), cancellationToken);
return (false, "Denied"); //deny request
}
}).RequireHost("api.your-server.example"); //RequireHost is also optional
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 129 | 9/9/2024 |