From 7726b46be212c4b3e5c88e9b28f174c9ec711fb7 Mon Sep 17 00:00:00 2001 From: benweet Date: Wed, 20 Aug 2014 00:19:21 +0100 Subject: [PATCH] Integrated stackedit-download-proxy service --- app/download.js | 20 ++++ app/index.js | 5 +- public/res/providers/downloadProvider.js | 121 ++++++++++++----------- 3 files changed, 85 insertions(+), 61 deletions(-) create mode 100644 app/download.js diff --git a/app/download.js b/app/download.js new file mode 100644 index 00000000..61fdef94 --- /dev/null +++ b/app/download.js @@ -0,0 +1,20 @@ +var request = require('request'); + +exports.importPublic = function(req, res) { + var url = req.param('url'); + if(!url) { + res.send(400, 'No URL parameter'); + } + else if(url.indexOf("http://") === 0 || url.indexOf("https://") === 0) { + var stream = request.get(url); + stream.on('error', function(err) { + res.send(400, err); + }); + stream.on('response', function() { + stream.pipe(res); + }); + } + else { + res.send(400, 'Unknown protocol'); + } +}; \ No newline at end of file diff --git a/app/index.js b/app/index.js index 285aaa33..145dd827 100644 --- a/app/index.js +++ b/app/index.js @@ -25,7 +25,10 @@ app.get('/viewer', function (req, res) { res.render('viewer.html'); }); -app.post('/pdf', require('./pdf')); +app.post('/pdfExport', require('./pdf').export); +app.post('/sshPublish', require('./ssh').publish); +app.post('/picasaImportImg', require('./picasa').importImg); +app.get('/downloadImport', require('./download').importPublic); // Error 404 app.use(function(req, res, next) { diff --git a/public/res/providers/downloadProvider.js b/public/res/providers/downloadProvider.js index 8d2de891..181f8725 100644 --- a/public/res/providers/downloadProvider.js +++ b/public/res/providers/downloadProvider.js @@ -1,67 +1,68 @@ define([ - "jquery", - "constants", - "eventMgr", - "utils", - "fileMgr", - "classes/Provider", - "classes/AsyncTask" + "jquery", + "constants", + "eventMgr", + "utils", + "fileMgr", + "classes/Provider", + "classes/AsyncTask" ], function($, constants, eventMgr, utils, fileMgr, Provider, AsyncTask) { - var downloadProvider = new Provider("download"); - downloadProvider.sharingAttributes = [ - "url" - ]; + var downloadProvider = new Provider("download"); + downloadProvider.sharingAttributes = [ + "url" + ]; - downloadProvider.importPublic = function(importParameters, callback) { - var title; - var content; - var task = new AsyncTask(true); - task.onRun(function() { - var url = importParameters.url; - var slashUrl = url.lastIndexOf("/"); - if(slashUrl === -1) { - task.error(new Error("Invalid URL parameter.")); - return; - } - title = url.substring(slashUrl + 1); - $.ajax({ - url: constants.DOWNLOAD_PROXY_URL + "download?url=" + url, - type: "GET", - dataType: "text", - timeout: constants.AJAX_TIMEOUT - }).done(function(result) { - content = result; - task.chain(); - }).fail(function() { - task.error(new Error("Unable to access URL " + url)); - }); - }); - task.onSuccess(function() { - callback(undefined, title, content); - }); - task.onError(function(error) { - callback(error); - }); - task.enqueue(); - }; + downloadProvider.importPublic = function(importParameters, callback) { + var title; + var content; + var task = new AsyncTask(true); + task.onRun(function() { + var url = importParameters.url; + var slashUrl = url.lastIndexOf("/"); + if(slashUrl === -1) { + task.error(new Error("Invalid URL parameter.")); + return; + } + title = url.substring(slashUrl + 1); + $.ajax({ + url: constants.DOWNLOAD_IMPORT_URL + '?' + $.param({ + url: url + }), + dataType: 'text', + timeout: constants.AJAX_TIMEOUT + }).done(function(result) { + content = result; + task.chain(); + }).fail(function() { + task.error(new Error("Unable to access URL " + url)); + }); + }); + task.onSuccess(function() { + callback(undefined, title, content); + }); + task.onError(function(error) { + callback(error); + }); + task.enqueue(); + }; - eventMgr.addListener("onReady", function() { - $('.action-import-url').click(function(e) { - var url = utils.getInputTextValue('#input-import-url', e); - if(url) { - downloadProvider.importPublic({ - url: url - }, function(error, title, content) { - if(error) { - return; - } - var fileDesc = fileMgr.createFile(title, content); - fileMgr.selectFile(fileDesc); - }); - } - }); - }); + eventMgr.addListener("onReady", function() { + $('.action-import-url').click(function(e) { + var url = utils.getInputTextValue('#input-import-url', e); + if(url) { + downloadProvider.importPublic({ + url: url + }, function(error, title, content) { + if(error) { + return; + } + var fileDesc = fileMgr.createFile(title, content); + fileMgr.selectFile(fileDesc); + }); + } + }); + }); - return downloadProvider; + return downloadProvider; }); \ No newline at end of file