index.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import axios from 'axios';
  2. import { logType } from './enum';
  3. import { getBrowser, getEnvConfig, getMid, getUserInfo, appVersionCode, appType } from '../utils';
  4. const { logHost } = getEnvConfig();
  5. const logAPIUrl = logHost + '/denet';
  6. export function Report(params: any) {
  7. let baseInfo = params.baseInfo || {}
  8. let {eventData = {}, extParams = {}} = params.params || {
  9. params: {}
  10. }
  11. let isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
  12. let platform = isMobile ? `mobile` : `pc`;
  13. let browser = getBrowser();
  14. let userInfo = getUserInfo();
  15. let extData = {
  16. url: location.href,
  17. browser,
  18. platform,
  19. twitterId: userInfo && userInfo.nickName || '',
  20. ...eventData,
  21. }
  22. eventData = wrapObject(extData)
  23. params.baseInfo = {
  24. mid: getMid(),
  25. machineCode: getMid(),
  26. loginUid: userInfo && userInfo.uid || '',
  27. token: userInfo && userInfo.accessToken || '',
  28. appType,
  29. appVersionCode,
  30. ...baseInfo,
  31. }
  32. params.params.logType = logType.denet;
  33. params.params.eventData = JSON.stringify(eventData)
  34. params.params.extParams = JSON.stringify(extParams)
  35. axios.post(`${logAPIUrl}/log/uploadLogFromFrontend`, params)
  36. }
  37. function wrapObject(extParams: any) {
  38. if (typeDecide(extParams, 'Object')) {
  39. return extParams
  40. }
  41. return { 'defaultExt': extParams }
  42. }
  43. function typeDecide(o: any, type: string) {
  44. return Object.prototype.toString.call(o) === `[object ${type}]`;
  45. }