From a0fad0767ef6f39baefae263e474a03b302590ae Mon Sep 17 00:00:00 2001 From: 14Kay <619113277@qq.com> Date: Fri, 11 Oct 2024 22:00:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E4=BA=86openApi?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/modules/openApi/index.ts | 107 ++++++++---------------------- 1 file changed, 26 insertions(+), 81 deletions(-) diff --git a/src/main/modules/openApi/index.ts b/src/main/modules/openApi/index.ts index 484231af..44d86b7c 100644 --- a/src/main/modules/openApi/index.ts +++ b/src/main/modules/openApi/index.ts @@ -1,4 +1,4 @@ -import http from 'node:http' +import http, { type ServerResponse} from 'node:http' import querystring from 'node:querystring' import type { Socket } from 'node:net' import { getAddress } from '@common/utils/nodejs' @@ -71,113 +71,58 @@ const handleStartServer = async(port: number, ip: string) => new Promise(( const browserWindow = BrowserWindow.getFocusedWindow() as BrowserWindow; httpServer = http.createServer((req, res): void => { const [endUrl, query] = `/${req.url?.split('/').at(-1) ?? ''}`.split('?') - let code - let msg + const setResponse = (res: ServerResponse, code: number, contentType: string, msg: string | object) => { + res.setHeader('Content-Type', contentType || 'text/plain; charset=utf-8') + res.setHeader('Access-Control-Allow-Origin', '*') + res.statusCode = code || 200 + if (typeof msg === 'object') { + res.end(JSON.stringify(msg)); + } else { + res.end(msg); + } + } switch (endUrl) { case '/status': handleSendStatus(res, query) return - // case '/test': - // code = 200 - // res.setHeader('Content-Type', 'text/html; charset=utf-8') - // msg = ` - // - // - // - // - // - // Nodejs Server-Sent Events - // - // - //

Hello SSE!

- //

List of Server-sent events

- // - - // - // - // ` - // break case '/play': - code = 200 - res.setHeader('Content-Type', 'text/plain; charset=utf-8') - res.setHeader('Access-Control-Allow-Origin', '*') - msg = 'OK' mainSend(browserWindow, PLAYER_EVENT_NAME.player_play) + setResponse(res, 200, 'text/plain; charset=utf-8', 'OK') break case '/pause': - code = 200 - res.setHeader('Content-Type', 'text/plain; charset=utf-8') - res.setHeader('Access-Control-Allow-Origin', '*') - msg = 'OK' mainSend(browserWindow, PLAYER_EVENT_NAME.player_pause) - break - - case '/prev': - code = 200 - res.setHeader('Content-Type', 'text/plain; charset=utf-8') - res.setHeader('Access-Control-Allow-Origin', '*') - msg = 'OK' - mainSend(browserWindow, PLAYER_EVENT_NAME.invoke_play_prev) + setResponse(res, 200, 'text/plain; charset=utf-8', 'OK') break - case '/next': - code = 200 - res.setHeader('Content-Type', 'text/plain; charset=utf-8') - res.setHeader('Access-Control-Allow-Origin', '*') - msg = 'OK' + case '/play-prev': + mainSend(browserWindow, PLAYER_EVENT_NAME.invoke_play_prev) + setResponse(res, 200, 'text/plain; charset=utf-8', 'OK') + break + + case '/play-next': mainSend(browserWindow, PLAYER_EVENT_NAME.invoke_play_next) + setResponse(res, 200, 'text/plain; charset=utf-8', 'OK') break case '/lyric': - code = 200 - res.setHeader('Content-Type', 'text/plain; charset=utf-8') - res.setHeader('Access-Control-Allow-Origin', '*') - msg = global.lx.player_status.lyric + setResponse(res, 200, 'text/plain; charset=utf-8', global.lx.player_status.lyric) break - + case '/subscribe-player-status': try { handleSubscribePlayerStatus(req, res, query) - return } catch (err) { - console.log(err) - code = 500 - msg = 'Error' + console.error(err) + setResponse(res, 500, 'text/plain; charset=utf-8', 'Error') } break + default: - code = 401 - msg = 'Forbidden' + setResponse(res, 401, 'text/plain; charset=utf-8', 'Forbidden') break } - if (!code) return - res.writeHead(code) - res.end(msg) }) httpServer.on('error', error => { console.log(error)