mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-23 08:58:26 +00:00
Conditionally parse and decode api response (#12151)
This commit is contained in:
parent
0fa90ee875
commit
72b51f6165
1 changed files with 18 additions and 5 deletions
|
|
@ -61,11 +61,24 @@ export class DataSourcesService implements IDataSourcesService {
|
|||
environmentId: selectedEnvironmentId,
|
||||
});
|
||||
for (const dataSource of dataSources) {
|
||||
if (dataSource.pluginId) {
|
||||
dataSource.plugin.iconFile.data = dataSource.plugin.iconFile.data.toString('utf8');
|
||||
dataSource.plugin.manifestFile.data = JSON.parse(decode(dataSource.plugin.manifestFile.data.toString('utf8')));
|
||||
dataSource.plugin.operationsFile.data = JSON.parse(
|
||||
decode(dataSource.plugin.operationsFile.data.toString('utf8'))
|
||||
const parseIfNeeded = (data: any) => {
|
||||
if (typeof data === 'object' && data !== null) return data;
|
||||
if (Buffer.isBuffer(data) || typeof data === 'string') {
|
||||
return JSON.parse(decode(data.toString('utf8')));
|
||||
}
|
||||
return data;
|
||||
};
|
||||
try {
|
||||
if (dataSource.pluginId) {
|
||||
if (Buffer.isBuffer(dataSource.plugin.iconFile.data)) {
|
||||
dataSource.plugin.iconFile.data = dataSource.plugin.iconFile.data.toString('utf8');
|
||||
}
|
||||
dataSource.plugin.manifestFile.data = parseIfNeeded(dataSource.plugin.manifestFile.data);
|
||||
dataSource.plugin.operationsFile.data = parseIfNeeded(dataSource.plugin.operationsFile.data);
|
||||
}
|
||||
} catch (error) {
|
||||
throw new BadRequestException(
|
||||
`Error parsing plugin data for dataSourceId: ${dataSource.id}. Details: ${error.message}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue