import AuthRequestProxy = require("../../portalAuthorization/AuthRequestProxy"); import { IAuthProvider } from "../../typings/IAuthProvider"; import { IClusterClientProvider } from "../../typings/IClusterClientProvider"; import { IClusterClientResponse } from "../../typings/IClusterClient"; import { SearchResponse } from "./SearchResponse"; import { ErrorResponse, CreateUpdateAccountRequisites, CreateUpdateAccountResponse, GetAccountResponse } from "./Requisites"; import topologyConstants from '../../topologyConstants'; export interface BillingAccountsDeps { authProvider: IAuthProvider; clusterClientProvider: IClusterClientProvider; } export class BillingAccounts { private _http: AuthRequestProxy; constructor({ clusterClientProvider, authProvider }: BillingAccountsDeps) { const clusterClient = clusterClientProvider.createClusterClient( topologyConstants.billingAccounts ); this._http = new AuthRequestProxy({ clusterClient, authProvider }); } /** * Поиск аккаунтов * @param {Object.} fields - поля и значения * @param {number} page * @param {number} size * @param {number} filter * @returns {Promise} */ search({ page, size, filter }: { page?: number; size?: number; filter: string; }) { return this._http.send({ url: "/accounts/v2/search", method: "GET", params: { page, size, filter } }); } /** * Создание/обновление акаунта * @param {string} accountId * @param {CreateUpdateAccountRequisites} requisites * @param {Object} params * @returns {Promise} */ createUpdateAccount(accountId: string, requisites: CreateUpdateAccountRequisites, params?: { skipValidation: boolean }) { return this._http.send({ url: `/accounts/v2/${accountId}`, method: "POST", data: requisites, params, }); } /** * Получение акаунта * @param {string} accountId * @returns {Promise} */ getAccount(accountId: string) { return this._http.send({ url: `/accounts/v2/${accountId}`, method: "GET" }); } }