mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 12:42:34 +02:00

* implement ntfy notification * fix notification fields order * fix schema for ntfy --------- Co-authored-by: yusing <yusing@6uo.me>
78 lines
1.9 KiB
TypeScript
78 lines
1.9 KiB
TypeScript
import { URL } from "../types";
|
|
|
|
export const NOTIFICATION_PROVIDERS = ["webhook", "gotify", "ntfy"] as const;
|
|
|
|
export type NotificationProvider = (typeof NOTIFICATION_PROVIDERS)[number];
|
|
|
|
export type NotificationConfig = {
|
|
/* Name of the notification provider */
|
|
name: string;
|
|
/* URL of the notification provider */
|
|
url: URL;
|
|
};
|
|
|
|
export interface GotifyConfig extends NotificationConfig {
|
|
provider: "gotify";
|
|
/* Gotify token */
|
|
token: string;
|
|
}
|
|
|
|
export const NTFY_MSG_STYLES = ["markdown", "plain"];
|
|
export type NtfyStyle = (typeof NTFY_MSG_STYLES)[number];
|
|
|
|
export interface NtfyConfig extends NotificationConfig {
|
|
provider: "ntfy";
|
|
topic: string;
|
|
token?: string;
|
|
style?: NtfyStyle;
|
|
}
|
|
|
|
export const WEBHOOK_TEMPLATES = ["", "discord"] as const;
|
|
export const WEBHOOK_METHODS = ["POST", "GET", "PUT"] as const;
|
|
export const WEBHOOK_MIME_TYPES = [
|
|
"application/json",
|
|
"application/x-www-form-urlencoded",
|
|
"text/plain",
|
|
"text/markdown",
|
|
] as const;
|
|
export const WEBHOOK_COLOR_MODES = ["hex", "dec"] as const;
|
|
|
|
export type WebhookTemplate = (typeof WEBHOOK_TEMPLATES)[number];
|
|
export type WebhookMethod = (typeof WEBHOOK_METHODS)[number];
|
|
export type WebhookMimeType = (typeof WEBHOOK_MIME_TYPES)[number];
|
|
export type WebhookColorMode = (typeof WEBHOOK_COLOR_MODES)[number];
|
|
|
|
export interface WebhookConfig extends NotificationConfig {
|
|
provider: "webhook";
|
|
/**
|
|
* Webhook template
|
|
*
|
|
* @default "discord"
|
|
*/
|
|
template?: WebhookTemplate;
|
|
/* Webhook token */
|
|
token?: string;
|
|
/**
|
|
* Webhook message (usally JSON),
|
|
* required when template is not defined
|
|
*/
|
|
payload?: string;
|
|
/**
|
|
* Webhook method
|
|
*
|
|
* @default "POST"
|
|
*/
|
|
method?: WebhookMethod;
|
|
/**
|
|
* Webhook mime type
|
|
*
|
|
* @default "application/json"
|
|
*/
|
|
mime_type?: WebhookMimeType;
|
|
/**
|
|
* Webhook color mode
|
|
*
|
|
* @default "hex"
|
|
*/
|
|
color_mode?: WebhookColorMode;
|
|
}
|