import { convertStrToBool, formatBucketInfo } from '@/types/sp/Common'; import { ListBucketsByPaymentAccountRequest, ListBucketsByPaymentAccountResponse, } from '@/types/sp/ListBucketsByPaymentAccount'; import { XMLParser } from 'fast-xml-parser'; import { getSortQueryParams } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_payment_account_streams export const getListBucketByPaymentMetaInfo = ( endpoint: string, params: ListBucketsByPaymentAccountRequest, ) => { const path = '/'; const queryMap = { 'payment-buckets': 'null', 'payment-account': params.paymentAccount, }; let url = new URL(path, endpoint); url = getSortQueryParams(url, queryMap); return { url: url.href, }; }; export const parseListBucketByPaymentResponse = (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, }); const res = xmlParser.parse(data) as ListBucketsByPaymentAccountResponse; let Buckets = res.GfSpListPaymentAccountStreamsResponse.Buckets || []; if (Buckets) { if (!Array.isArray(Buckets)) { Buckets = [Buckets]; } Buckets = Buckets.map((item) => { return { ...item, BucketInfo: formatBucketInfo(item.BucketInfo), // @ts-ignore Removed: convertStrToBool(item.Removed), DeleteAt: Number(item.DeleteAt), UpdateAt: Number(item.UpdateAt), UpdateTime: Number(item.UpdateTime), }; }); } res.GfSpListPaymentAccountStreamsResponse = { Buckets, }; return res; };