From 4950331847987eaa03f8f3e1a6b037bfabc53804 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Wed, 4 May 2022 16:57:10 +0800 Subject: [PATCH] feat: add axiosRequestMake --- packages/nocodb-sdk/src/lib/Api.ts | 18 +++++++ .../nocodb/src/lib/noco/meta/api/utilApis.ts | 47 +++++++++++++++++++ scripts/sdk/swagger.json | 33 +++++++++++++ 3 files changed, 98 insertions(+) diff --git a/packages/nocodb-sdk/src/lib/Api.ts b/packages/nocodb-sdk/src/lib/Api.ts index ee6bb65487..4361875a00 100644 --- a/packages/nocodb-sdk/src/lib/Api.ts +++ b/packages/nocodb-sdk/src/lib/Api.ts @@ -3073,6 +3073,24 @@ export class Api< ...params, }), + /** + * @description Generic Axios Call + * + * @tags Utils + * @name AxiosRequestMake + * @request POST:/api/v1/db/meta/axiosRequestMake + * @response `200` `object` OK + */ + axiosRequestMake: (data: object, params: RequestParams = {}) => + this.request({ + path: `/api/v1/db/meta/axiosRequestMake`, + method: 'POST', + body: data, + type: ContentType.Json, + format: 'json', + ...params, + }), + /** * No description * diff --git a/packages/nocodb/src/lib/noco/meta/api/utilApis.ts b/packages/nocodb/src/lib/noco/meta/api/utilApis.ts index 123bc1a069..25073bbc54 100644 --- a/packages/nocodb/src/lib/noco/meta/api/utilApis.ts +++ b/packages/nocodb/src/lib/noco/meta/api/utilApis.ts @@ -60,6 +60,52 @@ export async function releaseVersion(_req: Request, res: Response) { res.json(result); } +export async function axiosRequestMake(req: Request, res: Response) { + const { apiMeta } = req.body; + if (apiMeta?.body) { + try { + apiMeta.body = JSON.parse(apiMeta.body); + } catch (e) { + console.log(e); + } + } + + if (apiMeta?.auth) { + try { + apiMeta.auth = JSON.parse(apiMeta.auth); + } catch (e) { + console.log(e); + } + } + + apiMeta.response = {}; + const _req = { + params: apiMeta.parameters + ? apiMeta.parameters.reduce((paramsObj, param) => { + if (param.name && param.enabled) { + paramsObj[param.name] = param.value; + } + return paramsObj; + }, {}) + : {}, + url: apiMeta.url, + method: apiMeta.method || 'GET', + data: apiMeta.body || {}, + headers: apiMeta.headers + ? apiMeta.headers.reduce((headersObj, header) => { + if (header.name && header.enabled) { + headersObj[header.name] = header.value; + } + return headersObj; + }, {}) + : {}, + responseType: apiMeta.responseType || 'json', + withCredentials: true + }; + const data = await require('axios')(_req); + return res.json(data?.data); +} + export default router => { router.post( '/api/v1/db/meta/connection/test', @@ -67,4 +113,5 @@ export default router => { ); router.get('/api/v1/db/meta/nocodb/info', catchError(appInfo)); router.get('/api/v1/db/meta/nocodb/version', catchError(releaseVersion)); + router.post('/api/v1/db/meta/axiosRequestMake', catchError(axiosRequestMake)); }; diff --git a/scripts/sdk/swagger.json b/scripts/sdk/swagger.json index 091505e9a9..7de94ebdd4 100644 --- a/scripts/sdk/swagger.json +++ b/scripts/sdk/swagger.json @@ -4800,6 +4800,39 @@ "description": "" } }, + "/api/v1/db/meta/axiosRequestMake": { + "parameters": [], + "post": { + "summary": "", + "operationId": "utils-axios-request-make", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {} + } + } + } + } + }, + "description": "Generic Axios Call", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "tags": [ + "Utils" + ] + } + }, "/api/v1/db/meta/nocodb/version": { "parameters": [], "get": {