From d1a6c6b20901047c15c112445e406532170e0a2e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 26 Sep 2025 22:09:27 -0500 Subject: [PATCH] refac --- src/lib/apis/index.ts | 49 ++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/src/lib/apis/index.ts b/src/lib/apis/index.ts index 937e7cec81..43a5936a23 100644 --- a/src/lib/apis/index.ts +++ b/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,