import { NotificationOptions, NotificationService } from './notification-service'; export interface GotifyConfig { url: string; token: string; enabled: boolean; } export class GotifyNotificationService implements NotificationService { constructor(private config: GotifyConfig) {} async notify(options: NotificationOptions): Promise { if (!this.config.enabled) return; try { const { title, message, priority = 4 } = options; const url = new URL('message', this.config.url); url.searchParams.set('token', this.config.token); const response = await fetch(url.toString(), { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ title, message, priority, }), }); if (!response.ok) { const errorText = await response.text(); console.error('Gotify notification failed:', { status: response.status, error: errorText, }); } } catch (error) { console.error('Gotify notification error:', error); } } } export class NoopNotificationService implements NotificationService { async notify(): Promise { // Do nothing } }