43 lines
1.9 KiB
JavaScript
43 lines
1.9 KiB
JavaScript
import { readFileSync } from 'fs';
|
|
import { parseCurlCommand, extractJsonCandidates } from '../src/utils/parseCurl.ts';
|
|
import { buildCurlInterfaceFillPayload } from '../src/utils/curlToInterfaceFill.ts';
|
|
import {
|
|
pickBestJsonBodyText,
|
|
parseJsonTextToParameterFlatList,
|
|
defaultResolveParameterType,
|
|
} from '../src/utils/jsonParameterTree.ts';
|
|
import { ContentType } from '../src/constants/itfxEnums.ts';
|
|
|
|
const curl = readFileSync(new URL('./test-notify-biz.curl', import.meta.url), 'utf8');
|
|
const p = parseCurlCommand(curl);
|
|
console.log('method', p.method);
|
|
console.log('pathname', p.pathname);
|
|
console.log('bodyType', p.bodyType);
|
|
console.log('queryParams', p.queryParams);
|
|
console.log('formBody', p.formBodyParams);
|
|
const candidates = extractJsonCandidates(p);
|
|
console.log('candidates', candidates.length);
|
|
if (candidates[0]) {
|
|
const obj = JSON.parse(candidates[0]);
|
|
console.log('candidate keys', Object.keys(obj));
|
|
console.log('eventTime', obj.eventTime, 'ok', obj.eventTime?.includes('+0800'));
|
|
}
|
|
const best = pickBestJsonBodyText(candidates, [], { resolveParameterType: defaultResolveParameterType });
|
|
if (best) {
|
|
const flat = parseJsonTextToParameterFlatList(best, { resolveParameterType: defaultResolveParameterType });
|
|
console.log('flat nodes', flat.length, 'names', flat.map((n) => n.name));
|
|
}
|
|
const payload = buildCurlInterfaceFillPayload(curl);
|
|
console.log('contentType', payload.contentType, 'expected Form', ContentType.FormUrlEncoded);
|
|
console.log('query', payload.queryParams.map((x) => `${x.name}=${x.value}`));
|
|
console.log('bodyForm', payload.bodyFormParams.map((x) => `${x.name}=${x.value}`));
|
|
console.assert(
|
|
payload.queryParams.some((x) => x.name === 'notifyBizEventDTO' && x.value === '$FromMappingBody'),
|
|
'notifyBizEventDTO should stay in Query',
|
|
);
|
|
console.assert(
|
|
!payload.bodyFormParams.some((x) => x.name === 'notifyBizEventDTO'),
|
|
'notifyBizEventDTO should NOT be in Body form',
|
|
);
|
|
console.log('jsonBodies', payload.jsonBodies.length);
|