UNPKG

openchain-sdk-yxl-ts

Version:

OpenChain SDK for browser

92 lines (76 loc) 2.04 kB
import errors from '../exception/index.js'; import CommonUtil from '../common/util.js'; class Asset extends CommonUtil { constructor(options = {}) { super(options); if (!(this instanceof Asset)) { return new Asset(options); } } async getInfo(args) { try { if (Array.isArray(args) || typeof args !== 'object' || args === null) { return this._responseError(errors.INVALID_ARGUMENTS); } const { address, code, issuer } = args; const schema = { address: { required: true, address: true, }, code: { required: true, string: true, }, issuer: { required: true, address: true, }, }; const validation = this._validate(args, schema); if (!validation.tag) { return this._responseError(errors[validation.msg]); } const data = await this._request('get', 'getAccountAssets', { address }); if (data.error_code === 0 && data.result?.length > 0) { const matchingAssets = data.result.filter(item => item.key.code === code && item.key.issuer === issuer ); return this._responseData({ assets: matchingAssets }); } return this._responseData({ assets: [] }); } catch (err) { console.error('Error in getInfo:', err); throw err; } } // 添加辅助方法用于验证资产参数 _validateAssetParams(params) { const schema = { code: { required: true, string: true }, issuer: { required: true, address: true } }; return this._validate(params, schema); } // 添加辅助方法用于格式化资产信息 _formatAssetInfo(assetData) { if (!assetData) return null; return { code: assetData.key?.code, issuer: assetData.key?.issuer, amount: assetData.amount, details: assetData.details || {} }; } } export default Asset;