mira-app-core
Version:
Core library for Mira TypeScript project - provides base functionality without auto-execution
64 lines • 2.34 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MiraHttpServer = void 0;
const HttpRouter_1 = require("./HttpRouter");
const http_1 = __importDefault(require("http"));
const express_1 = __importDefault(require("express"));
const axios_1 = __importDefault(require("axios"));
class MiraHttpServer {
getRouter() { return this.httpRouter; }
constructor(port, backend) {
this.port = port;
this.backend = backend;
this.libraries = backend.libraries;
// 创建Express应用
this.app = (0, express_1.default)();
this.port = port;
this.httpRouter = new HttpRouter_1.HttpRouter(backend);
this.app.use(express_1.default.json());
// 允许所有CORS
this.app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
if (req.method === "OPTIONS") {
res.sendStatus(200);
}
else {
next();
}
});
this.server = http_1.default.createServer(this.app);
this.app.use('/api', this.httpRouter.getRouter());
// 启动HTTP服务器
this.server.listen(this.port, () => {
console.log(`HTTP server running on port ${this.port}`);
});
}
async request(options) {
try {
const response = await axios_1.default.request({
method: options.method,
url: options.url,
headers: options.headers,
data: options.data
});
return response.data;
}
catch (error) {
if (axios_1.default.isAxiosError(error)) {
throw new Error(`Request failed: ${error.message}`);
}
throw error;
}
}
async stop() {
this.server.close();
this.httpRouter.close();
}
}
exports.MiraHttpServer = MiraHttpServer;
//# sourceMappingURL=HttpServer.js.map