// ROUTES FOR OUR API // ============================================================================= var express = require('express'); var router = express.Router(); // get an instance of the express Router const querystring = require('querystring'); var mysql = require('./mysql'); const _mysqlLabor = ["172.16.12.5", "cuhkjc_query"]; //edu數據庫信息 //統壹處理區域 router.use(async function (req, res, next) { await asynnext(req, res, next); //// make sure we go to the next routes and don't stop here //res.end(""); }); /** * @des 參數解釋同上 */ function asynnext(req, res, next) { //異步處理 return new Promise(async (resolve, reject) => { next(); //resolve(true); }); } //指定用户访问 CocoBlockly 的行为 router.route('/history').post((req, res, next) => { var _str = postmysql(req, res, "blockly_history"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_history_get") res.end(_str); }); //指定用户在 CocoBlockly 停留的总时间(离开的时候请求) router.route('/duration').post((req, res, next) => { var _str = postmysql(req, res, "blockly_duration"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_duration_get") res.end(_str); }); //指定用户打开实验室的行为 router.route('/labs').post((req, res, next) => { var _str = postmysql(req, res, "blockly_labs"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_labs_get") res.end(_str); }); //指定用户打开某个样例的行为 router.route('/examples').post((req, res, next) => { var _str = postmysql(req, res, "blockly_examples"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_examples_get") res.end(_str); }); //指定用户切换上传模式的行为 router.route('/mode_switch').post((req, res, next) => { var _str = postmysql(req, res, "blockly_mode_switch"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_mode_switch_get") res.end(_str); }); //指定用户点击串口监视窗按钮的行为 router.route('/serial_monitor').post((req, res, next) => { var _str = postmysql(req, res, "blockly_serial_monitor"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_serial_monitor_get") res.end(_str); }); //指定用户点击复制源代码的行为 router.route('/copy').post((req, res, next) => { var _str = postmysql(req, res, "blockly_copy"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_copy_get") res.end(_str); }); //指定用户点击运行的行为 router.route('/upload_area/run').post((req, res, next) => { var _str = postmysql(req, res, "blockly_upload_area_run"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_upload_area_run_get") res.end(_str); }); //指定用户点击上传的行为 router.route('/upload_area/upload').post((req, res, next) => { var _str = postmysql(req, res, "blockly_upload_area_upload"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_upload_area_upload_get") res.end(_str); }); //指定用户在 Blockly 中弹出错误信息的行为(并报错错误信息) router.route('/upload_area/errormsg').post((req, res, next) => { var _str = postmysql(req, res, "blockly_upload_area_errormsg"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_upload_area_errormsg_get") res.end(_str); }); //指定用户将积木拖入编程区域的行为 router.route('/blocks/to_workspace').post((req, res, next) => { var _str = postmysql(req, res, "blockly_blocks_to_workspace"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_blocks_to_workspace_get") res.end(_str); }); //指定用户将积木拖入编程区域的行为 router.route('/blocks/out_workspace').post((req, res, next) => { var _str = postmysql(req, res, "blockly_blocks_out_workspace"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_blocks_out_workspace_get") res.end(_str); }); //指定用户导出文件的行为 router.route('/files/local_export').post((req, res, next) => { var _str = postmysql(req, res, "blockly_files_local_export"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_files_local_export_get") res.end(_str); }); //指定用户导入文件的行为 router.route('/files/local_import').post((req, res, next) => { var _str = postmysql(req, res, "blockly_files_local_import"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_files_local_import_get") res.end(_str); }); //指定用户创建指定云端文件的行为 router.route('/files/cloud_create').post((req, res, next) => { var _str = postmysql(req, res, "blockly_files_cloud_create"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_files_cloud_create_get") res.end(_str); }); //指定用户更新指定云端文件的行为 router.route('/files/cloud_update').post((req, res, next) => { var _str = postmysql(req, res, "blockly_files_cloud_update"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_files_cloud_update_get") res.end(_str); }); //指定用户打开指定云端文件的行为 router.route('/files/cloud_open').post((req, res, next) => { var _str = postmysql(req, res, "blockly_files_cloud_open"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_files_cloud_open_get") res.end(_str); }); //指定用户删除指定云端文件的行为 router.route('/files/cloud_delete').post((req, res, next) => { var _str = postmysql(req, res, "blockly_files_cloud_delete"); res.end(_str); }).get((req, res, next) => { var _str = getmysql(req, res, "blockly_files_cloud_delete_get") res.end(_str); }); queryString = function (url) { var a = url.split("?"); var json = querystring.parse(a[1]) return json; } //post存儲過程處理 postmysql = function (req, res, functionname) { //mode的處理 if (req.body[0]) { p = Object.values(req.body[0]); p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname); //執行存儲過程 mysql.usselect(p, function (ret) { res.end(JSON.stringify(ret)); }); } } //get獲取數據庫信息 getmysql = function (req, res, functionname, ...p) { p = p || []; p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname); //執行存儲過程 mysql.usselect(p, function (ret) { res.end(JSON.stringify(ret)); }); // } module.exports = router;