import urllib from 'urllib';
							 | 
						|
								import AgentKeepalive from 'agentkeepalive';
							 | 
						|
								import { getUserAgent } from './common/utils/getUserAgent';
							 | 
						|
								import initOptions from './common/client/initOptions';
							 | 
						|
								
							 | 
						|
								const HttpsAgentKeepalive = AgentKeepalive.HttpsAgent;
							 | 
						|
								const globalHttpAgent = new AgentKeepalive();
							 | 
						|
								const globalHttpsAgent = new HttpsAgentKeepalive();
							 | 
						|
								
							 | 
						|
								class Client {
							 | 
						|
								  options;
							 | 
						|
								
							 | 
						|
								  urllib;
							 | 
						|
								
							 | 
						|
								  agent;
							 | 
						|
								
							 | 
						|
								  httpsAgent;
							 | 
						|
								
							 | 
						|
								  ctx;
							 | 
						|
								
							 | 
						|
								  userAgent;
							 | 
						|
								
							 | 
						|
								  constructor(options, ctx) {
							 | 
						|
								    if (!(this instanceof Client)) {
							 | 
						|
								      return new Client(options, ctx);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    if (options && options.inited) {
							 | 
						|
								      this.options = options;
							 | 
						|
								    } else {
							 | 
						|
								      this.options = initOptions(options);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // support custom agent and urllib client
							 | 
						|
								    if (this.options.urllib) {
							 | 
						|
								      this.urllib = this.options.urllib;
							 | 
						|
								    } else {
							 | 
						|
								      this.urllib = urllib;
							 | 
						|
								      this.agent = this.options.agent || globalHttpAgent;
							 | 
						|
								      this.httpsAgent = this.options.httpsAgent || globalHttpsAgent;
							 | 
						|
								    }
							 | 
						|
								    this.ctx = ctx;
							 | 
						|
								    this.userAgent = getUserAgent();
							 | 
						|
								  }
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								let client;
							 | 
						|
								export const setConfig = (options, ctx) => {
							 | 
						|
								  client = new Client(options, ctx);
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								export { client };
							 |