setConfig.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import urllib from 'urllib';
  2. import AgentKeepalive from 'agentkeepalive';
  3. import { getUserAgent } from './common/utils/getUserAgent';
  4. import initOptions from './common/client/initOptions';
  5. const HttpsAgentKeepalive = AgentKeepalive.HttpsAgent;
  6. const globalHttpAgent = new AgentKeepalive();
  7. const globalHttpsAgent = new HttpsAgentKeepalive();
  8. class Client {
  9. public options;
  10. public urllib;
  11. public agent;
  12. public httpsAgent;
  13. public ctx;
  14. public userAgent;
  15. public constructor(options, ctx) {
  16. if (!(this instanceof Client)) {
  17. return new Client(options, ctx);
  18. }
  19. if (options && options.inited) {
  20. this.options = options;
  21. } else {
  22. this.options = initOptions(options);
  23. }
  24. // support custom agent and urllib client
  25. if (this.options.urllib) {
  26. this.urllib = this.options.urllib;
  27. } else {
  28. this.urllib = urllib;
  29. this.agent = this.options.agent || globalHttpAgent;
  30. this.httpsAgent = this.options.httpsAgent || globalHttpsAgent;
  31. }
  32. this.ctx = ctx;
  33. this.userAgent = getUserAgent();
  34. }
  35. }
  36. let client;
  37. export const setConfig = (options, ctx) => {
  38. client = new Client(options, ctx);
  39. };
  40. export {
  41. client
  42. };