refactor: ui prepare

This commit is contained in:
xiaojunnuo
2021-01-21 23:59:06 +08:00
parent c26417d769
commit d3619ad60f
17 changed files with 292 additions and 245 deletions
@@ -0,0 +1,34 @@
import _ from 'lodash-es'
import logger from '../utils/util.log.js'
export class AbstractDnsProvider {
constructor () {
this.logger = logger
}
async createRecord ({ fullRecord, type, value }) {
throw new Error('请实现 createRecord 方法')
}
async removeRecord ({ fullRecord, type, value, record }) {
throw new Error('请实现 removeRecord 方法')
}
async getDomainList () {
throw new Error('请实现 getDomainList 方法')
}
async matchDomain (dnsRecord, domainPropName) {
const list = await this.getDomainList()
let domain = null
for (const item of list) {
if (_.endsWith(dnsRecord, item[domainPropName])) {
domain = item
break
}
}
if (!domain) {
throw new Error('找不到域名,请检查域名是否正确:' + dnsRecord)
}
return domain
}
}
+2 -34
View File
@@ -1,34 +1,2 @@
import _ from 'lodash-es'
import logger from '../utils/util.log.js'
export class AbstractDnsProvider {
constructor () {
this.logger = logger
}
async createRecord ({ fullRecord, type, value }) {
throw new Error('请实现 createRecord 方法')
}
async removeRecord ({ fullRecord, type, value, record }) {
throw new Error('请实现 removeRecord 方法')
}
async getDomainList () {
throw new Error('请实现 getDomainList 方法')
}
async matchDomain (dnsRecord, domainPropName) {
const list = await this.getDomainList()
let domain = null
for (const item of list) {
if (_.endsWith(dnsRecord, item[domainPropName])) {
domain = item
break
}
}
if (!domain) {
throw new Error('找不到域名,请检查域名是否正确:' + dnsRecord)
}
return domain
}
}
export { providerRegistry } from './provider-registry.js'
export { AbstractDnsProvider } from './abstract-provider.js'
@@ -0,0 +1,26 @@
export class ProviderRegistry {
constructor () {
this.providers = {}
}
install (provider) {
if (provider == null) {
return
}
if (this.providers == null) {
this.providers = {}
}
const name = provider.name || (provider.define && provider.define.name)
this.providers[name] = provider
}
get (name) {
if (name) {
return this.providers[name]
}
throw new Error(`找不到授权提供者:${name}`)
}
}
export const providerRegistry = new ProviderRegistry()