Refactor acme.sh dns providers

- updated chakra and typescript
- added locales for dns provider configs
This commit is contained in:
Jamie Curnow
2023-01-12 16:25:43 +10:00
parent 1d5d3ecd7a
commit 5d3bc0fabd
57 changed files with 2204 additions and 2161 deletions

View File

@@ -28,21 +28,22 @@ function buildBody(data?: Record<string, any>) {
}
}
async function processResponse(response: Response) {
async function processResponse(response: Response, skipCamelize = false) {
const payload = await response.json();
if (!response.ok) {
throw new Error(payload.error.message);
}
return camelizeKeys(payload) as any;
return (skipCamelize ? payload : camelizeKeys(payload)) as any;
}
interface GetArgs {
url: string;
params?: queryString.StringifiableRecord;
skipCamelize?: boolean;
}
export async function get(
{ url, params }: GetArgs,
{ url, params, skipCamelize }: GetArgs,
abortController?: AbortController,
) {
const apiUrl = buildUrl({ url, params });
@@ -50,7 +51,7 @@ export async function get(
const signal = abortController?.signal;
const headers = buildAuthHeader();
const response = await fetch(apiUrl, { method, headers, signal });
return processResponse(response);
return processResponse(response, skipCamelize);
}
interface PostArgs {

View File

@@ -7,6 +7,8 @@ export async function getDNSProvidersAcmesh(
const { result } = await api.get(
{
url: "dns-providers/acmesh",
// Important for this endpoint:
skipCamelize: true,
},
abortController,
);

View File

@@ -74,18 +74,25 @@ export interface DNSProvider {
meta: any;
}
export interface DNSProvidersAcmeshField {
name: string;
export interface DNSProvidersAcmeshProperty {
title: string;
type: string;
metaKey: string;
isRequired: boolean;
additionalProperties: boolean;
minimum: number;
maximum: number;
minLength: number;
maxLength: number;
pattern: string;
isSecret: boolean;
}
export interface DNSProvidersAcmesh {
name: string;
acmeshName: string;
fields: DNSProvidersAcmeshField[];
title: string;
type: string;
additionalProperties: boolean;
minProperties: number;
required: string[];
properties: any;
}
export interface Host {