diff options
author | Minteck <contact@minteck.org> | 2022-06-04 08:51:01 +0200 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2022-06-04 08:51:01 +0200 |
commit | 383285ecd5292bf9a825e05904955b937de84cc9 (patch) | |
tree | 0a53b6f02c1604b078044567c03dc1b6c944c8c2 /modules/write.js | |
download | equestriadb-383285ecd5292bf9a825e05904955b937de84cc9.tar.gz equestriadb-383285ecd5292bf9a825e05904955b937de84cc9.tar.bz2 equestriadb-383285ecd5292bf9a825e05904955b937de84cc9.zip |
Initial commit
Diffstat (limited to 'modules/write.js')
-rw-r--r-- | modules/write.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/modules/write.js b/modules/write.js new file mode 100644 index 0000000..d733360 --- /dev/null +++ b/modules/write.js @@ -0,0 +1,40 @@ +const body = require("body/json"); +const crypto = require('crypto'); +const fs = require('fs'); + +module.exports = (req, res, entry, dbid) => { + res.writeHead(200, {'Content-Type':'application/json'}); + body(req, res, variables.bodyOptions, (err, body) => { + try { + if (err) throw err; + console.log(body); + if (typeof body.path === "string" && typeof body.data === "string") { + node = crypto.createHash('md5').update(body.path).digest('hex'); + file = "/data/" + dbid + "/" + node.substring(0, 2) + "/" + node; + + fs.writeFileSync(__dirname + "/../" + file, Buffer.from(body.data).toString("base64")); + heads[entry][body.path] = file; + fs.writeFileSync(__dirname + "/../data/" + dbid + "/HEAD", Buffer.from(JSON.stringify(heads[entry])).toString("hex")); + + res.write(JSON.stringify({ + "_internal": { + "database": entry, + "node": node, + "path": file + }, + "error": 200 + })); + res.end(); + } else { + res.writeHead(400, {'Content-Type':'application/json'}); + res.write("{\"error\":400}"); + res.end(); + } + } catch (e) { + console.error(e); + res.writeHead(502, {'Content-Type':'application/json'}); + res.write("{\"error\":502}"); + res.end(); + } + }) +}
\ No newline at end of file |