Thin Rest Client for Node HTTP/S


SUBMITTED BY: Guest

DATE: Dec. 19, 2020, 2:01 a.m.

FORMAT: JavaScript

SIZE: 1.8 kB

HITS: 378

  1. function __rest(m, u, d, f) {
  2. const urlparter = require("./urlparter");
  3. const fs = require("fs");
  4. const urlex = urlparter(u);
  5. const http = require(urlex.protocol);
  6. urlex.protocol += ":";
  7. console.log(urlex);
  8. let headers = {};
  9. let query = {};
  10. function qs (){
  11. let str;
  12. for (let idx in query) {
  13. if (!str) {
  14. str = "?" + idx + "=" + escape(query[idx])
  15. } else {
  16. str += "&" + idx + "=" + escape(query[idx])
  17. }
  18. }
  19. return str;
  20. }
  21. const api = {
  22. query: (obj) => {
  23. query = obj;
  24. return api;
  25. },
  26. headers: (obj) => {
  27. headers = obj;
  28. return api;
  29. },
  30. request: (cb) => {
  31. urlex.method = m.toUpperCase();
  32. urlex.path += qs();
  33. urlex.headers = headers;
  34. const req = http.request(urlex, res => {
  35. const { statusCode } = res;
  36. const out = {
  37. statusCode: statusCode,
  38. body: ""
  39. }
  40. if (d) {
  41. let file = fs.createWriteStream(f);
  42. res.pipe(file);
  43. return f;
  44. } else {
  45. res.on("data", d => out.body += d);
  46. res.on("end", () => {
  47. cb(null, out)
  48. });
  49. }
  50. })
  51. req.on("error", e => { cb(e) });
  52. req.end();
  53. }
  54. }
  55. return api;
  56. }
  57. module.exports = {
  58. get: url => {return __rest("get", url)},
  59. post: url => {return __rest("post", url)},
  60. download: (url,fn) => {return __rest("get", url, true, fn)}
  61. }

comments powered by Disqus