Skip to content

Implements Minimal API endpoint adapter for converting Gotify notification requests to Pushover requests

License

Notifications You must be signed in to change notification settings

vdjuric/VdSoft.MinimalApi

Repository files navigation

Minimal API extensions and utilities for ASP.NET Core

VdSoft.MinimalApi.GotifyToPushover

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.

NuGet: VdSoft.MinimalApi.GotifyToPushover

<PackageReference Include="VdSoft.MinimalApi.GotifyToPushover" Version="1.0.0" />

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

About

Implements Minimal API endpoint adapter for converting Gotify notification requests to Pushover requests

Resources

License

Stars

Watchers

Forks

Languages