32 lines
983 B
TypeScript
32 lines
983 B
TypeScript
import type { IDnsProviderClient } from './interfaces.js';
|
|
import type {
|
|
TDnsProviderType,
|
|
TDnsProviderCredentials,
|
|
} from '../../../ts_interfaces/data/dns-provider.js';
|
|
import { CloudflareDnsProvider } from './cloudflare.provider.js';
|
|
|
|
/**
|
|
* Instantiate a runtime DNS provider client from a stored DnsProviderDoc.
|
|
*
|
|
* @throws if the provider type is not supported.
|
|
*/
|
|
export function createDnsProvider(
|
|
type: TDnsProviderType,
|
|
credentials: TDnsProviderCredentials,
|
|
): IDnsProviderClient {
|
|
switch (type) {
|
|
case 'cloudflare': {
|
|
if (credentials.type !== 'cloudflare') {
|
|
throw new Error(
|
|
`createDnsProvider: type mismatch — provider type is 'cloudflare' but credentials.type is '${credentials.type}'`,
|
|
);
|
|
}
|
|
return new CloudflareDnsProvider(credentials.apiToken);
|
|
}
|
|
default: {
|
|
const _exhaustive: never = type;
|
|
throw new Error(`createDnsProvider: unsupported provider type: ${_exhaustive}`);
|
|
}
|
|
}
|
|
}
|