novaqlCrypto.js 983 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. const XOR_KEY = "BofangKey";
  2. const PREFIX = "#02";
  3. function encryptXOR(text, key) {
  4. let encrypted = "";
  5. for (let i = 0; i < text.length; i++) {
  6. encrypted += String.fromCharCode(text.charCodeAt(i) ^ key.charCodeAt(i % key.length));
  7. }
  8. return encrypted;
  9. }
  10. function encryptSQL(sql) {
  11. return PREFIX + encryptXOR(encodeURIComponent(sql), XOR_KEY);
  12. }
  13. function getSessionToken() {
  14. const Parse = getApp().Parse;
  15. const currentUser = Parse && Parse.User && Parse.User.current();
  16. if (!currentUser) return "";
  17. if (typeof currentUser.getSessionToken == "function") {
  18. return currentUser.getSessionToken();
  19. }
  20. return currentUser.get && currentUser.get("sessionToken") || "";
  21. }
  22. function buildNovaQLData(sql, params) {
  23. const data = {
  24. sql: encryptSQL(sql),
  25. token: getSessionToken(),
  26. };
  27. if (Array.isArray(params) && params.length > 0) {
  28. data.params = JSON.stringify(params);
  29. }
  30. return data;
  31. }
  32. module.exports = {
  33. encryptSQL,
  34. buildNovaQLData,
  35. };