report-app.js 1.66 KB
import axios from 'axios';
import md5 from 'md5';


export default class reportApp {
  constructor(params = {}) {
    this.isProd = !params.unProd;
    this.events = {
      ps: '0',
      av: params.version,
      ab: params.buildId,
      ca: '0',
      net: 'unknown',
      sid: md5(`${params.udid}_${new Date().getTime()}`)
    };
    this.params = {
      mst: '',
      st: '',
      ec: '',
      ei: '',
      url: '',
      host: '',
      locfun: ''
    };

    this.device = {
      ak: `yohobuy_${params.isiOS ? 'ios' : 'android'}${params.isApp ? '' : '_h5'}`,
      udid: params.udid || '',
      ch: '',
      os: params.isiOS ? 'IOS' : 'Android',
      osv: params.osVersion,
      dm: '',
    };
  }
  updateDeviceInfo(info = {}) {
    info.ch && (this.device.ch = info.ch);
    info.dm && (this.device.dm = info.dm);
    info.udid && (this.device.udid = info.udid);

    info.av && (this.events.av = info.av);
    info.ab && (this.events.ab = info.ab);
    info.sid && (this.events.sid = info.sid);
  }
  report(type, pt, pn, params = {}, uid = 0) {
    if (!this.isProd) {
      return;
    }

    params = Object.assign({}, this.params, params);

    if (window) {
      Object.assign(params, {
        host: window.location.host,
        url: window.location.href
      });
    }

    axios({
      baseURL: '//app.yoho.cn/collect/v3',
      url: '',
      method: 'POST',
      data: {
        type: '',
        device: this.device,
        events: [
          Object.assign({
            uid: md5(`${uid}`),
            ts: new Date().getTime() + '000000',
            pt: pt,
            pn: pn,
            param: params
          }, this.events)
        ]
      }
    });
  }
}