mirror of
https://github.com/usebruno/bruno.git
synced 2026-07-07 14:08:38 +00:00
--------- Co-authored-by: Pooja Belaramani <pooja@usebruno.com> Co-authored-by: lohit jiddimani <lohitjiddimani@lohits-MacBook-Air.local> Co-authored-by: Anoop M D <anoop.md1421@gmail.com>
44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
import jsyaml from 'js-yaml';
|
|
import fileDialog from 'file-dialog';
|
|
import { BrunoError } from 'utils/common/error';
|
|
import { openApiToBruno } from '@usebruno/converters';
|
|
|
|
const readFile = (files) => {
|
|
return new Promise((resolve, reject) => {
|
|
const fileReader = new FileReader();
|
|
fileReader.onload = (e) => {
|
|
try {
|
|
// try to load JSON
|
|
const parsedData = JSON.parse(e.target.result);
|
|
resolve(parsedData);
|
|
} catch (jsonError) {
|
|
// not a valid JSOn, try yaml
|
|
try {
|
|
const parsedData = jsyaml.load(e.target.result);
|
|
resolve(parsedData);
|
|
} catch (yamlError) {
|
|
console.error('Error parsing the file :', jsonError, yamlError);
|
|
reject(new BrunoError('Import collection failed'));
|
|
}
|
|
}
|
|
};
|
|
fileReader.onerror = (err) => reject(err);
|
|
fileReader.readAsText(files[0]);
|
|
});
|
|
};
|
|
|
|
const importCollection = () => {
|
|
return new Promise((resolve, reject) => {
|
|
fileDialog({ accept: '.json, .yaml, .yml, application/json, application/yaml, application/x-yaml' })
|
|
.then(readFile)
|
|
.then((collection) => openApiToBruno(collection))
|
|
.then((collection) => resolve({ collection }))
|
|
.catch((err) => {
|
|
console.error(err);
|
|
reject(new BrunoError('Import collection failed: ' + err.message));
|
|
});
|
|
});
|
|
};
|
|
|
|
export default importCollection;
|