* feat(pihole): add support for v6 * fix: add session-store to keep using same session for pi-hole requests * chore: address pull request feedback * fix: import issue * fix: other import errors
23 lines
794 B
TypeScript
23 lines
794 B
TypeScript
import { removeTrailingSlash } from "@homarr/common";
|
|
|
|
import type { IntegrationInput } from "../base/integration";
|
|
import { PiHoleIntegrationV5 } from "./v5/pi-hole-integration-v5";
|
|
import { PiHoleIntegrationV6 } from "./v6/pi-hole-integration-v6";
|
|
|
|
export const createPiHoleIntegrationAsync = async (input: IntegrationInput) => {
|
|
const baseUrl = removeTrailingSlash(input.url);
|
|
const url = new URL(`${baseUrl}/api/info/version`);
|
|
const response = await fetch(url);
|
|
|
|
/**
|
|
* In pi-hole 5 the api was at /admin/api.php, in pi-hole 6 it was moved to /api
|
|
* For the /api/info/version endpoint, the response is 404 in pi-hole 5
|
|
* and 401 in pi-hole 6
|
|
*/
|
|
if (response.status === 404) {
|
|
return new PiHoleIntegrationV5(input);
|
|
}
|
|
|
|
return new PiHoleIntegrationV6(input);
|
|
};
|