1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import AxiosCanceler from "./AxiosCanceler"
- import Logger from "./Logger.js"
- const logger = new Logger('Http')
- class Http1 extends EventEmitter {
- constructor() {
- super()
- this.instatnce = axios.create();
- this.canceler = new AxiosCanceler;
- }
- requestConstant(){
- return {
- x_nounce: this.randomString(),
- x_timestamp: new Date().getTime(),
- x_os: "web"
- }
- }
- requestParams(e){
- return oe({}, e.params)
- }
- get(e) {
- return this.request(le(oe({}, e), {
- method: "GET"
- }))
- }
- post(e) {
- return this.request(le(oe({}, e), {
- method: "POST"
- }))
- }
- request(e) {
- const {url: t, timeout: r=1e4, method: n, key: o, beforeRequest: a, responseType: s, data: l} = e;
- let {retry: u=0} = e;
- const c = this.patchUrl(t)
- , h = this.canceler.addPending(t);
- a && isFunction(a) && a(e);
- const f = this.requestParams(e);
- let d = {
- url: c,
- method: n,
- timeout: r,
- cancelToken: h,
- responseType: s,
- params: f
- };
- n === "POST" && (d = oe({
- data: l
- }, d));
- const _ = Date.now()
- , g = ()=>this.instatnce.request(d).then(m=>(o && logger.infoAndReportMeasurement({
- type: "http",
- extraData: t,
- group: "http",
- tag: o
- }),
- this.canceler.removeCancelToken(t),
- m)).catch(m=>{
- const v = axios.isCancel(m);
- return u > 0 && !v ? (u--,
- logger.warn(`request ${t} retry, left retry count`, u),
- g()) : (logger.infoAndReportMeasurement({
- type: "http",
- error: m,
- extraData: {
- url: t,
- isCanceled: v
- },
- tag: o,
- group: "http"
- }),
- this.canceler.removeCancelToken(t),
- Promise.reject(m))
- }
- );
- return g()
- }
- patchUrl(e) {
- return e
- }
- randomString() {
- let e = "";
- const t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
- , r = t.length;
- for (let n = 0; n < 8; n++)
- e += t.charAt(Math.floor(Math.random() * r));
- return e
- }
- }
- const http1 = new Http1();
- export { http1 };
|