blockly.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. // ROUTES FOR OUR API
  2. // =============================================================================
  3. var express = require('express');
  4. var router = express.Router(); // get an instance of the express Router
  5. const querystring = require('querystring');
  6. var mysql = require('./mysql');
  7. const _mysqlLabor = ["172.16.12.5", "cuhkjc_query"]; //query數據庫信息
  8. //統壹處理區域
  9. router.use(async function (req, res, next) {
  10. //权限设置 - 登陆 验证码
  11. await asynnext(req, res, next);
  12. //// make sure we go to the next routes and don't stop here
  13. //res.end("");
  14. });
  15. /**
  16. * @des 參數解釋同上
  17. */
  18. function asynnext(req, res, next) {
  19. //異步處理
  20. return new Promise(async (resolve, reject) => {
  21. next();
  22. //resolve(true);
  23. });
  24. }
  25. //指定用户访问 CocoBlockly 的行为
  26. router.route('/history').post((req, res, next) => {
  27. var _str = postmysql(req, res, "blockly_history");
  28. res.end(_str);
  29. }).get((req, res, next) => {
  30. var _str = getmysql(req, res, "blockly_history_get")
  31. res.end(_str);
  32. });
  33. //指定用户在 CocoBlockly 停留的总时间(离开的时候请求)
  34. router.route('/duration').post((req, res, next) => {
  35. var _str = postmysql(req, res, "blockly_duration");
  36. res.end(_str);
  37. }).get((req, res, next) => {
  38. var _str = getmysql(req, res, "blockly_duration_get")
  39. res.end(_str);
  40. });
  41. //指定用户打开实验室的行为
  42. router.route('/labs').post((req, res, next) => {
  43. var _str = postmysql(req, res, "blockly_labs");
  44. res.end(_str);
  45. }).get((req, res, next) => {
  46. var _str = getmysql(req, res, "blockly_labs_get")
  47. res.end(_str);
  48. });
  49. //指定用户打开某个样例的行为
  50. router.route('/examples').post((req, res, next) => {
  51. var _str = postmysql(req, res, "blockly_examples");
  52. res.end(_str);
  53. }).get((req, res, next) => {
  54. var _str = getmysql(req, res, "blockly_examples_get")
  55. res.end(_str);
  56. });
  57. //指定用户切换上传模式的行为
  58. router.route('/mode_switch').post((req, res, next) => {
  59. var _str = postmysql(req, res, "blockly_mode_switch");
  60. res.end(_str);
  61. }).get((req, res, next) => {
  62. var _str = getmysql(req, res, "blockly_mode_switch_get")
  63. res.end(_str);
  64. });
  65. //指定用户点击串口监视窗按钮的行为
  66. router.route('/serial_monitor').post((req, res, next) => {
  67. var _str = postmysql(req, res, "blockly_serial_monitor");
  68. res.end(_str);
  69. }).get((req, res, next) => {
  70. var _str = getmysql(req, res, "blockly_serial_monitor_get")
  71. res.end(_str);
  72. });
  73. //指定用户点击复制源代码的行为
  74. router.route('/copy').post((req, res, next) => {
  75. var _str = postmysql(req, res, "blockly_copy");
  76. res.end(_str);
  77. }).get((req, res, next) => {
  78. var _str = getmysql(req, res, "blockly_copy_get")
  79. res.end(_str);
  80. });
  81. //指定用户点击运行的行为
  82. router.route('/upload_area/run').post((req, res, next) => {
  83. var _str = postmysql(req, res, "blockly_upload_area_run");
  84. res.end(_str);
  85. }).get((req, res, next) => {
  86. var _str = getmysql(req, res, "blockly_upload_area_run_get")
  87. res.end(_str);
  88. });
  89. //指定用户点击上传的行为
  90. router.route('/upload_area/upload').post((req, res, next) => {
  91. var _str = postmysql(req, res, "blockly_upload_area_upload");
  92. res.end(_str);
  93. }).get((req, res, next) => {
  94. var _str = getmysql(req, res, "blockly_upload_area_upload_get")
  95. res.end(_str);
  96. });
  97. //指定用户在 Blockly 中弹出错误信息的行为(并报错错误信息)
  98. router.route('/upload_area/errormsg').post((req, res, next) => {
  99. var _str = postmysql(req, res, "blockly_upload_area_errormsg");
  100. res.end(_str);
  101. }).get((req, res, next) => {
  102. var _str = getmysql(req, res, "blockly_upload_area_errormsg_get")
  103. res.end(_str);
  104. });
  105. //指定用户将积木拖入编程区域的行为
  106. router.route('/blocks/to_workspace').post((req, res, next) => {
  107. var _str = postmysql(req, res, "blockly_blocks_to_workspace");
  108. res.end(_str);
  109. }).get((req, res, next) => {
  110. var _str = getmysql(req, res, "blockly_blocks_to_workspace_get")
  111. res.end(_str);
  112. });
  113. //指定用户将积木拖入编程区域的行为
  114. router.route('/blocks/out_workspace').post((req, res, next) => {
  115. var _str = postmysql(req, res, "blockly_blocks_out_workspace");
  116. res.end(_str);
  117. }).get((req, res, next) => {
  118. var _str = getmysql(req, res, "blockly_blocks_out_workspace_get")
  119. res.end(_str);
  120. });
  121. //指定用户导出文件的行为
  122. router.route('/files/local_export').post((req, res, next) => {
  123. var _str = postmysql(req, res, "blockly_files_local_export");
  124. res.end(_str);
  125. }).get((req, res, next) => {
  126. var _str = getmysql(req, res, "blockly_files_local_export_get")
  127. res.end(_str);
  128. });
  129. //指定用户导入文件的行为
  130. router.route('/files/local_import').post((req, res, next) => {
  131. var _str = postmysql(req, res, "blockly_files_local_import");
  132. res.end(_str);
  133. }).get((req, res, next) => {
  134. var _str = getmysql(req, res, "blockly_files_local_import_get")
  135. res.end(_str);
  136. });
  137. //指定用户创建指定云端文件的行为
  138. router.route('/files/cloud_create').post((req, res, next) => {
  139. var _str = postmysql(req, res, "blockly_files_cloud_create");
  140. res.end(_str);
  141. }).get((req, res, next) => {
  142. var _str = getmysql(req, res, "blockly_files_cloud_create_get")
  143. res.end(_str);
  144. });
  145. //指定用户更新指定云端文件的行为
  146. router.route('/files/cloud_update').post((req, res, next) => {
  147. var _str = postmysql(req, res, "blockly_files_cloud_update");
  148. res.end(_str);
  149. }).get((req, res, next) => {
  150. var _str = getmysql(req, res, "blockly_files_cloud_update_get")
  151. res.end(_str);
  152. });
  153. //指定用户打开指定云端文件的行为
  154. router.route('/files/cloud_open').post((req, res, next) => {
  155. var _str = postmysql(req, res, "blockly_files_cloud_open");
  156. res.end(_str);
  157. }).get((req, res, next) => {
  158. var _str = getmysql(req, res, "blockly_files_cloud_open_get")
  159. res.end(_str);
  160. });
  161. //指定用户删除指定云端文件的行为
  162. router.route('/files/cloud_delete').post((req, res, next) => {
  163. var _str = postmysql(req, res, "blockly_files_cloud_delete");
  164. res.end(_str);
  165. }).get((req, res, next) => {
  166. var _str = getmysql(req, res, "blockly_files_cloud_delete_get")
  167. res.end(_str);
  168. });
  169. queryString = function (url) {
  170. var a = url.split("?");
  171. var json = querystring.parse(a[1])
  172. return json;
  173. }
  174. //post存儲過程處理
  175. postmysql = function (req, res, functionname) {
  176. //mode的處理
  177. if (req.body[0]) {
  178. p = Object.values(req.body[0]);
  179. p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
  180. //執行存儲過程
  181. mysql.usselect(p, function (ret) { res.end(JSON.stringify(ret)); });
  182. }
  183. }
  184. //get獲取數據庫信息
  185. getmysql = function (req, res, functionname, ...p) {
  186. p = p || [];
  187. p.unshift(_mysqlLabor[0], _mysqlLabor[1], functionname);
  188. //執行存儲過程
  189. mysql.usselect(p, function (ret) {
  190. res.end(JSON.stringify(ret));
  191. }); //
  192. }
  193. module.exports = router;