[guadec-web-regcfp/develop] Use inkscape and temp files



commit b3fe0229ce7aac26ab407b7d25f78b9c69b8c017
Author: Patrick Uiterwijk <puiterwijk redhat com>
Date:   Fri Aug 7 01:46:02 2015 +0200

    Use inkscape and temp files

 package.json   |    3 ++-
 routes/desk.js |   45 ++++++++++++++++++++++-----------------------
 2 files changed, 24 insertions(+), 24 deletions(-)
---
diff --git a/package.json b/package.json
index 849bc49..e8ba2d2 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,7 @@
     "browserid-local-verify": "*",
     "browserid-verify": "*",
     "paypal-rest-sdk": "*",
-    "librsvg": "*"
+    "librsvg": "*",
+    "mktemp": "*"
   }
 }
diff --git a/routes/desk.js b/routes/desk.js
index 2e00c85..da20821 100644
--- a/routes/desk.js
+++ b/routes/desk.js
@@ -17,6 +17,8 @@ paypal.configure(config['paypal']);
 var spawn = require('child_process').spawn;
 var exec = require('child_process').exec;
 var stream = require('stream');
+var mktemp = require('mktemp');
+var fs = require('fs');
 
 
 router.all('/', utils.require_user);
@@ -130,35 +132,32 @@ router.get('/badge', function(req, res, next) {
             if(!!err) {
               res.status(500).send('Error generating badge: ' + err);
             } else {
-              var child = spawn('cairosvg', ['-']);
-              /*var child = exec('cat | inkscape -f /dev/stdin -A /dev/stdout -z | cat', function(err, 
stdout, stderr) {
-              //var child = exec('cat', function(err, stdout, stderr) {
+              mktemp.createFile('_temp_XXXXX.svg', function(err, path) {
+                console.log('Temporary filename: ' + path);
                 if(!!err) {
-                  res.status(500).send('Error generating pdf: ' + err);
+                  res.status(500).send('Unable to generate file: ' + err);
                 } else {
-                  console.log('OUTPUT error: ' + stderr);
-                  res.status(200).set('Content-Type', 'application/pdf').send(stdout);
-                  //res.status(200).set('Content-Type', 'image/svg+xml').send(stdout);
-                }
-              });*/
-              
-              child.stdout.on('data', function(chunk) {
-                res.write(chunk);
-              });
+                  fs.writeFile(path, html, function(err) {
+                    if(!!err) {
+                      res.status(500).send('Unable to write temp file: ' + err);
+                    } else {
+                      var child = exec('inkscape -f ' + path + ' -A ' + path + '.pdf -z', function(err, 
stdout, stderr) {
+                        if(!!err) {
+                          res.status(500).send('Error generating pdf: ' + err);
+                        } else {
+                          console.log('OUTPUT error: ' + stderr);
+                          var filestream = fs.createReadStream(path + '.pdf');
+                          filestream.pipe(res);
+                        }
+                      });
+                    }
+                  });
 
-              child.stdout.on('finish', function() {
-                res.send();
+                }
               });
-              
-              var inp_str = stream.Readable();
-              inp_str._read = function noop() {};
-              inp_str.push(html);
-              inp_str.push(null);
-              inp_str.pipe(child.stdin);
             }
-          });
-
           //res.status(200).set('Content-Type', 'image/svg+xml').render('desk/badge_svg', { rega: rega, 
regb: regb, layout: false });
+          });
         });
     });
 });


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]