feat: BILLmanager API на уровне хостера, миграция со старых аккаунтов
Docker / build (push) Failing after 18s
Docker / build (push) Failing after 18s
Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* BILLmanager: URL и тип API задаются на хостере (providers), учётные данные — на аккаунте.
|
||||
* Поддержка fallback на поля аккаунта для старых данных до миграции.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {object|null|undefined} accountRow
|
||||
* @param {object|null|undefined} providerRow
|
||||
* @returns {{ apiType: string, apiBaseUrl: string }}
|
||||
*/
|
||||
export function resolveBillmanagerApi(accountRow, providerRow) {
|
||||
const apiType = String(providerRow?.apiType || accountRow?.apiType || '').trim()
|
||||
const apiBaseUrl = String(providerRow?.apiBaseUrl || accountRow?.apiBaseUrl || '').trim()
|
||||
return { apiType, apiBaseUrl }
|
||||
}
|
||||
|
||||
/**
|
||||
* Объект аккаунта с подставленным URL для syncFromBillmanager / balance.
|
||||
* @param {object} accountRow
|
||||
* @param {object|null|undefined} providerRow
|
||||
* @returns {object|null} null если не готово к запросам API
|
||||
*/
|
||||
export function billmanagerAccountRowForSync(accountRow, providerRow) {
|
||||
if (!accountRow) return null
|
||||
const { apiType, apiBaseUrl } = resolveBillmanagerApi(accountRow, providerRow)
|
||||
const cred = String(accountRow.apiCredentials || '').trim()
|
||||
if (apiType !== 'billmanager' || !apiBaseUrl || !cred) return null
|
||||
return { ...accountRow, apiType: 'billmanager', apiBaseUrl }
|
||||
}
|
||||
Reference in New Issue
Block a user