undedoloremque
Version:
Green Field JS SDK
59 lines (50 loc) • 1.57 kB
text/typescript
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;
};