版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

54 lines
2.1 KiB

  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. /**
  4. * Synchroneous XMLHttpRequest script builder.
  5. */
  6. class XMLHttpRequestSyncRequestScriptBuilder {
  7. /**
  8. * Sends a synchronous request.
  9. *
  10. * @param options Options.
  11. * @param ssl SSL.
  12. * @param data Data.
  13. */
  14. static getScript(options, ssl, data) {
  15. // Synchronous
  16. // Note: console.log === stdout
  17. // The async request the other Node process executes
  18. return `
  19. const HTTP = require('http');
  20. const HTTPS = require('https');
  21. const sendRequest = HTTP${ssl ? 'S' : ''}.request;
  22. const options = ${JSON.stringify(options)};
  23. const request = sendRequest(options, (response) => {
  24. let responseText = '';
  25. let responseData = Buffer.alloc(0);
  26. response.on('data', (chunk) => {
  27. responseText += chunk;
  28. responseData = Buffer.concat([responseData, Buffer.from(chunk)]);
  29. });
  30. response.on('end', () => {
  31. console.log(JSON.stringify({
  32. error: null,
  33. data: {
  34. statusCode: response.statusCode,
  35. statusMessage: response.statusMessage,
  36. headers: response.headers,
  37. text: responseText,
  38. data: responseData.toString('base64')
  39. }
  40. }));
  41. });
  42. response.on('error', (error) => {
  43. console.log(JSON.stringify({ error: error.toString(), data: null }));
  44. });
  45. });
  46. request.write(\`${JSON.stringify(data ?? '')
  47. .slice(1, -1)
  48. .replace(/'/g, "\\'")}\`);
  49. request.end();
  50. `;
  51. }
  52. }
  53. exports.default = XMLHttpRequestSyncRequestScriptBuilder;
  54. //# sourceMappingURL=XMLHttpRequestSyncRequestScriptBuilder.js.map