Advertisement
President_2000

example1

Dec 22nd, 2020 (edited)
1,212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     RoastedPresident2000
  3.     Example 1
  4. */
  5. // Import modules
  6. import { uploadScript } from './modules/loadasset';
  7. import { getData, writeData } from './modules/faunadb';
  8. import { validateInstance, addInstance, removeInstance } from './modules/gamevalidation';
  9. import {generateSuccess, generateError } from './modules/codegeneration';
  10. import { placeId } from './workerconfig';
  11.  
  12. // Connect Event listen to handle request
  13. addEventListener('fetch', event => {
  14.     event.respondWith(handleRequest(event.request));
  15. });
  16.  
  17.  
  18. async function handleRequest(request) {
  19.     try {
  20.         const url = new URL(request.url);
  21.         const method = request.method;
  22.         // Read Post request
  23.         if (method == "POST") {
  24.             const bodyUsed = await request.json();
  25.             const serverValidated = await validateInstance(request.headers.get("cf-connecting-ip"), bodyUsed.jobId, bodyUsed.GUID);
  26.  
  27.             // Authenticated server routes
  28.             if (serverValidated) {
  29.                 const data = bodyUsed.data;
  30.                 if (url.pathname == "/post/uploadScript") {
  31.                     return await uploadScript(data);
  32.                 } else if (url.pathname == "/post/saveScript") {
  33.                     const userId = parseInt(data.userId);
  34.                     const scriptName = data.scriptName;
  35.                     const code = data.code;
  36.                     if (userId && userId != NaN && scriptName && code) {
  37.                         const exists = await getData("findScript", [scriptName, userId]);
  38.                         if (!(exists ? true : false)) {
  39.                             const success = await writeData('scripts', {
  40.                                 userId: userId,
  41.                                 scriptName: scriptName,
  42.                                 code: code
  43.                             });
  44.  
  45.                             if (success) {
  46.                                 return await generateSuccess("Successfully saved script");
  47.                             } else {
  48.                                 return await generateError("Failed to save scripts");
  49.                             }
  50.                         }
  51.  
  52.                         return await generateError("Script already exists");
  53.                     } else {
  54.                         return await generateError("Invalid arguments to " + url.pathname);
  55.                     }
  56.                 } else if (url.pathname == "/post/getScript") {
  57.                     const userId = parseInt(data.userId);
  58.                     const scriptName = data.scriptName;
  59.                     if (userId != NaN && scriptName) {
  60.                         const result = await getData("findScript", [scriptName, userId]);
  61.                         return await generateSuccess(
  62.                             JSON.stringify(result ? { found: true, result: result } : { found: false, result: null })
  63.                         );
  64.                     } else {
  65.                         return await generateError("Invalid arguments to " + url.pathname);
  66.                     }
  67.                 }
  68.             }
  69.  
  70.             // Un-authenticated server routes
  71.             if (url.pathname == "/post/registerServer") {
  72.                 const robloxId = request.headers.get("roblox-id");
  73.                 if (robloxId == placeId && bodyUsed.jobId && bodyUsed.GUID) {
  74.                     const success = await addInstance(request.headers.get("cf-connecting-ip"), bodyUsed.jobId, bodyUsed.GUID);
  75.                     if (success) {
  76.                         return await generateSuccess("Successfully added server instance");
  77.                     } else {
  78.                         return await generateError("Failed to add server instance - server instance is already registered");
  79.                     }
  80.                 }
  81.             } else if (url.pathname == "/post/unRegisterServer") {
  82.                 const robloxId = request.headers.get("roblox-id");
  83.                 if (robloxId == placeId && bodyUsed.jobId && bodyUsed.GUID) {
  84.                     const success = await removeInstance(request.headers.get("cf-connecting-ip"), bodyUsed.jobId, bodyUsed.GUID);
  85.                     if (success) {
  86.                         return await generateSuccess("Successfully deleted instance");
  87.                     } else {
  88.                         return await generateError("Failed to delete instance - make sure it exists");
  89.                     }
  90.                 }
  91.             }
  92.            
  93.             return await generateError("Unauthorized.", 401);
  94.         }
  95.     } catch (ex) {
  96.         return await generateError("An internal server error occured. Please try again later. " + ex, 500);
  97.     }
  98.     // Return Printed response to API
  99.     return new Response('<h1>API backend</h1>', {
  100.         headers: { 'content-type': 'text/html' },
  101.     });
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement