Browse Source

add a preview endpoint

dev_h
Ophir LOJKINE 7 years ago
parent
commit
e2dea2fae3
2 changed files with 33 additions and 10 deletions
  1. 20
    9
      server/createSVG.js
  2. 13
    1
      server/server.js

+ 20
- 9
server/createSVG.js View File

@@ -1,8 +1,6 @@
1 1
 var fs = require("fs"),
2 2
 	path = require("path");
3 3
 
4
-var HISTORY_FILE = process.argv[2] || path.join(__dirname, "../server-data/history.txt");
5
-
6 4
 function htmlspecialchars (str) {
7 5
 	//Hum, hum... Could do better
8 6
 	if (typeof str !== "string") return "";
@@ -70,14 +68,27 @@ function toSVG(obj) {
70 68
 				']]></style></defs>' +
71 69
 				elements +
72 70
 				'</svg>';
73
-	console.log(svg);
74 71
 	return svg;
75 72
 }
76 73
 
77
-fs.readFile(HISTORY_FILE, function (err, data) {
78
-	if (err) throw err;
74
+function renderBoard(file, callback) {
79 75
 	var t=Date.now();
80
-	var board = JSON.parse(data);
81
-	console.error("JSON parsed in "+(Date.now()-t)+"ms.");
82
-	toSVG(board);
83
-});
76
+	fs.readFile(file, function (err, data) {
77
+		if (err) return callback(err);
78
+		var board = JSON.parse(data);
79
+		console.warn("JSON parsed in "+(Date.now()-t)+"ms.");
80
+		var svg = toSVG(board);
81
+		console.warn("Board rendered in "+(Date.now()-t)+"ms.");
82
+		callback(null, svg);
83
+	});
84
+}
85
+
86
+if (require.main === module) {
87
+	var HISTORY_FILE = process.argv[2] || path.join(__dirname, "../server-data/board-anonymous.json");
88
+
89
+	renderBoard(HISTORY_FILE, function(err, rendered) {
90
+		console.log(rendered);
91
+	});
92
+} else {
93
+	module.exports = { 'renderBoard': renderBoard };
94
+}

+ 13
- 1
server/server.js View File

@@ -2,7 +2,8 @@ var app = require('http').createServer(handler)
2 2
   , sockets = require('./sockets.js')
3 3
   , fs = require('fs')
4 4
   , path = require('path')
5
-  , nodestatic = require("node-static");
5
+  , nodestatic = require("node-static")
6
+  , createSVG = require("./createSVG.js");
6 7
 
7 8
 
8 9
 var io = sockets.start(app);
@@ -73,6 +74,17 @@ function handler (request, response) {
73 74
 			response.statusCode = 404;
74 75
 			response.end("ERROR: Unable to serve history file\n");
75 76
 		});
77
+	} else if (parts[0] === "preview") {
78
+		var boardName = encodeURIComponent(parts[1]),
79
+			history_file = path.join(__dirname, "..", "server-data", "board-" + boardName + ".json");
80
+		createSVG.renderBoard(history_file, function(err, svg) {
81
+			if (err) {
82
+				response.writeHead(404, {'Content-Type': 'application/json'});
83
+				response.end(JSON.stringify(err));
84
+			}
85
+			response.writeHead(200, {"Content-Type": "image/svg+xml"});
86
+			response.end(svg);
87
+		});
76 88
 	} else {
77 89
 		fileserver.serve(request, response, function (err, res){
78 90
 			if (err) serveError(request, response, err);

Loading…
Cancel
Save