From 77c605bda2633853bea031a45a6364b0a7614c41 Mon Sep 17 00:00:00 2001 From: bingshuo <565183519@qq.com> Date: Sun, 31 May 2026 13:39:15 +0800 Subject: [PATCH] =?UTF-8?q?D118=20step-6=20=C2=B7=20=E5=85=89=E6=B9=96?= =?UTF-8?q?=E5=8E=9F=E7=94=9F=E6=95=B0=E6=8D=AE=E5=BA=93=20=C2=B7=20HTTP?= =?UTF-8?q?=20API=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- native-repo/modules/step-6-hldp-server.js | 77 +++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 native-repo/modules/step-6-hldp-server.js diff --git a/native-repo/modules/step-6-hldp-server.js b/native-repo/modules/step-6-hldp-server.js new file mode 100644 index 0000000..cea9542 --- /dev/null +++ b/native-repo/modules/step-6-hldp-server.js @@ -0,0 +1,77 @@ +/** + * HLDP-ZY://native-repo/module/step-6 + * 光湖原生数据库 · 第6步 · HTTP API 服务 + * + * @chain: D118 · 2026-05-31 + * @module: hldp-server + * @step: 第6步 / 共8步 + * @deploy: BS-SG-002 · 端口 3912 + * + * 三个端点: + * POST /hldp/write — { path, content, intent, epoch } + * POST /hldp/read — { path } + * POST /hldp/search — { query } + * + * 铸渊通过 gatekeeper → localhost:3912 调用 + * 不需要单独的 Token —— 在 gatekeeper 层鉴权 + */ + +const http = require('http'); +const { hldpWrite } = require('./step-3-hldp-write'); +const { hldpRead, hldpTree, buildIndex } = require('./step-4-hldp-read-tree'); +const { hldpSearch } = require('./step-5-hldp-search'); + +const PORT = parseInt(process.env.HLDP_PORT || '3912'); +const HOST = process.env.HLDP_HOST || '127.0.0.1'; + +const server = http.createServer(async (req, res) => { + res.setHeader('Content-Type', 'application/json'); + res.setHeader('X-HLDP-Version', '3.0'); + res.setHeader('X-Guardian', 'ICE-GL-ZY001'); + + if (req.method !== 'POST') { + res.writeHead(405); + return res.end(JSON.stringify({ error: 'POST only' })); + } + + let body = ''; + req.on('data', c => body += c); + req.on('end', async () => { + try { + const input = JSON.parse(body); + let result; + + if (req.url === '/hldp/write') { + result = await hldpWrite({ + filePath: input.path, + content: input.content, + intent: input.intent, + epoch: input.epoch + }); + } else if (req.url === '/hldp/read') { + result = await hldpRead(input.path); + } else if (req.url === '/hldp/tree') { + result = await hldpTree(input.path || ''); + } else if (req.url === '/hldp/search') { + result = hldpSearch(input.query); + } else if (req.url === '/hldp/index') { + result = await buildIndex(); + } else if (req.url === '/hldp/health') { + result = { ok: true, service: 'guanghu-native-repo', version: '0.1.0', uptime: process.uptime() }; + } else { + res.writeHead(404); + return res.end(JSON.stringify({ error: 'unknown endpoint' })); + } + + res.writeHead(200); + res.end(JSON.stringify(result)); + } catch (e) { + res.writeHead(500); + res.end(JSON.stringify({ ok: false, error: e.message })); + } + }); +}); + +server.listen(PORT, HOST, () => { + console.log('HLDP-NATIVE-REPO: ready on ' + HOST + ':' + PORT); +});