@jingbof/rets-client
Version:
RETS (Real Estate Transaction Standards) Client in Typescript
29 lines (21 loc) • 850 B
text/typescript
import { MetadataParser } from '../stream'
import { IRetsMetadataOptions, IRetsRequestConfig, RetsFormat } from '../types'
import { executeCall } from '../utils'
// import { promises as fs } from 'fs'
export const getMetadataAction =
(actionConfig: IRetsRequestConfig) =>
async (userOptions: IRetsMetadataOptions): Promise<Array<any>> => {
const { type, id, format, classType } = {
...userOptions,
}
const data = {
Type: type,
ID: classType && id ? `${id}:${classType}` : id || '0',
Format: format || RetsFormat.Compact,
}
const { stream } = actionConfig ? await executeCall(actionConfig, data) : null
const metadataParser = new MetadataParser()
stream.pipe(metadataParser)
await new Promise((fulfill) => metadataParser.on('close', fulfill))
return metadataParser.data[type]
}