Timothy Jaeryang Baek 1 주 전
부모
커밋
d1a6c6b209
1개의 변경된 파일30개의 추가작업 그리고 19개의 파일을 삭제
  1. 30 19
      src/lib/apis/index.ts

+ 30 - 19
src/lib/apis/index.ts

@@ -337,14 +337,8 @@ export const getToolServerData = async (token: string, url: string) => {
 		throw error;
 	}
 
-	const data = {
-		openapi: res,
-		info: res.info,
-		specs: convertOpenApiToToolPayload(res)
-	};
-
-	console.log(data);
-	return data;
+	console.log(res);
+	return res;
 };
 
 export const getToolServersData = async (servers: object[]) => {
@@ -356,6 +350,7 @@ export const getToolServersData = async (servers: object[]) => {
 					let error = null;
 
 					let toolServerToken = null;
+
 					const auth_type = server?.auth_type ?? 'bearer';
 					if (auth_type === 'bearer') {
 						toolServerToken = server?.key;
@@ -365,18 +360,34 @@ export const getToolServersData = async (servers: object[]) => {
 						toolServerToken = localStorage.token;
 					}
 
-					const data = await getToolServerData(
-						toolServerToken,
-						(server?.path ?? '').includes('://')
-							? server?.path
-							: `${server?.url}${(server?.path ?? '').startsWith('/') ? '' : '/'}${server?.path}`
-					).catch((err) => {
-						error = err;
-						return null;
-					});
+					let res = null;
+					const specType = server?.spec_type ?? 'url';
+
+					if (specType === 'url') {
+						res = await getToolServerData(
+							toolServerToken,
+							(server?.path ?? '').includes('://')
+								? server?.path
+								: `${server?.url}${(server?.path ?? '').startsWith('/') ? '' : '/'}${server?.path}`
+						).catch((err) => {
+							error = err;
+							return null;
+						});
+					} else if ((specType === 'json' && server?.spec) ?? null) {
+						try {
+							res = JSON.parse(server?.spec);
+						} catch (e) {
+							error = 'Failed to parse JSON spec';
+						}
+					}
+
+					if (res) {
+						const { openapi, info, specs } = {
+							openapi: res,
+							info: res.info,
+							specs: convertOpenApiToToolPayload(res)
+						};
 
-					if (data) {
-						const { openapi, info, specs } = data;
 						return {
 							url: server?.url,
 							openapi: openapi,