UNPKG

@apistudio/apim-cli

Version:

CLI for API Management Products

102 lines (92 loc) 2.63 kB
/** * Copyright Super iPaaS Integration LLC, an IBM Company 2024 */ import { BaseAsset } from '@apic/studio-client-model'; import { AppConstants } from '../constants/app.constants.js'; import TypeNotFoundException from '../exeptions/type-not-found-exception.js'; import { getBaseAsset, isBaseAsset } from './asset.helper.js'; import { isJSON, parseJSON } from './json.helper.js'; import { isOpenAPI } from './open-api.helper.js'; import { isSwagger } from './swagger-api.helper.js'; import { isYAML, loadYaml } from './yaml.helper.js'; import * as yaml from 'js-yaml'; export function getDocumentBasedOnLanguage(fileContent: string, language: string) { try { if ((language === 'yaml') || (language === 'yml')) { return loadYaml(fileContent); } else if (language === 'json') { return parseJSON(fileContent); } else { return undefined; } } catch (error) { console.error(error); } return undefined; } export function getType(data: object | string, language: string) { let type = undefined; if (isOpenAPI(data as string, language) || isSwagger(data as string, language)) { type = 'rest'; } else if (isBaseAsset(data as string, language)) { type = 'asset'; } else { return new TypeNotFoundException(AppConstants.TYPE_NOT_FOUND_EXCEPTION, 404); } return type; } export function getBaseKind(data: object | string, language: string) { if (isOpenAPI(data as string, language)) { return 'openapi'; } else if (isSwagger(data as string, language)) { return 'swagger'; } else if (isBaseAsset(data as string, language)) { return getBaseAsset(data as string, language); } else { return ''; } } export function getLanguage(data: object | string) { let language = ''; if (isJSON(data)) { language = 'json'; } else if (isYAML(data)) { language = 'yaml'; } return language; } export function getContentType(language: string) { let contentType = ''; if ((language === 'yaml') || (language === 'yml')) { contentType = AppConstants.APPLICATION_YAML_REQ_TYPE; } else if (language === 'json') { contentType = AppConstants.APPLICATION_JSON_REQ_TYPE; } return contentType; } export function isInvalidFile(text: string, fileExt: string) { if (fileExt === 'yaml' || fileExt === 'yml') { try { if (text.trim().startsWith('{') || text.trim().startsWith('[')) { return true; } if (text.trim() !== '') { yaml.loadAll(text); } return false; } catch (error) { return true } } if (fileExt === 'json') { try { if (text.trim() !== '') { JSON.parse(text) as BaseAsset; } return false; } catch (error) { return true; } } return true; };