/* eslint-disable @typescript-eslint/no-explicit-any */ /** @module operations */ import { ConfigParams, Context, Descriptor, IReferences, } from "pip-services4-components-node"; import { RestOperations } from "pip-services4-http-node"; import { IPaymentsClientV1, PaymentSystemAccountV1, } from "bm-vslice-ecommerce-layered-client-payments-pipservices-node"; import { CredentialParams, CredentialResolver, } from "pip-services4-config-node"; import { IdGenerator } from "pip-services4-data-node"; export class PaymentsOperationsV1 extends RestOperations { private _paymentsClient: IPaymentsClientV1; private _credentialsResolver: CredentialResolver = new CredentialResolver(); private _credentials: CredentialParams; private _paymentSystem: string; private _traceId = "payments-operations"; public constructor() { super(); this._dependencyResolver.put( "payments", new Descriptor("service-payments", "client", "*", "*", "1.0") ); } public configure(config: ConfigParams): void { super.configure(config); this._credentialsResolver.configure(config); this._paymentSystem = config.getAsStringWithDefault( "payment_system", this._paymentSystem ); } public setReferences(references: IReferences): void { super.setReferences(references); this._paymentsClient = this._dependencyResolver.getOneRequired("payments"); } public async getPaymentMethods(req: any, res: any): Promise { const customer_id = req.route.params.customer_id; this._credentials = await this._credentialsResolver.lookup(null); const _paymentSystemAccount = new PaymentSystemAccountV1(); _paymentSystemAccount.access_key = this._credentials.getAccessKey(); try { const page = await this._paymentsClient.getPaymentMethods( Context.fromTraceId(this._traceId + IdGenerator.nextShort()), this._paymentSystem, _paymentSystemAccount, customer_id ); this.sendResult(req, res, page); } catch (err) { this.sendError(req, res, err); } } }