{"action":"created","comment":{"url":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/comments/214289759","pull_request_review_id":151313433,"id":214289759,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNDI4OTc1OQ==","diff_hunk":"@@ -0,0 +1,223 @@\n+/**\n+ * @file mip-analytics 统计框架\n+ * @author {306880673@qq.com, tfciw}\n+ * @transfer-date 2018/08\n+ */\n+const { CustomElement, util, performance } = MIP\n+\n+export default class MipAnalytics extends CustomElement {\n+  constructor (...args) {\n+    super(...args)\n+    this.mipSpeedInfo = {}\n+    this.timer = []\n+    this.eventPoint = [\n+      'MIPStart',\n+      'MIPPageShow',\n+      'MIPDomContentLoaded',\n+      'MIPFirstScreen'\n+    ]\n+    this.defaultDispKey = 'domready'\n+    this.isSendDisp = {}\n+    this.isSendDisp[this.defaultDispKey] = 0\n+\n+    this.triggers = {\n+\n+      /**\n+       * 处理组件使用时定义的click\n+       *\n+       * @param {Object} triggers\n+       */\n+      click (triggers) {\n+        this.clickHandle(triggers, 'click')\n+      },\n+\n+      /**\n+       * 处理组件使用时定义的touchend\n+       *\n+       * @param {Object} triggers\n+       */\n+      touchend (triggers) {\n+        this.clickHandle(triggers, 'touchend')\n+      },\n+\n+      /**\n+       * 处理组件使用时定义的disp事件\n+       *\n+       * @param {Object} triggers\n+       */\n+      disp (triggers) {\n+        performance.on('update', data => {\n+          if (!this.isSendDisp[this.defaultDispKey] && this.isDomReady(data)) {\n+            this.mipSpeedInfo = data\n+            triggers.forEach(el => {\n+              this.send(el)\n+            })\n+          }\n+        })\n+      },\n+\n+      /**\n+       * 按着mip1组件来，scroll备用\n+       */\n+      scroll () {\n+\n+      },\n+\n+      /**\n+       * 处理组件使用时定义的timer\n+       *\n+       * @param {Object} triggers\n+       */\n+      timer (triggers) {\n+        triggers.forEach(el => {\n+          this.timer.push(setInterval(() => {\n+            this.send(el)\n+          }, el.option.interval || 4000))\n+        })\n+      }\n+\n+    }\n+  }\n+\n+  build () {\n+    // 获取页面script配置的host以及事件及其对应trigger事件属性\n+    let cfg = {}\n+    try {\n+      let script = this.element.querySelector('script[type=\"application/json\"]')\n+      cfg = JSON.parse(script.textContent.toString())\n+    } catch (e) {\n+      console.warn('json is illegal'); // eslint-disable-line\n+      console.warn(e); // eslint-disable-line\n+      return\n+    }\n+    if (!cfg.setting || !cfg.hosts) {\n+      return\n+    }\n+\n+    // 全局代理事件\n+    for (let prop in cfg.setting) {\n+      if (cfg.setting.hasOwnProperty(prop)) {\n+        // 替换host变量\n+        let events = cfg.setting[prop]\n+        events.forEach(el => {\n+          el.host = cfg.hosts[el.host]\n+        })\n+        this.triggers[prop] && this.triggers[prop].call(this, events)\n+      }\n+    }\n+  }\n+\n+  /**\n+   * 点击事件处理\n+   *\n+   * @param {Object} triggers\n+   * @param {string} eventName 事件名\n+   */\n+  clickHandle (triggers, eventName) {\n+    triggers.forEach(el => {\n+      let ancestors = el.tag ? document.querySelectorAll(el.selector) : [document]\n+      let eventTag = el.tag || el.selector\n+\n+      ancestors.forEach(dom => {\n+        util.event.delegate(dom, eventTag, eventName, () => {\n+          let paramsObj = this.element.getAttribute('data-click') || ''\n+          this.send(el, paramsObj)\n+        }, false)\n+      })\n+    })\n+  }\n+\n+  /**\n+   * 根据performance定义的事件和this.eventPoint 判断当前文档dom是否构建完毕\n+   *\n+   * @param {Object} data 为performance模块定义的事件\n+   * @return {number || boolean}\n+   */\n+  isDomReady (data) {\n+    return data ? this.eventPoint.every(el => {\n+      return data[el]\n+    })\n+      : false\n+  }\n+\n+  /**\n+   * 使用img的方式发送日志\n+   *\n+   * @param {string} url src链接\n+   */\n+  imgSendLog (url) {\n+    let key = 'IMAGE' + (new Date()).getTime()\n+    let img = window[key] = new Image()\n+    img.addEventListener('load', () => {\n+      // 防止多次触发onload;\n+      img.onload = img.onerror = img.onabort = null\n+      // 清空引用,避免内存泄漏\n+      window[key] = null\n+      img = null\n+    })\n+    img.src = url\n+  }\n+\n+  /**\n+   * 替换插值 ${var}\n+   *\n+   * @param {string} str 被替换的字符串\n+   * @param {string} vars 替换变量\n+   */\n+  valReplace (str, vars) {\n+    vars = vars || {}\n+    util.fn.extend(vars, this.mipSpeedInfo)\n+    return str.replace(/(\\${.*})/g, $1 => {\n+      let key = $1.substring(2, $1.length - 1).trim()\n+      if (typeof vars[key] === 'object') {\n+        return ''\n+      }\n+      return vars[key] || $1\n+    })\n+  }\n+\n+  /**\n+   * 数据序列化处理\n+   *\n+   * @param {Object} obj 必须是对象\n+   * @param {string} vars 配置变量,用于替换1级参数的插值\n+   */\n+  serialize (obj, lets) {\n+    if (!obj) {\n+      return ''\n+    }\n+    let str = ''\n+    if (typeof obj === 'object') {\n+      Object.keys(obj).filter(k => {\n+        return obj[k] === 'object'","path":"components/mip-analytics/mip-analytics.js","position":192,"original_position":192,"commit_id":"2c0c42f0812163e55682bcd83c2b22c5517f1db0","original_commit_id":"2c0c42f0812163e55682bcd83c2b22c5517f1db0","user":{"login":"PengXing","id":527244,"node_id":"MDQ6VXNlcjUyNzI0NA==","avatar_url":"https://avatars3.githubusercontent.com/u/527244?v=4","gravatar_id":"","url":"https://api.github.com/users/PengXing","html_url":"https://github.com/PengXing","followers_url":"https://api.github.com/users/PengXing/followers","following_url":"https://api.github.com/users/PengXing/following{/other_user}","gists_url":"https://api.github.com/users/PengXing/gists{/gist_id}","starred_url":"https://api.github.com/users/PengXing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PengXing/subscriptions","organizations_url":"https://api.github.com/users/PengXing/orgs","repos_url":"https://api.github.com/users/PengXing/repos","events_url":"https://api.github.com/users/PengXing/events{/privacy}","received_events_url":"https://api.github.com/users/PengXing/received_events","type":"User","site_admin":false},"body":"这整个一段都写的有点问题\r\n\r\n```javascript\r\nlet str = Object.keys(obj)\r\n  .filter(key => typeof obj[key] === 'object')\r\n  .map(key => {\r\n    return key + '=' + encodeURIComponent(this.valReplace(obj[key], lets))\r\n  })\r\n  .join('&')\r\n```","created_at":"2018-08-31T09:08:14Z","updated_at":"2018-08-31T09:09:37Z","html_url":"https://github.com/mipengine/mip2-extensions/pull/245#discussion_r214289759","pull_request_url":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/245","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/comments/214289759"},"html":{"href":"https://github.com/mipengine/mip2-extensions/pull/245#discussion_r214289759"},"pull_request":{"href":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/245"}},"in_reply_to_id":214289126},"pull_request":{"url":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/245","id":211683952,"node_id":"MDExOlB1bGxSZXF1ZXN0MjExNjgzOTUy","html_url":"https://github.com/mipengine/mip2-extensions/pull/245","diff_url":"https://github.com/mipengine/mip2-extensions/pull/245.diff","patch_url":"https://github.com/mipengine/mip2-extensions/pull/245.patch","issue_url":"https://api.github.com/repos/mipengine/mip2-extensions/issues/245","number":245,"state":"open","locked":false,"title":"feat:analytics组件迁移","user":{"login":"tfciw","id":18052602,"node_id":"MDQ6VXNlcjE4MDUyNjAy","avatar_url":"https://avatars2.githubusercontent.com/u/18052602?v=4","gravatar_id":"","url":"https://api.github.com/users/tfciw","html_url":"https://github.com/tfciw","followers_url":"https://api.github.com/users/tfciw/followers","following_url":"https://api.github.com/users/tfciw/following{/other_user}","gists_url":"https://api.github.com/users/tfciw/gists{/gist_id}","starred_url":"https://api.github.com/users/tfciw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tfciw/subscriptions","organizations_url":"https://api.github.com/users/tfciw/orgs","repos_url":"https://api.github.com/users/tfciw/repos","events_url":"https://api.github.com/users/tfciw/events{/privacy}","received_events_url":"https://api.github.com/users/tfciw/received_events","type":"User","site_admin":false},"body":"**提交pr时需要关联issue，请大家遵守**\r\n#11 \r\n**1、升级点** （清晰准确的描述升级的功能点）\r\n无\r\n**2、影响范围** （描述该需求上线会影响什么功能）\r\n\r\n**3、自测 checklist**\r\n免测\r\n**4、需要覆盖的场景和case**\r\n- [ ] 是否覆盖了sf打开mip页\r\n- [ ] 是否验证了极速服务mip页面效果\r\n\r\n**5、自测机型和浏览器** \r\n- [ ] 是否覆盖了ios系统手机\r\n- [ ] 是否覆盖了安卓系统手机\r\n- [ ] 是否覆盖了iphone版式浏览器（比如qq、uc、chrome、safari、安卓自带浏览器）\r\n- [ ] 是否覆盖了手百\r\n\r\n\r\n\r\n","created_at":"2018-08-29T09:20:50Z","updated_at":"2018-08-31T09:09:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6b5d1105b294f52535b243e57750e734a52b1a60","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/245/commits","review_comments_url":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/245/comments","review_comment_url":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mipengine/mip2-extensions/issues/245/comments","statuses_url":"https://api.github.com/repos/mipengine/mip2-extensions/statuses/2c0c42f0812163e55682bcd83c2b22c5517f1db0","head":{"label":"mipengine:ft/analytics","ref":"ft/analytics","sha":"2c0c42f0812163e55682bcd83c2b22c5517f1db0","user":{"login":"mipengine","id":19966931,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE5OTY2OTMx","avatar_url":"https://avatars0.githubusercontent.com/u/19966931?v=4","gravatar_id":"","url":"https://api.github.com/users/mipengine","html_url":"https://github.com/mipengine","followers_url":"https://api.github.com/users/mipengine/followers","following_url":"https://api.github.com/users/mipengine/following{/other_user}","gists_url":"https://api.github.com/users/mipengine/gists{/gist_id}","starred_url":"https://api.github.com/users/mipengine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mipengine/subscriptions","organizations_url":"https://api.github.com/users/mipengine/orgs","repos_url":"https://api.github.com/users/mipengine/repos","events_url":"https://api.github.com/users/mipengine/events{/privacy}","received_events_url":"https://api.github.com/users/mipengine/received_events","type":"Organization","site_admin":false},"repo":{"id":135115912,"node_id":"MDEwOlJlcG9zaXRvcnkxMzUxMTU5MTI=","name":"mip2-extensions","full_name":"mipengine/mip2-extensions","owner":{"login":"mipengine","id":19966931,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE5OTY2OTMx","avatar_url":"https://avatars0.githubusercontent.com/u/19966931?v=4","gravatar_id":"","url":"https://api.github.com/users/mipengine","html_url":"https://github.com/mipengine","followers_url":"https://api.github.com/users/mipengine/followers","following_url":"https://api.github.com/users/mipengine/following{/other_user}","gists_url":"https://api.github.com/users/mipengine/gists{/gist_id}","starred_url":"https://api.github.com/users/mipengine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mipengine/subscriptions","organizations_url":"https://api.github.com/users/mipengine/orgs","repos_url":"https://api.github.com/users/mipengine/repos","events_url":"https://api.github.com/users/mipengine/events{/privacy}","received_events_url":"https://api.github.com/users/mipengine/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mipengine/mip2-extensions","description":"MIP2.0 官方组件库","fork":false,"url":"https://api.github.com/repos/mipengine/mip2-extensions","forks_url":"https://api.github.com/repos/mipengine/mip2-extensions/forks","keys_url":"https://api.github.com/repos/mipengine/mip2-extensions/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mipengine/mip2-extensions/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mipengine/mip2-extensions/teams","hooks_url":"https://api.github.com/repos/mipengine/mip2-extensions/hooks","issue_events_url":"https://api.github.com/repos/mipengine/mip2-extensions/issues/events{/number}","events_url":"https://api.github.com/repos/mipengine/mip2-extensions/events","assignees_url":"https://api.github.com/repos/mipengine/mip2-extensions/assignees{/user}","branches_url":"https://api.github.com/repos/mipengine/mip2-extensions/branches{/branch}","tags_url":"https://api.github.com/repos/mipengine/mip2-extensions/tags","blobs_url":"https://api.github.com/repos/mipengine/mip2-extensions/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mipengine/mip2-extensions/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mipengine/mip2-extensions/git/refs{/sha}","trees_url":"https://api.github.com/repos/mipengine/mip2-extensions/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mipengine/mip2-extensions/statuses/{sha}","languages_url":"https://api.github.com/repos/mipengine/mip2-extensions/languages","stargazers_url":"https://api.github.com/repos/mipengine/mip2-extensions/stargazers","contributors_url":"https://api.github.com/repos/mipengine/mip2-extensions/contributors","subscribers_url":"https://api.github.com/repos/mipengine/mip2-extensions/subscribers","subscription_url":"https://api.github.com/repos/mipengine/mip2-extensions/subscription","commits_url":"https://api.github.com/repos/mipengine/mip2-extensions/commits{/sha}","git_commits_url":"https://api.github.com/repos/mipengine/mip2-extensions/git/commits{/sha}","comments_url":"https://api.github.com/repos/mipengine/mip2-extensions/comments{/number}","issue_comment_url":"https://api.github.com/repos/mipengine/mip2-extensions/issues/comments{/number}","contents_url":"https://api.github.com/repos/mipengine/mip2-extensions/contents/{+path}","compare_url":"https://api.github.com/repos/mipengine/mip2-extensions/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mipengine/mip2-extensions/merges","archive_url":"https://api.github.com/repos/mipengine/mip2-extensions/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mipengine/mip2-extensions/downloads","issues_url":"https://api.github.com/repos/mipengine/mip2-extensions/issues{/number}","pulls_url":"https://api.github.com/repos/mipengine/mip2-extensions/pulls{/number}","milestones_url":"https://api.github.com/repos/mipengine/mip2-extensions/milestones{/number}","notifications_url":"https://api.github.com/repos/mipengine/mip2-extensions/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mipengine/mip2-extensions/labels{/name}","releases_url":"https://api.github.com/repos/mipengine/mip2-extensions/releases{/id}","deployments_url":"https://api.github.com/repos/mipengine/mip2-extensions/deployments","created_at":"2018-05-28T06:00:58Z","updated_at":"2018-08-30T03:10:27Z","pushed_at":"2018-08-31T07:08:01Z","git_url":"git://github.com/mipengine/mip2-extensions.git","ssh_url":"git@github.com:mipengine/mip2-extensions.git","clone_url":"https://github.com/mipengine/mip2-extensions.git","svn_url":"https://github.com/mipengine/mip2-extensions","homepage":null,"size":812,"stargazers_count":8,"watchers_count":8,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":24,"mirror_url":null,"archived":false,"open_issues_count":51,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":24,"open_issues":51,"watchers":8,"default_branch":"master"}},"base":{"label":"mipengine:master","ref":"master","sha":"078062a2f5ae7df1de89585e490281fb8856b1d5","user":{"login":"mipengine","id":19966931,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE5OTY2OTMx","avatar_url":"https://avatars0.githubusercontent.com/u/19966931?v=4","gravatar_id":"","url":"https://api.github.com/users/mipengine","html_url":"https://github.com/mipengine","followers_url":"https://api.github.com/users/mipengine/followers","following_url":"https://api.github.com/users/mipengine/following{/other_user}","gists_url":"https://api.github.com/users/mipengine/gists{/gist_id}","starred_url":"https://api.github.com/users/mipengine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mipengine/subscriptions","organizations_url":"https://api.github.com/users/mipengine/orgs","repos_url":"https://api.github.com/users/mipengine/repos","events_url":"https://api.github.com/users/mipengine/events{/privacy}","received_events_url":"https://api.github.com/users/mipengine/received_events","type":"Organization","site_admin":false},"repo":{"id":135115912,"node_id":"MDEwOlJlcG9zaXRvcnkxMzUxMTU5MTI=","name":"mip2-extensions","full_name":"mipengine/mip2-extensions","owner":{"login":"mipengine","id":19966931,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE5OTY2OTMx","avatar_url":"https://avatars0.githubusercontent.com/u/19966931?v=4","gravatar_id":"","url":"https://api.github.com/users/mipengine","html_url":"https://github.com/mipengine","followers_url":"https://api.github.com/users/mipengine/followers","following_url":"https://api.github.com/users/mipengine/following{/other_user}","gists_url":"https://api.github.com/users/mipengine/gists{/gist_id}","starred_url":"https://api.github.com/users/mipengine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mipengine/subscriptions","organizations_url":"https://api.github.com/users/mipengine/orgs","repos_url":"https://api.github.com/users/mipengine/repos","events_url":"https://api.github.com/users/mipengine/events{/privacy}","received_events_url":"https://api.github.com/users/mipengine/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mipengine/mip2-extensions","description":"MIP2.0 官方组件库","fork":false,"url":"https://api.github.com/repos/mipengine/mip2-extensions","forks_url":"https://api.github.com/repos/mipengine/mip2-extensions/forks","keys_url":"https://api.github.com/repos/mipengine/mip2-extensions/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mipengine/mip2-extensions/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mipengine/mip2-extensions/teams","hooks_url":"https://api.github.com/repos/mipengine/mip2-extensions/hooks","issue_events_url":"https://api.github.com/repos/mipengine/mip2-extensions/issues/events{/number}","events_url":"https://api.github.com/repos/mipengine/mip2-extensions/events","assignees_url":"https://api.github.com/repos/mipengine/mip2-extensions/assignees{/user}","branches_url":"https://api.github.com/repos/mipengine/mip2-extensions/branches{/branch}","tags_url":"https://api.github.com/repos/mipengine/mip2-extensions/tags","blobs_url":"https://api.github.com/repos/mipengine/mip2-extensions/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mipengine/mip2-extensions/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mipengine/mip2-extensions/git/refs{/sha}","trees_url":"https://api.github.com/repos/mipengine/mip2-extensions/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mipengine/mip2-extensions/statuses/{sha}","languages_url":"https://api.github.com/repos/mipengine/mip2-extensions/languages","stargazers_url":"https://api.github.com/repos/mipengine/mip2-extensions/stargazers","contributors_url":"https://api.github.com/repos/mipengine/mip2-extensions/contributors","subscribers_url":"https://api.github.com/repos/mipengine/mip2-extensions/subscribers","subscription_url":"https://api.github.com/repos/mipengine/mip2-extensions/subscription","commits_url":"https://api.github.com/repos/mipengine/mip2-extensions/commits{/sha}","git_commits_url":"https://api.github.com/repos/mipengine/mip2-extensions/git/commits{/sha}","comments_url":"https://api.github.com/repos/mipengine/mip2-extensions/comments{/number}","issue_comment_url":"https://api.github.com/repos/mipengine/mip2-extensions/issues/comments{/number}","contents_url":"https://api.github.com/repos/mipengine/mip2-extensions/contents/{+path}","compare_url":"https://api.github.com/repos/mipengine/mip2-extensions/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mipengine/mip2-extensions/merges","archive_url":"https://api.github.com/repos/mipengine/mip2-extensions/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mipengine/mip2-extensions/downloads","issues_url":"https://api.github.com/repos/mipengine/mip2-extensions/issues{/number}","pulls_url":"https://api.github.com/repos/mipengine/mip2-extensions/pulls{/number}","milestones_url":"https://api.github.com/repos/mipengine/mip2-extensions/milestones{/number}","notifications_url":"https://api.github.com/repos/mipengine/mip2-extensions/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mipengine/mip2-extensions/labels{/name}","releases_url":"https://api.github.com/repos/mipengine/mip2-extensions/releases{/id}","deployments_url":"https://api.github.com/repos/mipengine/mip2-extensions/deployments","created_at":"2018-05-28T06:00:58Z","updated_at":"2018-08-30T03:10:27Z","pushed_at":"2018-08-31T07:08:01Z","git_url":"git://github.com/mipengine/mip2-extensions.git","ssh_url":"git@github.com:mipengine/mip2-extensions.git","clone_url":"https://github.com/mipengine/mip2-extensions.git","svn_url":"https://github.com/mipengine/mip2-extensions","homepage":null,"size":812,"stargazers_count":8,"watchers_count":8,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":24,"mirror_url":null,"archived":false,"open_issues_count":51,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":24,"open_issues":51,"watchers":8,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/245"},"html":{"href":"https://github.com/mipengine/mip2-extensions/pull/245"},"issue":{"href":"https://api.github.com/repos/mipengine/mip2-extensions/issues/245"},"comments":{"href":"https://api.github.com/repos/mipengine/mip2-extensions/issues/245/comments"},"review_comments":{"href":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/245/comments"},"review_comment":{"href":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mipengine/mip2-extensions/pulls/245/commits"},"statuses":{"href":"https://api.github.com/repos/mipengine/mip2-extensions/statuses/2c0c42f0812163e55682bcd83c2b22c5517f1db0"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"PengXing"}}