Skip to content

Commit cbb6bd5

Browse files
committed
feat: full parity with non-http endpoints
1 parent e627329 commit cbb6bd5

49 files changed

Lines changed: 5209 additions & 59 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/parity.yml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
pull_request:
77
push:
88
branches:
9-
- main
9+
- "**"
1010
workflow_dispatch:
1111
schedule:
1212
- cron: "0 9 * * 1"
@@ -62,6 +62,25 @@ jobs:
6262

6363
- name: Run parity tests
6464
run: bash scripts/ci/run_parity_tests.sh
65+
66+
- name: Publish parity report summary
67+
if: always()
68+
run: |
69+
echo "## Parity Report" >> "$GITHUB_STEP_SUMMARY"
70+
if [[ -f reports/parity_report.md ]]; then
71+
cat reports/parity_report.md >> "$GITHUB_STEP_SUMMARY"
72+
else
73+
echo "Parity report not generated." >> "$GITHUB_STEP_SUMMARY"
74+
fi
75+
76+
- name: Upload parity report artifact
77+
if: always()
78+
uses: actions/upload-artifact@v6
79+
with:
80+
name: parity-report
81+
path: |
82+
reports/parity_report.md
83+
reports/parity_report.json
6584
- name: Notify Discord on scheduled parity failure
6685
if: failure() && github.event_name == 'schedule' && env.DISCORD_WEBHOOK != ''
6786
run: |

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,5 @@
1414
/.tmp/pycapture/
1515
/.tmp/pycases/
1616
__pycache__/
17+
reports/*
18+
!reports/README.md

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77
[![GitHub Release](https://img.shields.io/github/v/release/unraid/apprise-go)](https://github.com/unraid/apprise-go/releases)
88
[![License](https://img.shields.io/github/license/unraid/apprise-go)](LICENSE)
99
[![Go Version](https://img.shields.io/github/go-mod/go-version/unraid/apprise-go)](go.mod)
10+
[![Parity](https://github.com/unraid/apprise-go/actions/workflows/parity.yml/badge.svg)](https://github.com/unraid/apprise-go/actions/workflows/parity.yml)
1011

1112
[Features](#features)[Installation](#installation)[Usage](#usage)[Releases](#releases)[Contributing](#contributing)
1213

14+
Latest parity report: [GitHub Actions parity workflow](https://github.com/unraid/apprise-go/actions/workflows/parity.yml)
15+
1316
</div>
1417

1518
---

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,8 @@ module github.com/unraid/apprise-go
33
go 1.24.0
44

55
require golang.org/x/crypto v0.47.0
6+
7+
require (
8+
github.com/gomarkdown/markdown v0.0.0-20250810172220-2e2c11897d1a // indirect
9+
golang.org/x/net v0.48.0 // indirect
10+
)

go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1+
github.com/gomarkdown/markdown v0.0.0-20250810172220-2e2c11897d1a h1:l7A0loSszR5zHd/qK53ZIHMO8b3bBSmENnQ6eKnUT0A=
2+
github.com/gomarkdown/markdown v0.0.0-20250810172220-2e2c11897d1a/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
3+
golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
4+
golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
15
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
26
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
37
golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8=
48
golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A=
9+
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
10+
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
11+
golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
12+
golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=

internal/cli/cli.go

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1233,6 +1233,105 @@ func Run(args []string, stdout, stderr io.Writer) int {
12331233
fmt.Fprintf(stderr, "mailto notify error: %s\n", err)
12341234
failed = true
12351235
}
1236+
case "dbus", "kde", "qt", "glib", "gio", "gnome":
1237+
localTarget, err := notify.NewLocalNotifyTarget(parsed)
1238+
if err != nil {
1239+
fmt.Fprintf(stderr, "%s target error: %s\n", parsed.Scheme, err)
1240+
failed = true
1241+
continue
1242+
}
1243+
if err := localTarget.Send(body, title, nt); err != nil {
1244+
fmt.Fprintf(stderr, "%s notify error: %s\n", parsed.Scheme, err)
1245+
failed = true
1246+
}
1247+
case "growl":
1248+
growlTarget, err := notify.NewGrowlTarget(parsed)
1249+
if err != nil {
1250+
fmt.Fprintf(stderr, "growl target error: %s\n", err)
1251+
failed = true
1252+
continue
1253+
}
1254+
if err := growlTarget.Send(body, title, nt); err != nil {
1255+
fmt.Fprintf(stderr, "growl notify error: %s\n", err)
1256+
failed = true
1257+
}
1258+
case "mqtt", "mqtts":
1259+
mqttTarget, err := notify.NewMQTTTarget(parsed)
1260+
if err != nil {
1261+
fmt.Fprintf(stderr, "mqtt target error: %s\n", err)
1262+
failed = true
1263+
continue
1264+
}
1265+
if err := mqttTarget.Send(body, title, nt); err != nil {
1266+
fmt.Fprintf(stderr, "mqtt notify error: %s\n", err)
1267+
failed = true
1268+
}
1269+
case "smpp", "smpps":
1270+
smppTarget, err := notify.NewSMPPTarget(parsed)
1271+
if err != nil {
1272+
fmt.Fprintf(stderr, "smpp target error: %s\n", err)
1273+
failed = true
1274+
continue
1275+
}
1276+
if err := smppTarget.Send(body, title, nt); err != nil {
1277+
fmt.Fprintf(stderr, "smpp notify error: %s\n", err)
1278+
failed = true
1279+
}
1280+
case "syslog":
1281+
syslogTarget, err := notify.NewSyslogTarget(parsed)
1282+
if err != nil {
1283+
fmt.Fprintf(stderr, "syslog target error: %s\n", err)
1284+
failed = true
1285+
continue
1286+
}
1287+
if err := syslogTarget.Send(body, title, nt); err != nil {
1288+
fmt.Fprintf(stderr, "syslog notify error: %s\n", err)
1289+
failed = true
1290+
}
1291+
case "macosx":
1292+
macosxTarget, err := notify.NewMacOSXTarget(parsed)
1293+
if err != nil {
1294+
fmt.Fprintf(stderr, "macosx target error: %s\n", err)
1295+
failed = true
1296+
continue
1297+
}
1298+
if err := macosxTarget.Send(body, title, nt); err != nil {
1299+
fmt.Fprintf(stderr, "macosx notify error: %s\n", err)
1300+
failed = true
1301+
}
1302+
case "windows":
1303+
windowsTarget, err := notify.NewWindowsTarget(parsed)
1304+
if err != nil {
1305+
fmt.Fprintf(stderr, "windows target error: %s\n", err)
1306+
failed = true
1307+
continue
1308+
}
1309+
if err := windowsTarget.Send(body, title, nt); err != nil {
1310+
fmt.Fprintf(stderr, "windows notify error: %s\n", err)
1311+
failed = true
1312+
}
1313+
case "aprs":
1314+
aprsTarget, err := notify.NewAprsTarget(parsed)
1315+
if err != nil {
1316+
fmt.Fprintf(stderr, "aprs target error: %s\n", err)
1317+
failed = true
1318+
continue
1319+
}
1320+
if err := aprsTarget.Send(body, title, nt); err != nil {
1321+
fmt.Fprintf(stderr, "aprs notify error: %s\n", err)
1322+
failed = true
1323+
}
1324+
case "rsyslog":
1325+
rsyslogTarget, err := notify.NewRSyslogTarget(parsed)
1326+
if err != nil {
1327+
fmt.Fprintf(stderr, "rsyslog target error: %s\n", err)
1328+
failed = true
1329+
continue
1330+
}
1331+
if err := rsyslogTarget.Send(body, title, nt); err != nil {
1332+
fmt.Fprintf(stderr, "rsyslog notify error: %s\n", err)
1333+
failed = true
1334+
}
12361335
case "smtp2go":
12371336
smtp2goTarget, err := notify.NewSMTP2GoTarget(parsed)
12381337
if err != nil {

0 commit comments

Comments
 (0)