aboutsummaryrefslogtreecommitdiff
path: root/modules/write.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-06-04 08:51:01 +0200
committerMinteck <contact@minteck.org>2022-06-04 08:51:01 +0200
commit383285ecd5292bf9a825e05904955b937de84cc9 (patch)
tree0a53b6f02c1604b078044567c03dc1b6c944c8c2 /modules/write.js
downloadequestriadb-383285ecd5292bf9a825e05904955b937de84cc9.tar.gz
equestriadb-383285ecd5292bf9a825e05904955b937de84cc9.tar.bz2
equestriadb-383285ecd5292bf9a825e05904955b937de84cc9.zip
Initial commit
Diffstat (limited to 'modules/write.js')
-rw-r--r--modules/write.js40
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