payload: {"action":"created","comment":{"url":"https://api.github.com/repos/appium/appium-android-driver/pulls/comments/356133019","pull_request_review_id":329950528,"id":356133019,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDM1NjEzMzAxOQ==","diff_hunk":"@@ -0,0 +1,405 @@\n+import _ from 'lodash';\n+import { fs, system } from 'appium-support';\n+import log from '../logger';\n+import { exec, SubProcess } from 'teen_process';\n+import { checkPortStatus } from 'portscanner';\n+import http from 'http';\n+import net from 'net';\n+import B from 'bluebird';\n+import { waitForCondition } from 'asyncbox';\n+import { spawn } from 'child_process';\n+import { quote } from 'shell-quote';\n+\n+const commands = {};\n+\n+const RECORDING_INTERVAL_SEC = 5;\n+const STREAMING_STARTUP_TIMEOUT_MS = 5000;\n+const GSTREAMER_BINARY = `gst-launch-1.0${system.isWindows() ? '.exe' : ''}`;\n+const GST_INSPECT_BINARY = `gst-inspect-1.0${system.isWindows() ? '.exe' : ''}`;\n+const REQUIRED_GST_PLUGINS = {\n+  avdec_h264: 'gst-libav',\n+  h264parse: 'gst-plugins-bad',\n+  jpegenc: 'gst-plugins-good',\n+  tcpserversink: 'gst-plugins-base',\n+  multipartmux: 'gst-plugins-good',\n+};\n+const SCREENRECORD_BINARY = 'screenrecord';\n+const GST_TUTORIAL_URL = 'https://gstreamer.freedesktop.org/documentation/installing/index.html';\n+const DEFAULT_HOST = '127.0.0.1';\n+const TCP_HOST = '127.0.0.1';\n+const DEFAULT_PORT = 8093;\n+const DEFAULT_QUALITY = 70;\n+const DEFAULT_BITRATE = 4000000; // Mbps\n+const BOUNDARY_STRING = '--2ae9746887f170b8cf7c271047ce314c';\n+\n+\n+async function verifyStreamingRequirements (adb) {\n+  if (!_.trim(await adb.shell(['which', SCREENRECORD_BINARY]))) {\n+    throw new Error(\n+      `The required '${SCREENRECORD_BINARY}' binary is not available on the device under test`);\n+  }\n+\n+  for (const binaryName of [GSTREAMER_BINARY, GST_INSPECT_BINARY]) {\n+    try {\n+      await fs.which(binaryName);\n+    } catch (e) {\n+      throw new Error(`The ${binaryName} is not available in PATH on the host system. ` +\n+        `See ${GST_TUTORIAL_URL} for more details on how to install it.`);\n+    }\n+  }\n+\n+  for (const [name, modName] of _.toPairs(REQUIRED_GST_PLUGINS)) {\n+    const {stdout} = await exec(GST_INSPECT_BINARY, [name]);\n+    if (!_.includes(stdout, modName)) {\n+      throw new Error(\n+        `The required GStreamer plugin '${name}' from '${modName}' module is not installed. ` +\n+        `See ${GST_TUTORIAL_URL} for more details on how to install it.`);\n+    }\n+  }\n+}\n+\n+async function getDeviceInfo (adb) {\n+  const output = await adb.shell(['dumpsys', 'display']);\n+  const widthMatch = /\\bdeviceWidth=(\\d+)/.exec(output);\n+  if (!widthMatch) {\n+    throw new Error(`Cannot parse the device width from ${output}`);\n+  }\n+  const heightMatch = /\\bdeviceHeight=(\\d+)/.exec(output);\n+  if (!heightMatch) {\n+    throw new Error(`Cannot parse the device height from ${output}`);\n+  }\n+  const fpsMatch = /\\bfps=(\\d+)/.exec(output);\n+  if (!fpsMatch) {\n+    throw new Error(`Cannot parse the device FPS from ${output}`);\n+  }\n+  return {\n+    width: parseInt(widthMatch[1], 10),\n+    height: parseInt(heightMatch[1], 10),\n+    fps: parseInt(fpsMatch[1], 10),\n+  };\n+}\n+\n+async function initDeviceStreamingProc (adb, deviceInfo, opts = {}) {\n+  const {\n+    width,\n+    height,\n+    bitRate,\n+  } = opts;\n+  const adjustedWidth = parseInt(width, 10) || deviceInfo.width;\n+  const adjustedHeight = parseInt(height, 10) || deviceInfo.height;\n+  const adjustedBitrate = parseInt(bitRate, 10) || DEFAULT_BITRATE;\n+  let screenRecordCmd = SCREENRECORD_BINARY +\n+    ` --output-format=h264` +\n+    // 5 seconds is fine to detect rotation changes\n+    ` --time-limit=${RECORDING_INTERVAL_SEC}`;\n+  if (width || height) {\n+    screenRecordCmd += ` --size=${adjustedWidth}x${adjustedHeight}`;\n+  }\n+  if (bitRate) {\n+    screenRecordCmd += ` --bit-rate=${adjustedBitrate}`;\n+  }\n+  const adbArgs = [\n+    ...adb.executable.defaultArgs,\n+    'exec-out',\n+    // The loop is required, because by default the maximum record duration\n+    // for screenrecord is always limited\n+    `while true; do ${screenRecordCmd} -; done`,\n+  ];\n+  const deviceStreaming = spawn(adb.executable.path, adbArgs);","path":"lib/commands/streamscreen.js","position":108,"original_position":108,"commit_id":"0c25410c565de10dfa8976fc508ad42f4097789e","original_commit_id":"0c25410c565de10dfa8976fc508ad42f4097789e","user":{"login":"imurchie","id":2614354,"node_id":"MDQ6VXNlcjI2MTQzNTQ=","avatar_url":"https://avatars2.githubusercontent.com/u/2614354?v=4","gravatar_id":"","url":"https://api.github.com/users/imurchie","html_url":"https://github.com/imurchie","followers_url":"https://api.github.com/users/imurchie/followers","following_url":"https://api.github.com/users/imurchie/following{/other_user}","gists_url":"https://api.github.com/users/imurchie/gists{/gist_id}","starred_url":"https://api.github.com/users/imurchie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/imurchie/subscriptions","organizations_url":"https://api.github.com/users/imurchie/orgs","repos_url":"https://api.github.com/users/imurchie/repos","events_url":"https://api.github.com/users/imurchie/events{/privacy}","received_events_url":"https://api.github.com/users/imurchie/received_events","type":"User","site_admin":false},"body":"No way to do this command using `teen_process`?","created_at":"2019-12-10T16:14:36Z","updated_at":"2019-12-10T16:16:13Z","html_url":"https://github.com/appium/appium-android-driver/pull/586#discussion_r356133019","pull_request_url":"https://api.github.com/repos/appium/appium-android-driver/pulls/586","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/appium/appium-android-driver/pulls/comments/356133019"},"html":{"href":"https://github.com/appium/appium-android-driver/pull/586#discussion_r356133019"},"pull_request":{"href":"https://api.github.com/repos/appium/appium-android-driver/pulls/586"}}},"pull_request":{"url":"https://api.github.com/repos/appium/appium-android-driver/pulls/586","id":351291022,"node_id":"MDExOlB1bGxSZXF1ZXN0MzUxMjkxMDIy","html_url":"https://github.com/appium/appium-android-driver/pull/586","diff_url":"https://github.com/appium/appium-android-driver/pull/586.diff","patch_url":"https://github.com/appium/appium-android-driver/pull/586.patch","issue_url":"https://api.github.com/repos/appium/appium-android-driver/issues/586","number":586,"state":"open","locked":false,"title":"feat: Add a possibility to stream the device's screen using adb+gstreamer","user":{"login":"mykola-mokhnach","id":7767781,"node_id":"MDQ6VXNlcjc3Njc3ODE=","avatar_url":"https://avatars1.githubusercontent.com/u/7767781?v=4","gravatar_id":"","url":"https://api.github.com/users/mykola-mokhnach","html_url":"https://github.com/mykola-mokhnach","followers_url":"https://api.github.com/users/mykola-mokhnach/followers","following_url":"https://api.github.com/users/mykola-mokhnach/following{/other_user}","gists_url":"https://api.github.com/users/mykola-mokhnach/gists{/gist_id}","starred_url":"https://api.github.com/users/mykola-mokhnach/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mykola-mokhnach/subscriptions","organizations_url":"https://api.github.com/users/mykola-mokhnach/orgs","repos_url":"https://api.github.com/users/mykola-mokhnach/repos","events_url":"https://api.github.com/users/mykola-mokhnach/events{/privacy}","received_events_url":"https://api.github.com/users/mykola-mokhnach/received_events","type":"User","site_admin":false},"body":"This feature does the same trick as we do in iOS, although it requires GStreamer to be installed on the host machine. As the result, it is possible now to broadcast the device screen to any MJPEG client (including Chrome browser), which might be extremely useful for further integration with Appium Desktop","created_at":"2019-12-10T09:41:39Z","updated_at":"2019-12-10T16:16:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"16dc44c1ddfb63bbc367710ca2313ecbb1cfb97f","assignee":null,"assignees":[],"requested_reviewers":[{"login":"jlipps","id":605053,"node_id":"MDQ6VXNlcjYwNTA1Mw==","avatar_url":"https://avatars3.githubusercontent.com/u/605053?v=4","gravatar_id":"","url":"https://api.github.com/users/jlipps","html_url":"https://github.com/jlipps","followers_url":"https://api.github.com/users/jlipps/followers","following_url":"https://api.github.com/users/jlipps/following{/other_user}","gists_url":"https://api.github.com/users/jlipps/gists{/gist_id}","starred_url":"https://api.github.com/users/jlipps/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jlipps/subscriptions","organizations_url":"https://api.github.com/users/jlipps/orgs","repos_url":"https://api.github.com/users/jlipps/repos","events_url":"https://api.github.com/users/jlipps/events{/privacy}","received_events_url":"https://api.github.com/users/jlipps/received_events","type":"User","site_admin":false},{"login":"KazuCocoa","id":5511591,"node_id":"MDQ6VXNlcjU1MTE1OTE=","avatar_url":"https://avatars3.githubusercontent.com/u/5511591?v=4","gravatar_id":"","url":"https://api.github.com/users/KazuCocoa","html_url":"https://github.com/KazuCocoa","followers_url":"https://api.github.com/users/KazuCocoa/followers","following_url":"https://api.github.com/users/KazuCocoa/following{/other_user}","gists_url":"https://api.github.com/users/KazuCocoa/gists{/gist_id}","starred_url":"https://api.github.com/users/KazuCocoa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KazuCocoa/subscriptions","organizations_url":"https://api.github.com/users/KazuCocoa/orgs","repos_url":"https://api.github.com/users/KazuCocoa/repos","events_url":"https://api.github.com/users/KazuCocoa/events{/privacy}","received_events_url":"https://api.github.com/users/KazuCocoa/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/appium/appium-android-driver/pulls/586/commits","review_comments_url":"https://api.github.com/repos/appium/appium-android-driver/pulls/586/comments","review_comment_url":"https://api.github.com/repos/appium/appium-android-driver/pulls/comments{/number}","comments_url":"https://api.github.com/repos/appium/appium-android-driver/issues/586/comments","statuses_url":"https://api.github.com/repos/appium/appium-android-driver/statuses/0c25410c565de10dfa8976fc508ad42f4097789e","head":{"label":"mykola-mokhnach:stream","ref":"stream","sha":"0c25410c565de10dfa8976fc508ad42f4097789e","user":{"login":"mykola-mokhnach","id":7767781,"node_id":"MDQ6VXNlcjc3Njc3ODE=","avatar_url":"https://avatars1.githubusercontent.com/u/7767781?v=4","gravatar_id":"","url":"https://api.github.com/users/mykola-mokhnach","html_url":"https://github.com/mykola-mokhnach","followers_url":"https://api.github.com/users/mykola-mokhnach/followers","following_url":"https://api.github.com/users/mykola-mokhnach/following{/other_user}","gists_url":"https://api.github.com/users/mykola-mokhnach/gists{/gist_id}","starred_url":"https://api.github.com/users/mykola-mokhnach/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mykola-mokhnach/subscriptions","organizations_url":"https://api.github.com/users/mykola-mokhnach/orgs","repos_url":"https://api.github.com/users/mykola-mokhnach/repos","events_url":"https://api.github.com/users/mykola-mokhnach/events{/privacy}","received_events_url":"https://api.github.com/users/mykola-mokhnach/received_events","type":"User","site_admin":false},"repo":{"id":84955763,"node_id":"MDEwOlJlcG9zaXRvcnk4NDk1NTc2Mw==","name":"appium-android-driver","full_name":"mykola-mokhnach/appium-android-driver","private":false,"owner":{"login":"mykola-mokhnach","id":7767781,"node_id":"MDQ6VXNlcjc3Njc3ODE=","avatar_url":"https://avatars1.githubusercontent.com/u/7767781?v=4","gravatar_id":"","url":"https://api.github.com/users/mykola-mokhnach","html_url":"https://github.com/mykola-mokhnach","followers_url":"https://api.github.com/users/mykola-mokhnach/followers","following_url":"https://api.github.com/users/mykola-mokhnach/following{/other_user}","gists_url":"https://api.github.com/users/mykola-mokhnach/gists{/gist_id}","starred_url":"https://api.github.com/users/mykola-mokhnach/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mykola-mokhnach/subscriptions","organizations_url":"https://api.github.com/users/mykola-mokhnach/orgs","repos_url":"https://api.github.com/users/mykola-mokhnach/repos","events_url":"https://api.github.com/users/mykola-mokhnach/events{/privacy}","received_events_url":"https://api.github.com/users/mykola-mokhnach/received_events","type":"User","site_admin":false},"html_url":"https://github.com/mykola-mokhnach/appium-android-driver","description":"Android Driver for Appium","fork":true,"url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver","forks_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/forks","keys_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/teams","hooks_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/hooks","issue_events_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/issues/events{/number}","events_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/events","assignees_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/assignees{/user}","branches_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/branches{/branch}","tags_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/tags","blobs_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/git/refs{/sha}","trees_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/statuses/{sha}","languages_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/languages","stargazers_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/stargazers","contributors_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/contributors","subscribers_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/subscribers","subscription_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/subscription","commits_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/commits{/sha}","git_commits_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/git/commits{/sha}","comments_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/comments{/number}","issue_comment_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/issues/comments{/number}","contents_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/contents/{+path}","compare_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/merges","archive_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/downloads","issues_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/issues{/number}","pulls_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/pulls{/number}","milestones_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/milestones{/number}","notifications_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/labels{/name}","releases_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/releases{/id}","deployments_url":"https://api.github.com/repos/mykola-mokhnach/appium-android-driver/deployments","created_at":"2017-03-14T14:02:17Z","updated_at":"2019-11-28T09:13:32Z","pushed_at":"2019-12-10T10:27:37Z","git_url":"git://github.com/mykola-mokhnach/appium-android-driver.git","ssh_url":"git@github.com:mykola-mokhnach/appium-android-driver.git","clone_url":"https://github.com/mykola-mokhnach/appium-android-driver.git","svn_url":"https://github.com/mykola-mokhnach/appium-android-driver","homepage":null,"size":15153,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"appium:master","ref":"master","sha":"5d515cd8e5980b32f6239ecc4def3b150c50812b","user":{"login":"appium","id":3221291,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyMjEyOTE=","avatar_url":"https://avatars2.githubusercontent.com/u/3221291?v=4","gravatar_id":"","url":"https://api.github.com/users/appium","html_url":"https://github.com/appium","followers_url":"https://api.github.com/users/appium/followers","following_url":"https://api.github.com/users/appium/following{/other_user}","gists_url":"https://api.github.com/users/appium/gists{/gist_id}","starred_url":"https://api.github.com/users/appium/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appium/subscriptions","organizations_url":"https://api.github.com/users/appium/orgs","repos_url":"https://api.github.com/users/appium/repos","events_url":"https://api.github.com/users/appium/events{/privacy}","received_events_url":"https://api.github.com/users/appium/received_events","type":"Organization","site_admin":false},"repo":{"id":39916403,"node_id":"MDEwOlJlcG9zaXRvcnkzOTkxNjQwMw==","name":"appium-android-driver","full_name":"appium/appium-android-driver","private":false,"owner":{"login":"appium","id":3221291,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyMjEyOTE=","avatar_url":"https://avatars2.githubusercontent.com/u/3221291?v=4","gravatar_id":"","url":"https://api.github.com/users/appium","html_url":"https://github.com/appium","followers_url":"https://api.github.com/users/appium/followers","following_url":"https://api.github.com/users/appium/following{/other_user}","gists_url":"https://api.github.com/users/appium/gists{/gist_id}","starred_url":"https://api.github.com/users/appium/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appium/subscriptions","organizations_url":"https://api.github.com/users/appium/orgs","repos_url":"https://api.github.com/users/appium/repos","events_url":"https://api.github.com/users/appium/events{/privacy}","received_events_url":"https://api.github.com/users/appium/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/appium/appium-android-driver","description":"Android Driver for Appium","fork":false,"url":"https://api.github.com/repos/appium/appium-android-driver","forks_url":"https://api.github.com/repos/appium/appium-android-driver/forks","keys_url":"https://api.github.com/repos/appium/appium-android-driver/keys{/key_id}","collaborators_url":"https://api.github.com/repos/appium/appium-android-driver/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/appium/appium-android-driver/teams","hooks_url":"https://api.github.com/repos/appium/appium-android-driver/hooks","issue_events_url":"https://api.github.com/repos/appium/appium-android-driver/issues/events{/number}","events_url":"https://api.github.com/repos/appium/appium-android-driver/events","assignees_url":"https://api.github.com/repos/appium/appium-android-driver/assignees{/user}","branches_url":"https://api.github.com/repos/appium/appium-android-driver/branches{/branch}","tags_url":"https://api.github.com/repos/appium/appium-android-driver/tags","blobs_url":"https://api.github.com/repos/appium/appium-android-driver/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/appium/appium-android-driver/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/appium/appium-android-driver/git/refs{/sha}","trees_url":"https://api.github.com/repos/appium/appium-android-driver/git/trees{/sha}","statuses_url":"https://api.github.com/repos/appium/appium-android-driver/statuses/{sha}","languages_url":"https://api.github.com/repos/appium/appium-android-driver/languages","stargazers_url":"https://api.github.com/repos/appium/appium-android-driver/stargazers","contributors_url":"https://api.github.com/repos/appium/appium-android-driver/contributors","subscribers_url":"https://api.github.com/repos/appium/appium-android-driver/subscribers","subscription_url":"https://api.github.com/repos/appium/appium-android-driver/subscription","commits_url":"https://api.github.com/repos/appium/appium-android-driver/commits{/sha}","git_commits_url":"https://api.github.com/repos/appium/appium-android-driver/git/commits{/sha}","comments_url":"https://api.github.com/repos/appium/appium-android-driver/comments{/number}","issue_comment_url":"https://api.github.com/repos/appium/appium-android-driver/issues/comments{/number}","contents_url":"https://api.github.com/repos/appium/appium-android-driver/contents/{+path}","compare_url":"https://api.github.com/repos/appium/appium-android-driver/compare/{base}...{head}","merges_url":"https://api.github.com/repos/appium/appium-android-driver/merges","archive_url":"https://api.github.com/repos/appium/appium-android-driver/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/appium/appium-android-driver/downloads","issues_url":"https://api.github.com/repos/appium/appium-android-driver/issues{/number}","pulls_url":"https://api.github.com/repos/appium/appium-android-driver/pulls{/number}","milestones_url":"https://api.github.com/repos/appium/appium-android-driver/milestones{/number}","notifications_url":"https://api.github.com/repos/appium/appium-android-driver/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/appium/appium-android-driver/labels{/name}","releases_url":"https://api.github.com/repos/appium/appium-android-driver/releases{/id}","deployments_url":"https://api.github.com/repos/appium/appium-android-driver/deployments","created_at":"2015-07-29T21:07:42Z","updated_at":"2019-12-09T16:22:17Z","pushed_at":"2019-12-10T10:27:39Z","git_url":"git://github.com/appium/appium-android-driver.git","ssh_url":"git@github.com:appium/appium-android-driver.git","clone_url":"https://github.com/appium/appium-android-driver.git","svn_url":"https://github.com/appium/appium-android-driver","homepage":null,"size":15163,"stargazers_count":133,"watchers_count":133,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":147,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":3,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":147,"open_issues":3,"watchers":133,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/appium/appium-android-driver/pulls/586"},"html":{"href":"https://github.com/appium/appium-android-driver/pull/586"},"issue":{"href":"https://api.github.com/repos/appium/appium-android-driver/issues/586"},"comments":{"href":"https://api.github.com/repos/appium/appium-android-driver/issues/586/comments"},"review_comments":{"href":"https://api.github.com/repos/appium/appium-android-driver/pulls/586/comments"},"review_comment":{"href":"https://api.github.com/repos/appium/appium-android-driver/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/appium/appium-android-driver/pulls/586/commits"},"statuses":{"href":"https://api.github.com/repos/appium/appium-android-driver/statuses/0c25410c565de10dfa8976fc508ad42f4097789e"}},"author_association":"CONTRIBUTOR"}}
other: {"actor":{"display_login":"imurchie"}}