mirror of
https://github.com/karl0ss/homepage.git
synced 2025-04-29 12:03:41 +01:00
Enforce method
This commit is contained in:
parent
67a9f4983c
commit
19c3ac0d7e
@ -41,6 +41,11 @@ export default async function handler(req, res) {
|
||||
const endpoint = mapping?.endpoint;
|
||||
const endpointProxy = mapping?.proxyHandler || serviceProxyHandler;
|
||||
|
||||
if (mapping.method && mapping.method !== req.method) {
|
||||
logger.debug("Unsupported method: %s", req.method);
|
||||
return res.status(403).json({ error: "Unsupported method" });
|
||||
}
|
||||
|
||||
if (!endpoint) {
|
||||
logger.debug("Unsupported service endpoint: %s", type);
|
||||
return res.status(403).json({ error: "Unsupported service endpoint" });
|
||||
|
@ -225,7 +225,9 @@ export default function Component({ service }) {
|
||||
}),
|
||||
);
|
||||
const url = `/api/services/proxy?${params.toString()}`;
|
||||
await fetch(url).then(() => {
|
||||
await fetch(url, {
|
||||
method: "POST",
|
||||
}).then(() => {
|
||||
sessionMutate();
|
||||
});
|
||||
}
|
||||
|
@ -1,18 +1,26 @@
|
||||
import { useTranslation } from "next-i18next";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import Container from "components/services/widget/container";
|
||||
import Block from "components/services/widget/block";
|
||||
import useWidgetAPI from "utils/proxy/use-widget-api";
|
||||
import { formatProxyUrl } from "utils/proxy/api-helpers";
|
||||
|
||||
export default function Component({ service }) {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const { widget } = service;
|
||||
const { data: stats, error: stashError } = useWidgetAPI(widget, "stats");
|
||||
const [stats, setStats] = useState(null);
|
||||
|
||||
if (stashError) {
|
||||
return <Container service={service} error={stashError} />;
|
||||
}
|
||||
useEffect(() => {
|
||||
async function fetchStats() {
|
||||
const url = formatProxyUrl(widget, "stats");
|
||||
const res = await fetch(url, { method: "POST" });
|
||||
setStats(await res.json());
|
||||
}
|
||||
if (!stats) {
|
||||
fetchStats();
|
||||
}
|
||||
}, [widget, stats]);
|
||||
|
||||
if (!stats) {
|
||||
return (
|
||||
|
@ -1,16 +1,30 @@
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import Container from "components/services/widget/container";
|
||||
import Block from "components/services/widget/block";
|
||||
import useWidgetAPI from "utils/proxy/use-widget-api";
|
||||
import { formatProxyUrl } from "utils/proxy/api-helpers";
|
||||
|
||||
export default function Component({ service }) {
|
||||
const { widget } = service;
|
||||
|
||||
const { data: workersData, error: workersError } = useWidgetAPI(widget, "workers");
|
||||
const { data: pendingData, error: pendingError } = useWidgetAPI(widget, "pending");
|
||||
|
||||
if (workersError || pendingError) {
|
||||
const finalError = workersError ?? pendingError;
|
||||
return <Container service={service} error={finalError} />;
|
||||
const [pendingData, setPendingData] = useState(null);
|
||||
|
||||
useEffect(() => {
|
||||
async function fetchPending() {
|
||||
const url = formatProxyUrl(widget, "pending");
|
||||
const res = await fetch(url, { method: "POST" });
|
||||
setPendingData(await res.json());
|
||||
}
|
||||
if (!pendingData) {
|
||||
fetchPending();
|
||||
}
|
||||
}, [widget, pendingData]);
|
||||
|
||||
if (workersError) {
|
||||
return <Container service={service} error={workersError} />;
|
||||
}
|
||||
|
||||
if (!workersData || !pendingData) {
|
||||
|
@ -1,18 +1,26 @@
|
||||
import { useTranslation } from "next-i18next";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import Container from "components/services/widget/container";
|
||||
import Block from "components/services/widget/block";
|
||||
import useWidgetAPI from "utils/proxy/use-widget-api";
|
||||
import { formatProxyUrl } from "utils/proxy/api-helpers";
|
||||
|
||||
export default function Component({ service }) {
|
||||
const { widget } = service;
|
||||
const { t } = useTranslation();
|
||||
|
||||
const { data: uptimerobotData, error: uptimerobotError } = useWidgetAPI(widget, "getmonitors");
|
||||
const [uptimerobotData, setUptimerobotData] = useState(null);
|
||||
|
||||
if (uptimerobotError) {
|
||||
return <Container service={service} error={uptimerobotError} />;
|
||||
}
|
||||
useEffect(() => {
|
||||
async function fetchData() {
|
||||
const url = formatProxyUrl(widget, "getmonitors");
|
||||
const res = await fetch(url, { method: "POST" });
|
||||
setUptimerobotData(await res.json());
|
||||
}
|
||||
if (!uptimerobotData) {
|
||||
fetchData();
|
||||
}
|
||||
}, [widget, uptimerobotData]);
|
||||
|
||||
if (!uptimerobotData) {
|
||||
return (
|
||||
|
Loading…
x
Reference in New Issue
Block a user