insomnia-importers
Version:
Various data importers for Insomnia
47 lines (37 loc) • 1.19 kB
text/typescript
import { Converter, ImportRequest } from '../entities';
import { Insomnia1Data } from './insomnia-1';
export const id = 'insomnia-2';
export const name = 'Insomnia v2';
export const description = 'Insomnia export format 2';
export interface Insomnia2Data extends Omit<Insomnia1Data, '__export_format'> {
__export_format: 2;
resources: ImportRequest[];
}
export const convert: Converter = rawData => {
let data: Insomnia2Data | null = null;
try {
data = JSON.parse(rawData) as Insomnia2Data;
} catch (error) {
return null;
}
if (data.__export_format !== 2) {
// Exit early if it's not the legacy format
return null;
}
// The only difference between 2 and 3 is the request body object
for (const resource of data.resources) {
if (resource._type !== 'request') {
continue;
}
// Convert old String request bodies to new (HAR) schema
const contentTypeHeader = resource.headers?.find(
({ name }) => name.toLowerCase() === 'content-type',
);
const mimeType = contentTypeHeader?.value.split(';')[0] ?? '';
resource.body = {
mimeType,
text: resource.body as string,
};
}
return data.resources;
};