@apistudio/apim-cli
Version:
CLI for API Management Products
102 lines (92 loc) • 2.63 kB
text/typescript
/**
* 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;
};