Sabnzbd Support
This commit is contained in:
parent
eeac1200e7
commit
9d790894d5
15 changed files with 111 additions and 0 deletions
|
@ -101,5 +101,11 @@
|
||||||
"apps": "Anwendungen",
|
"apps": "Anwendungen",
|
||||||
"clients": "Kunden",
|
"clients": "Kunden",
|
||||||
"messages": "Mitteilungen"
|
"messages": "Mitteilungen"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"status": "Status",
|
||||||
|
"speed": "Speed",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"timeleft": "Time left"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,5 +112,11 @@
|
||||||
"apps": "Applications",
|
"apps": "Applications",
|
||||||
"clients": "Clients",
|
"clients": "Clients",
|
||||||
"messages": "Messages"
|
"messages": "Messages"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"status": "Status",
|
||||||
|
"speed": "Speed",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"timeleft": "Time left"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,5 +101,11 @@
|
||||||
"apps": "Aplicaciones",
|
"apps": "Aplicaciones",
|
||||||
"clients": "Clientela",
|
"clients": "Clientela",
|
||||||
"messages": "Mensajes"
|
"messages": "Mensajes"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"status": "Status",
|
||||||
|
"speed": "Speed",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"timeleft": "Time left"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,5 +112,11 @@
|
||||||
"apps": "Applications",
|
"apps": "Applications",
|
||||||
"clients": "Clients",
|
"clients": "Clients",
|
||||||
"messages": "Messages"
|
"messages": "Messages"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"status": "Status",
|
||||||
|
"speed": "Speed",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"timeleft": "Time left"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,5 +101,11 @@
|
||||||
"apps": "Applications",
|
"apps": "Applications",
|
||||||
"clients": "Clients",
|
"clients": "Clients",
|
||||||
"messages": "Messages"
|
"messages": "Messages"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"status": "Status",
|
||||||
|
"speed": "Speed",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"timeleft": "Time left"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,5 +101,11 @@
|
||||||
"apps": "Applications",
|
"apps": "Applications",
|
||||||
"clients": "Clients",
|
"clients": "Clients",
|
||||||
"messages": "Messages"
|
"messages": "Messages"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"status": "Status",
|
||||||
|
"speed": "Speed",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"timeleft": "Time left"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,5 +101,11 @@
|
||||||
"apps": "Applications",
|
"apps": "Applications",
|
||||||
"clients": "Clients",
|
"clients": "Clients",
|
||||||
"messages": "Messages"
|
"messages": "Messages"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"status": "Status",
|
||||||
|
"speed": "Speed",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"timeleft": "Time left"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,5 +112,11 @@
|
||||||
"apps": "Aplicações",
|
"apps": "Aplicações",
|
||||||
"clients": "Clientes",
|
"clients": "Clientes",
|
||||||
"messages": "Mensagens"
|
"messages": "Mensagens"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"status": "Status",
|
||||||
|
"speed": "Speed",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"timeleft": "Time left"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,5 +101,11 @@
|
||||||
"apps": "Aplicações",
|
"apps": "Aplicações",
|
||||||
"clients": "Clientes",
|
"clients": "Clientes",
|
||||||
"messages": "Mensagens"
|
"messages": "Mensagens"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"status": "Status",
|
||||||
|
"speed": "Speed",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"timeleft": "Time left"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,5 +101,11 @@
|
||||||
"apps": "Aplicações",
|
"apps": "Aplicações",
|
||||||
"clients": "Clientes",
|
"clients": "Clientes",
|
||||||
"messages": "Mensagens"
|
"messages": "Mensagens"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"status": "Status",
|
||||||
|
"speed": "Speed",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"timeleft": "Time left"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,5 +101,11 @@
|
||||||
"apps": "Aplicações",
|
"apps": "Aplicações",
|
||||||
"clients": "Clientes",
|
"clients": "Clientes",
|
||||||
"messages": "Mensagens"
|
"messages": "Mensagens"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"status": "Status",
|
||||||
|
"speed": "Speed",
|
||||||
|
"remaining": "Remaining",
|
||||||
|
"timeleft": "Time left"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ import Overseerr from "./widgets/service/overseerr";
|
||||||
import Npm from "./widgets/service/npm";
|
import Npm from "./widgets/service/npm";
|
||||||
import Tautulli from "./widgets/service/tautulli";
|
import Tautulli from "./widgets/service/tautulli";
|
||||||
import Gotify from "./widgets/service/gotify";
|
import Gotify from "./widgets/service/gotify";
|
||||||
|
import Sabnzbd from "./widgets/service/sabnzbd";
|
||||||
|
|
||||||
const widgetMappings = {
|
const widgetMappings = {
|
||||||
docker: Docker,
|
docker: Docker,
|
||||||
|
@ -36,6 +37,7 @@ const widgetMappings = {
|
||||||
npm: Npm,
|
npm: Npm,
|
||||||
tautulli: Tautulli,
|
tautulli: Tautulli,
|
||||||
gotify: Gotify,
|
gotify: Gotify,
|
||||||
|
sabnzbd: Sabnzbd
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function Widget({ service }) {
|
export default function Widget({ service }) {
|
||||||
|
|
41
src/components/services/widgets/service/sabnzbd.jsx
Normal file
41
src/components/services/widgets/service/sabnzbd.jsx
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
import useSWR from "swr";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
|
import Widget from "../widget";
|
||||||
|
import Block from "../block";
|
||||||
|
|
||||||
|
import { formatApiUrl } from "utils/api-helpers";
|
||||||
|
|
||||||
|
export default function Sabnzbd({ service }) {
|
||||||
|
const { t } = useTranslation("common");
|
||||||
|
|
||||||
|
const config = service.widget;
|
||||||
|
const { data: statusData, error: statusError } = useSWR(formatApiUrl(config, "mode=queue"));
|
||||||
|
|
||||||
|
if (statusError) {
|
||||||
|
return <Widget error={t("widget.api_error")} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!statusData) {
|
||||||
|
return (
|
||||||
|
<Widget>
|
||||||
|
<Block label={t("sabnzbd.status")} />
|
||||||
|
<Block label={t("sabnzbd.speed")} />
|
||||||
|
<Block label={t("sabnzbd.remaining")} />
|
||||||
|
<Block label={t("sabnzbd.timeleft")} />
|
||||||
|
</Widget>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Widget>
|
||||||
|
<Block label={t("sabnzbd.status")} value={statusData?.queue?.status } />
|
||||||
|
<Block label={t("sabnzbd.speed")} value={statusData?.queue?.speed } />
|
||||||
|
<Block
|
||||||
|
label={t("sabnzbd.remaining")}
|
||||||
|
value={t("common.bytes", { value: statusData?.queue?.mbleft * 1024 * 1024 })}
|
||||||
|
/>
|
||||||
|
<Block label={t("sabnzbd.timeleft")} value={statusData?.queue?.timeleft} />
|
||||||
|
</Widget>
|
||||||
|
);
|
||||||
|
}
|
|
@ -14,6 +14,7 @@ const serviceProxyHandlers = {
|
||||||
speedtest: genericProxyHandler,
|
speedtest: genericProxyHandler,
|
||||||
tautulli: genericProxyHandler,
|
tautulli: genericProxyHandler,
|
||||||
traefik: genericProxyHandler,
|
traefik: genericProxyHandler,
|
||||||
|
sabnzbd: genericProxyHandler,
|
||||||
// uses X-API-Key header auth
|
// uses X-API-Key header auth
|
||||||
gotify: credentialedProxyHandler,
|
gotify: credentialedProxyHandler,
|
||||||
portainer: credentialedProxyHandler,
|
portainer: credentialedProxyHandler,
|
||||||
|
|
|
@ -14,6 +14,7 @@ const formats = {
|
||||||
ombi: `{url}/api/v1/{endpoint}`,
|
ombi: `{url}/api/v1/{endpoint}`,
|
||||||
npm: `{url}/api/{endpoint}`,
|
npm: `{url}/api/{endpoint}`,
|
||||||
gotify: `{url}/{endpoint}`,
|
gotify: `{url}/{endpoint}`,
|
||||||
|
sabnzbd: `{url}/api?output=json&apikey={key}&{endpoint}`,
|
||||||
};
|
};
|
||||||
|
|
||||||
export function formatApiCall(api, args) {
|
export function formatApiCall(api, args) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue