diff --git a/src/db.js b/src/db.js index 7e2e3ba..cb6f134 100644 --- a/src/db.js +++ b/src/db.js @@ -1,5 +1,7 @@ import { getConfig } from './config.js' import fs from 'fs' +import readline from 'readline' +import path from 'path' import { createHash } from 'crypto' const DB = getConfig().DB @@ -14,6 +16,20 @@ function getVerse() { return Verse } +async function getPreview(number) { + const rl = readline.createInterface({ + input: fs.createReadStream(path.join(DB, 'verse', String(number), 'text')), + crlfDelay: Infinity + }) + const lines = [] + for await (const line of rl) { + lines.push(line) + if (lines.length >= 4) + break + } + return lines.join('\n') +} + function getPeopleCount() { return Object.keys(People).length } @@ -92,6 +108,7 @@ export default { getVerse, getPeopleCount, getVerseCount, + getPreview, peopleNumberByLogin, peopleByLogin, checkPassword, diff --git a/src/server.js b/src/server.js index 010ee1f..2c8e056 100644 --- a/src/server.js +++ b/src/server.js @@ -72,11 +72,32 @@ const server = createServer(async (req, res) => { body += chunk.toString() }) req.on('end', () => { + let index + let data body = querystring.parse(body) switch (tokens[1]) { - case 'verse': - let data = {} - let index = Number(tokens[2]) + case 'people': + index = Number(tokens[2]) + if (isNaN(index)) { + data = People + res.setHeader('Content-Type', 'application/json') + res.end(JSON.stringify(data)) + } + else { + if (People[index]) { + data = People[index] + res.setHeader('Content-Type', 'application/json') + res.end(JSON.stringify(data)) + } + else { + res.statusCode = 404 + res.sendText('Нет человека с таким индексом!') + } + } + break + case 'versepart': + data = {} + index = Number(tokens[2]) if (isNaN(index)) index = 0 if (index < 0) { @@ -107,6 +128,16 @@ const server = createServer(async (req, res) => { res.end(JSON.stringify(data)) } break + case 'pre': + index = tokens[2] + if (Verse[index]) { + db.getPreview(tokens[2]).then(text => sendText(text)) + } + else { + res.statusCode = 404 + sendText('Не найдено!') + } + break case 'checklogin': if (db.peopleByLogin(tokens[2])) sendText('Логин занят') diff --git a/www b/www index c6cbc86..b7d4091 160000 --- a/www +++ b/www @@ -1 +1 @@ -Subproject commit c6cbc86b8a361f59d5f06dc2eb6581c21da51d4f +Subproject commit b7d40913c60c43e216f8d1f65f7ba6b64e215324