{"action":"created","comment":{"url":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/comments/85634877","pull_request_review_id":6342810,"id":85634877,"diff_hunk":"@@ -0,0 +1,396 @@\n+ext.useWpiUtil = { project ->\n+    project.tasks.create(name: \"downloadWpiUtil\") {\n+        description = 'Downloads the wpiutil maven dependency.'\n+        group = 'WPILib'\n+        def depFolder = \"${project.buildDir}/dependencies\"\n+        def utilZip = file(\"${depFolder}/wpiutil.zip\")\n+        outputs.file(utilZip)\n+        def wpiUtil\n+\n+        doFirst {\n+            def wpiUtilDependency = project.dependencies.create(\"edu.wpi.first.wpilib:wpiutil:+:${project.isArm ? 'arm' : 'desktop'}@zip\")\n+            def wpiUtilConfig = project.configurations.detachedConfiguration(wpiUtilDependency)\n+            wpiUtilConfig.setTransitive(false)\n+            wpiUtil = wpiUtilConfig.files[0].canonicalFile\n+        }\n+\n+        doLast {\n+            copy {\n+                from wpiUtil\n+                rename 'wpiutil(.+)', 'wpiutil.zip'\n+                into depFolder\n+            }\n+        }\n+    }\n+\n+    def wpiUtilUnzipLocation = \"${project.buildDir}/wpiutil\"\n+\n+    // Create a task that will unzip the wpiutil files into a temporary build directory\n+    project.tasks.create(name: \"unzipWpiUtil\", type: Copy) {\n+        description = 'Unzips the wpiutil maven dependency so that the include files and libraries can be used'\n+        group = 'WPILib'\n+        dependsOn project.tasks.downloadWpiUtil\n+        from zipTree(project.tasks.downloadWpiUtil.outputs.files.singleFile)\n+        into wpiUtilUnzipLocation\n+    }\n+\n+    project.ext.wpiUtil = wpiUtilUnzipLocation\n+    project.ext.wpiUtilInclude = \"$wpiUtilUnzipLocation/include\"\n+\n+    project.ext.addWpiUtilStaticLibraryLinks = { compileTask, linker, targetPlatform ->\n+        compileTask.dependsOn project.tasks.unzipWpiUtil\n+        String path = project.getPlatformPath2(targetPlatform)\n+        if (targetPlatform.operatingSystem.windows) {\n+            linker.args \"${project.wpiUtil}/${path}/wpiutil.lib\"\n+        } else {\n+            linker.args \"${project.wpiUtil}/${path}/libwpiutil.a\"\n+        }\n+    }\n+    \n+    project.ext.addWpiUtilSharedLibraryLinks = { compileTask, linker, targetPlatform ->\n+        compileTask.dependsOn project.tasks.unzipWpiUtil\n+        String path = project.getPlatformPath2(targetPlatform)\n+        if (targetPlatform.operatingSystem.windows) {\n+            linker.args \"${project.wpiUtil}/${path}/wpiutil.dll\"\n+        } else {\n+            linker.args \"${project.wpiUtil}/${path}/libwpiutil.so\"\n+        }\n+    }\n+}\n+\n+ext.useNetworkTables = { project -> \n+    project.tasks.create(name: \"downloadNetworkTables\") {\n+        description == 'Downloads the networktables maven dependency.'\n+        group = 'WPILib'\n+        def depFolder = \"${project.buildDir}/dependencies\"\n+        def ntZip = file(\"${depFolder}/NetworkTables.zip\")\n+        outputs.file(ntZip)\n+        def networkTables\n+        \n+        doFirst {\n+            def ntDependency = project.dependencies.create(\"edu.wpi.first.wpilib.networktables.cpp:NetworkTables:+:${project.isArm ? 'arm' : 'desktop'}@zip\")\n+            def ntConfig = project.configurations.detachedConfiguration(ntDependency)\n+            ntConfig.setTransitive(false)\n+            networkTables = ntConfig.files[0].canonicalFile\n+        }\n+\n+        doLast {\n+            copy {\n+                from networkTables\n+                rename 'NetworkTables(.+)', 'NetworkTables.zip'\n+                into depFolder\n+            }\n+        }\n+    }\n+    \n+    def networkTablesUnzipLocation = \"${project.buildDir}/networktables\"\n+\n+    // Create a task that will unzip the networktables files into a temporary build directory\n+    project.tasks.create(name: \"unzipNetworkTable\", type: Copy) {\n+        description = 'Unzips the networktables maven dependency so that the include files and libraries can be used'\n+        group = 'WPILib'\n+        dependsOn project.tasks.downloadNetworkTables\n+        from zipTree(project.tasks.downloadNetworkTables.outputs.files.singleFile)\n+        into networkTablesUnzipLocation\n+    }\n+\n+    project.ext.networkTables = networkTablesUnzipLocation\n+    project.ext.networkTablesInclude = \"$networkTablesUnzipLocation/include\"\n+\n+    project.ext.addNetworkTablesStaticLibraryLinks = { compileTask, linker, targetPlatform ->\n+        compileTask.dependsOn project.tasks.unzipNetworkTable\n+        String path = project.getPlatformPath2(targetPlatform)\n+        if (targetPlatform.operatingSystem.windows) {\n+            linker.args \"${project.networkTables}/${path}/networktables.lib\"\n+        } else {\n+            linker.args \"${project.networkTables}/${path}/libnetworktables.a\"\n+        }\n+    }\n+    \n+    project.ext.addNetworkTablesSharedLibraryLinks = { compileTask, linker, targetPlatform ->\n+        compileTask.dependsOn project.tasks.unzipNetworkTable\n+        String path = project.getPlatformPath2(targetPlatform)\n+        if (targetPlatform.operatingSystem.windows) {\n+            linker.args \"${project.networkTables}/${path}/networktables.dll\"\n+        } else {\n+            linker.args \"${project.networkTables}/${path}/libnetworktables.so\"\n+        }\n+    }\n+}\n+\n+ext.useWpiLib = { project -> \n+    if (project.isArm) {\n+        project.tasks.create(name: \"downloadWPILib\") {\n+            description == 'Downloads the wpilibc maven dependency.'\n+            group = 'WPILib'\n+            def depFolder = \"${project.buildDir}/dependencies\"\n+            def wpilibZip = file(\"${depFolder}/athena-wpilib.zip\")\n+            outputs.file(wpilibZip)\n+            def wpilib\n+            \n+            doFirst {\n+                def wpiLibDependency = project.dependencies.create(\"edu.wpi.first.wpilibc:athena:2017.+@zip\")\n+                def wpiLibConfig = project.configurations.detachedConfiguration(wpiLibDependency)\n+                wpiLibConfig.setTransitive(false)\n+                wpilib = wpiLibConfig.files[0].canonicalFile\n+            }\n+\n+            doLast {\n+                copy {\n+                    from wpilib\n+                    rename 'athena(.+)', 'athena-wpilib.zip'\n+                    into depFolder\n+                }\n+            }\n+        }\n+        \n+        project.tasks.create(name: \"downloadHal\") {\n+            description == 'Downloads the hal maven dependency.'\n+            group = 'WPILib'\n+            def depFolder = \"${project.buildDir}/dependencies\"\n+            def halZip = file(\"${depFolder}/hal.zip\")\n+            outputs.file(halZip)\n+            def hal\n+            \n+            doFirst {\n+                def halDependency = project.dependencies.create(\"edu.wpi.first.wpilib:hal:2017.+@zip\")\n+                def halConfig = project.configurations.detachedConfiguration(halDependency)\n+                halConfig.setTransitive(false)\n+                hal = halConfig.files[0].canonicalFile\n+            }\n+\n+            doLast {\n+                copy {\n+                    from hal\n+                    rename 'hal(.+)', 'hal.zip'\n+                    into depFolder\n+                }\n+            }\n+        }\n+        \n+        def wpiLibUnzipLocation = \"${project.buildDir}/wpilibc\"\n+        def halUnzipLocation = \"${project.buildDir}/hal\"\n+\n+        // Create a task that will unzip the wpilib files into a temporary build directory\n+        project.tasks.create(name: \"unzipWpiLib\", type: Copy) {\n+            description = 'Unzips the wpilibc maven dependency so that the include files and libraries can be used'\n+            group = 'WPILib'\n+            dependsOn project.tasks.downloadWPILib\n+            from zipTree(project.tasks.downloadWPILib.outputs.files.singleFile)\n+            into wpiLibUnzipLocation\n+        }\n+        \n+        // Create a task that will unzip the hal files into a temporary build directory\n+        project.tasks.create(name: \"unzipHal\", type: Copy) {\n+            description = 'Unzips the hal maven dependency so that the include files and libraries can be used'\n+            group = 'WPILib'\n+            dependsOn project.tasks.downloadHal\n+            from zipTree(project.tasks.downloadHal.outputs.files.singleFile)\n+            into halUnzipLocation\n+        }        \n+\n+        project.ext.wpiLib = wpiLibUnzipLocation\n+        project.ext.wpiLibInclude = \"$wpiLibUnzipLocation/include\"\n+        \n+        project.ext.hal = halUnzipLocation\n+        project.ext.halInclude = \"$halUnzipLocation/include\"\n+\n+        project.ext.addWpiLibLibraryLinks = { compileTask, linker, targetPlatform ->\n+            compileTask.dependsOn project.tasks.unzipWpiLib\n+            compileTask.dependsOn project.tasks.unzipHal\n+            \n+            linker.args \"{project.hal}/libHALAthena.so\"\n+            linker.args \"{project.hal}/libnilibraries.so\"\n+            linker.args \"${project.wpiLib}/libwpilibc.so\"\n+            linker.args << '-L' + halUnzipLocation\n+            linker.args << '-L' + wpiLibUnzipLocation\n+        }\n+    }\n+}\n+ext.getOpenCvPlatformPackage = { targetPlatform ->\n+    if (targetPlatform.architecture.arm) {\n+        return 'linux-arm'\n+    } else if (targetPlatform.operatingSystem.linux) {\n+        if (targetPlatform.architecture.amd64) {\n+            return 'linux-x86_64'\n+        } else {\n+            return 'linux-' + targetPlatform.architecture.name\n+        }\n+    } else if (targetPlatform.operatingSystem.windows) {\n+        if (targetPlatform.architecture.amd64) {\n+            return 'windows-x86_64'\n+        } else {\n+            return 'windows-' + targetPlatform.architecture.name\n+        }\n+    } else if (targetPlatform.operatingSystem.macOsX) {\n+        if (targetPlatform.architecture.amd64) {\n+            return 'osx-x86_64'\n+        } else {\n+            return 'osx-' + targetPlatform.architecture.name\n+        }\n+    } else {\n+        return targetPlatform.operatingSystem.name + '-' + targetPlatform.architecture.name\n+    }\n+}\n+\n+task downloadOpenCvHeaders() {\n+    description = 'Downloads the OpenCV Headers maven dependency.'\n+    group = 'WPILib'\n+    def depFolder = \"${buildDir}/dependencies\"\n+    def openCvHeadersZip = file(\"${depFolder}/opencv-headers.zip\")\n+    outputs.file(openCvHeadersZip)\n+    def openCvHeaders\n+\n+    doFirst {\n+        def openCvHeadersDependency = project.dependencies.create(\"org.opencv:opencv-headers:3.1.0@jar\")\n+        def openCvHeadersConfig = project.configurations.detachedConfiguration(openCvHeadersDependency)\n+        openCvHeadersConfig.setTransitive(false)\n+        openCvHeaders = openCvHeadersConfig.files[0].canonicalFile\n+    }\n+\n+    doLast {\n+        copy {\n+            from openCvHeaders\n+            rename 'opencv-headers(.+)', 'opencv-headers.zip'\n+            into depFolder\n+        }\n+    }\n+}\n+\n+ext.useOpenCv = { project ->\n+    def openCvUnzipLocation = \"${project.buildDir}/opencv\"\n+\n+    project.tasks.create(name: \"unzipOpenCvHeaders\", type: Copy) {\n+        description = 'Unzips the OpenCV maven dependency so that the include files and libraries can be used'\n+        group = 'OpenCv'\n+        dependsOn downloadOpenCvHeaders\n+        from zipTree(downloadOpenCvHeaders.outputs.files.singleFile)\n+        into \"${openCvUnzipLocation}/include\"\n+    }\n+\n+    project.ext.openCv = openCvUnzipLocation\n+    project.ext.openCvInclude = \"$openCvUnzipLocation/include\"\n+\n+    project.ext.addOpenCvLibraryLinks = { compileTask, linker, targetPlatform ->\n+        def openCvPlatform = project.getOpenCvPlatformPackage(targetPlatform)\n+        def openCvNativesFolder = \"${project.openCv}/${openCvPlatform}\"\n+\n+        if (project.tasks.findByPath(\"unzipOpenCvNatives_${openCvPlatform}\") == null) {\n+            project.tasks.create(name: \"downloadOpenCvNatives_${openCvPlatform}\") {\n+                description = 'Downloads the OpenCV natives maven dependency.'\n+                group = 'OpenCv'\n+                def depFolder = \"${project.buildDir}/dependencies\"\n+                def openCvNativesZip = file(\"${depFolder}/opencv-natives-${openCvPlatform}.zip\")\n+                outputs.file(openCvNativesZip)\n+                def openCvNatives\n+\n+                doFirst {\n+                    def openCvNativesDependency = project.dependencies.create(\"org.opencv:opencv-natives:3.1.0:${openCvPlatform}@jar\")\n+                    def openCvNativesConfig = project.configurations.detachedConfiguration(openCvNativesDependency)\n+                    openCvNativesConfig.setTransitive(false)\n+                    openCvNatives = openCvNativesConfig.files[0].canonicalFile\n+                }\n+\n+                doLast {\n+                    copy {\n+                        from openCvNatives\n+                        rename 'opencv-natives(.+)', \"opencv-natives-${openCvPlatform}.zip\"\n+                        into depFolder\n+                    }\n+                }\n+            }\n+\n+            project.tasks.create(name: \"unzipOpenCvNatives_${openCvPlatform}\", type: Copy) {\n+                description = 'Unzips the OpenCV maven dependency so that the include files and libraries can be used'\n+                group = 'OpenCv'\n+                dependsOn \"downloadOpenCvNatives_${openCvPlatform}\"\n+                from zipTree(project.tasks[\"downloadOpenCvNatives_${openCvPlatform}\"].outputs.files.singleFile)\n+                into openCvNativesFolder\n+                exclude '**/MANIFEST.MF'\n+            }\n+        }\n+\n+        if (project.includeJava && project.tasks.findByPath(\"unzipOpenCvJni_${openCvPlatform}\") == null) {\n+            project.tasks.create(name: \"downloadOpenCvJni_${openCvPlatform}\") {\n+                description = 'Downloads the OpenCV JNI maven dependency.'\n+                group = 'OpenCv'\n+                def depFolder = \"${project.buildDir}/dependencies\"\n+                def openCvJniZip = file(\"${depFolder}/opencv-jni-${openCvPlatform}.zip\")\n+                outputs.file(openCvJniZip)\n+                def openCvJni\n+\n+                doFirst {\n+                    def openCvJniDependency = project.dependencies.create(\"org.opencv:opencv-jni:3.1.0:${openCvPlatform}@jar\")\n+                    def openCvJniConfig = project.configurations.detachedConfiguration(openCvJniDependency)\n+                    openCvJniConfig.setTransitive(false)\n+                    openCvJni = openCvJniConfig.files[0].canonicalFile\n+                }\n+\n+                doLast {\n+                    copy {\n+                        from openCvJni\n+                        rename 'opencv-jni(.+)', \"opencv-jni-${openCvPlatform}.zip\"\n+                        into depFolder\n+                    }\n+                }\n+            }\n+\n+            project.tasks.create(name: \"unzipOpenCvJni_${openCvPlatform}\", type: Copy) {\n+                description = 'Unzips the OpenCV maven dependency so that the include files and libraries can be used'\n+                group = 'OpenCv'\n+                dependsOn \"downloadOpenCvJni_${openCvPlatform}\"\n+                from zipTree(project.tasks[\"downloadOpenCvJni_${openCvPlatform}\"].outputs.files.singleFile)\n+                into openCvNativesFolder\n+                exclude '**/MANIFEST.MF'\n+            }\n+        }\n+\n+        compileTask.dependsOn \"unzipOpenCvHeaders\", \"unzipOpenCvNatives_${openCvPlatform}\"\n+        if (project.includeJava) {\n+            compileTask.dependsOn \"unzipOpenCvJni_${openCvPlatform}\"\n+        }\n+        if (targetPlatform.architecture.arm) {\n+            linker.args \"${openCvNativesFolder}/libopencv_calib3d.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_features2d.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_flann.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_highgui.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_imgcodecs.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_imgproc.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_ml.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_objdetect.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_photo.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_shape.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_stitching.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_superres.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_video.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_videoio.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_videostab.so\"\n+            linker.args \"${openCvNativesFolder}/libopencv_core.so\"\n+            linker.args \"-ldl\"\n+            linker.args \"-lz\"\n+        } else if (targetPlatform.operatingSystem.windows) {\n+            linker.args \"${openCvNativesFolder}/opencv_core.lib\"\n+        } else {\n+            linker.args \"${openCvNativesFolder}/libopencv_calib3d.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_features2d.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_flann.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_highgui.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_imgcodecs.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_imgproc.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_ml.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_objdetect.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_photo.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_shape.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_stitching.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_superres.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_video.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_videoio.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_videostab.a\"\n+            linker.args \"${openCvNativesFolder}/libopencv_core.a\"\n+            linker.args \"${openCvNativesFolder}/liblibjpeg.a\"\n+            linker.args \"${openCvNativesFolder}/liblibpng.a\"\n+            linker.args \"-ldl\"\n+            linker.args \"-lz\"\n+        }\n+    }\n+}","path":"dependencies.gradle","position":396,"original_position":396,"commit_id":"808731ea0bd2f23ffc9864c90cc6275303e67f2f","original_commit_id":"808731ea0bd2f23ffc9864c90cc6275303e67f2f","user":{"login":"PeterJohnson","id":297126,"avatar_url":"https://avatars.githubusercontent.com/u/297126?v=3","gravatar_id":"","url":"https://api.github.com/users/PeterJohnson","html_url":"https://github.com/PeterJohnson","followers_url":"https://api.github.com/users/PeterJohnson/followers","following_url":"https://api.github.com/users/PeterJohnson/following{/other_user}","gists_url":"https://api.github.com/users/PeterJohnson/gists{/gist_id}","starred_url":"https://api.github.com/users/PeterJohnson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PeterJohnson/subscriptions","organizations_url":"https://api.github.com/users/PeterJohnson/orgs","repos_url":"https://api.github.com/users/PeterJohnson/repos","events_url":"https://api.github.com/users/PeterJohnson/events{/privacy}","received_events_url":"https://api.github.com/users/PeterJohnson/received_events","type":"User","site_admin":false},"body":"EOL at EOF","created_at":"2016-10-29T06:05:16Z","updated_at":"2016-10-29T06:05:16Z","html_url":"https://github.com/wpilibsuite/cameraserver/pull/4#discussion_r85634877","pull_request_url":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/4","_links":{"self":{"href":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/comments/85634877"},"html":{"href":"https://github.com/wpilibsuite/cameraserver/pull/4#discussion_r85634877"},"pull_request":{"href":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/4"}}},"pull_request":{"url":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/4","id":91427783,"html_url":"https://github.com/wpilibsuite/cameraserver/pull/4","diff_url":"https://github.com/wpilibsuite/cameraserver/pull/4.diff","patch_url":"https://github.com/wpilibsuite/cameraserver/pull/4.patch","issue_url":"https://api.github.com/repos/wpilibsuite/cameraserver/issues/4","number":4,"state":"open","locked":false,"title":"Moves dependencies to their own gradle file, and adds capabilities to link to ntcore and wpilib","user":{"login":"ThadHouse","id":7727148,"avatar_url":"https://avatars.githubusercontent.com/u/7727148?v=3","gravatar_id":"","url":"https://api.github.com/users/ThadHouse","html_url":"https://github.com/ThadHouse","followers_url":"https://api.github.com/users/ThadHouse/followers","following_url":"https://api.github.com/users/ThadHouse/following{/other_user}","gists_url":"https://api.github.com/users/ThadHouse/gists{/gist_id}","starred_url":"https://api.github.com/users/ThadHouse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ThadHouse/subscriptions","organizations_url":"https://api.github.com/users/ThadHouse/orgs","repos_url":"https://api.github.com/users/ThadHouse/repos","events_url":"https://api.github.com/users/ThadHouse/events{/privacy}","received_events_url":"https://api.github.com/users/ThadHouse/received_events","type":"User","site_admin":false},"body":null,"created_at":"2016-10-28T18:20:54Z","updated_at":"2016-10-29T06:05:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f57986f115b4b9d0fdd80a32e0ec2fd99030e11b","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/4/commits","review_comments_url":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/4/comments","review_comment_url":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/comments{/number}","comments_url":"https://api.github.com/repos/wpilibsuite/cameraserver/issues/4/comments","statuses_url":"https://api.github.com/repos/wpilibsuite/cameraserver/statuses/808731ea0bd2f23ffc9864c90cc6275303e67f2f","head":{"label":"ThadHouse:dependencies","ref":"dependencies","sha":"808731ea0bd2f23ffc9864c90cc6275303e67f2f","user":{"login":"ThadHouse","id":7727148,"avatar_url":"https://avatars.githubusercontent.com/u/7727148?v=3","gravatar_id":"","url":"https://api.github.com/users/ThadHouse","html_url":"https://github.com/ThadHouse","followers_url":"https://api.github.com/users/ThadHouse/followers","following_url":"https://api.github.com/users/ThadHouse/following{/other_user}","gists_url":"https://api.github.com/users/ThadHouse/gists{/gist_id}","starred_url":"https://api.github.com/users/ThadHouse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ThadHouse/subscriptions","organizations_url":"https://api.github.com/users/ThadHouse/orgs","repos_url":"https://api.github.com/users/ThadHouse/repos","events_url":"https://api.github.com/users/ThadHouse/events{/privacy}","received_events_url":"https://api.github.com/users/ThadHouse/received_events","type":"User","site_admin":false},"repo":{"id":72216570,"name":"cameraserver","full_name":"ThadHouse/cameraserver","owner":{"login":"ThadHouse","id":7727148,"avatar_url":"https://avatars.githubusercontent.com/u/7727148?v=3","gravatar_id":"","url":"https://api.github.com/users/ThadHouse","html_url":"https://github.com/ThadHouse","followers_url":"https://api.github.com/users/ThadHouse/followers","following_url":"https://api.github.com/users/ThadHouse/following{/other_user}","gists_url":"https://api.github.com/users/ThadHouse/gists{/gist_id}","starred_url":"https://api.github.com/users/ThadHouse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ThadHouse/subscriptions","organizations_url":"https://api.github.com/users/ThadHouse/orgs","repos_url":"https://api.github.com/users/ThadHouse/repos","events_url":"https://api.github.com/users/ThadHouse/events{/privacy}","received_events_url":"https://api.github.com/users/ThadHouse/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ThadHouse/cameraserver","description":"Camera access and streaming library","fork":true,"url":"https://api.github.com/repos/ThadHouse/cameraserver","forks_url":"https://api.github.com/repos/ThadHouse/cameraserver/forks","keys_url":"https://api.github.com/repos/ThadHouse/cameraserver/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ThadHouse/cameraserver/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ThadHouse/cameraserver/teams","hooks_url":"https://api.github.com/repos/ThadHouse/cameraserver/hooks","issue_events_url":"https://api.github.com/repos/ThadHouse/cameraserver/issues/events{/number}","events_url":"https://api.github.com/repos/ThadHouse/cameraserver/events","assignees_url":"https://api.github.com/repos/ThadHouse/cameraserver/assignees{/user}","branches_url":"https://api.github.com/repos/ThadHouse/cameraserver/branches{/branch}","tags_url":"https://api.github.com/repos/ThadHouse/cameraserver/tags","blobs_url":"https://api.github.com/repos/ThadHouse/cameraserver/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ThadHouse/cameraserver/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ThadHouse/cameraserver/git/refs{/sha}","trees_url":"https://api.github.com/repos/ThadHouse/cameraserver/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ThadHouse/cameraserver/statuses/{sha}","languages_url":"https://api.github.com/repos/ThadHouse/cameraserver/languages","stargazers_url":"https://api.github.com/repos/ThadHouse/cameraserver/stargazers","contributors_url":"https://api.github.com/repos/ThadHouse/cameraserver/contributors","subscribers_url":"https://api.github.com/repos/ThadHouse/cameraserver/subscribers","subscription_url":"https://api.github.com/repos/ThadHouse/cameraserver/subscription","commits_url":"https://api.github.com/repos/ThadHouse/cameraserver/commits{/sha}","git_commits_url":"https://api.github.com/repos/ThadHouse/cameraserver/git/commits{/sha}","comments_url":"https://api.github.com/repos/ThadHouse/cameraserver/comments{/number}","issue_comment_url":"https://api.github.com/repos/ThadHouse/cameraserver/issues/comments{/number}","contents_url":"https://api.github.com/repos/ThadHouse/cameraserver/contents/{+path}","compare_url":"https://api.github.com/repos/ThadHouse/cameraserver/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ThadHouse/cameraserver/merges","archive_url":"https://api.github.com/repos/ThadHouse/cameraserver/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ThadHouse/cameraserver/downloads","issues_url":"https://api.github.com/repos/ThadHouse/cameraserver/issues{/number}","pulls_url":"https://api.github.com/repos/ThadHouse/cameraserver/pulls{/number}","milestones_url":"https://api.github.com/repos/ThadHouse/cameraserver/milestones{/number}","notifications_url":"https://api.github.com/repos/ThadHouse/cameraserver/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ThadHouse/cameraserver/labels{/name}","releases_url":"https://api.github.com/repos/ThadHouse/cameraserver/releases{/id}","deployments_url":"https://api.github.com/repos/ThadHouse/cameraserver/deployments","created_at":"2016-10-28T14:54:26Z","updated_at":"2016-10-28T14:54:27Z","pushed_at":"2016-10-28T18:20:54Z","git_url":"git://github.com/ThadHouse/cameraserver.git","ssh_url":"git@github.com:ThadHouse/cameraserver.git","clone_url":"https://github.com/ThadHouse/cameraserver.git","svn_url":"https://github.com/ThadHouse/cameraserver","homepage":null,"size":662,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"wpilibsuite:master","ref":"master","sha":"87c7a9db544273cfe808489b2246d6ad5424688b","user":{"login":"wpilibsuite","id":19267233,"avatar_url":"https://avatars.githubusercontent.com/u/19267233?v=3","gravatar_id":"","url":"https://api.github.com/users/wpilibsuite","html_url":"https://github.com/wpilibsuite","followers_url":"https://api.github.com/users/wpilibsuite/followers","following_url":"https://api.github.com/users/wpilibsuite/following{/other_user}","gists_url":"https://api.github.com/users/wpilibsuite/gists{/gist_id}","starred_url":"https://api.github.com/users/wpilibsuite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wpilibsuite/subscriptions","organizations_url":"https://api.github.com/users/wpilibsuite/orgs","repos_url":"https://api.github.com/users/wpilibsuite/repos","events_url":"https://api.github.com/users/wpilibsuite/events{/privacy}","received_events_url":"https://api.github.com/users/wpilibsuite/received_events","type":"Organization","site_admin":false},"repo":{"id":65683120,"name":"cameraserver","full_name":"wpilibsuite/cameraserver","owner":{"login":"wpilibsuite","id":19267233,"avatar_url":"https://avatars.githubusercontent.com/u/19267233?v=3","gravatar_id":"","url":"https://api.github.com/users/wpilibsuite","html_url":"https://github.com/wpilibsuite","followers_url":"https://api.github.com/users/wpilibsuite/followers","following_url":"https://api.github.com/users/wpilibsuite/following{/other_user}","gists_url":"https://api.github.com/users/wpilibsuite/gists{/gist_id}","starred_url":"https://api.github.com/users/wpilibsuite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wpilibsuite/subscriptions","organizations_url":"https://api.github.com/users/wpilibsuite/orgs","repos_url":"https://api.github.com/users/wpilibsuite/repos","events_url":"https://api.github.com/users/wpilibsuite/events{/privacy}","received_events_url":"https://api.github.com/users/wpilibsuite/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/wpilibsuite/cameraserver","description":"Camera access and streaming library","fork":false,"url":"https://api.github.com/repos/wpilibsuite/cameraserver","forks_url":"https://api.github.com/repos/wpilibsuite/cameraserver/forks","keys_url":"https://api.github.com/repos/wpilibsuite/cameraserver/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wpilibsuite/cameraserver/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wpilibsuite/cameraserver/teams","hooks_url":"https://api.github.com/repos/wpilibsuite/cameraserver/hooks","issue_events_url":"https://api.github.com/repos/wpilibsuite/cameraserver/issues/events{/number}","events_url":"https://api.github.com/repos/wpilibsuite/cameraserver/events","assignees_url":"https://api.github.com/repos/wpilibsuite/cameraserver/assignees{/user}","branches_url":"https://api.github.com/repos/wpilibsuite/cameraserver/branches{/branch}","tags_url":"https://api.github.com/repos/wpilibsuite/cameraserver/tags","blobs_url":"https://api.github.com/repos/wpilibsuite/cameraserver/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wpilibsuite/cameraserver/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wpilibsuite/cameraserver/git/refs{/sha}","trees_url":"https://api.github.com/repos/wpilibsuite/cameraserver/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wpilibsuite/cameraserver/statuses/{sha}","languages_url":"https://api.github.com/repos/wpilibsuite/cameraserver/languages","stargazers_url":"https://api.github.com/repos/wpilibsuite/cameraserver/stargazers","contributors_url":"https://api.github.com/repos/wpilibsuite/cameraserver/contributors","subscribers_url":"https://api.github.com/repos/wpilibsuite/cameraserver/subscribers","subscription_url":"https://api.github.com/repos/wpilibsuite/cameraserver/subscription","commits_url":"https://api.github.com/repos/wpilibsuite/cameraserver/commits{/sha}","git_commits_url":"https://api.github.com/repos/wpilibsuite/cameraserver/git/commits{/sha}","comments_url":"https://api.github.com/repos/wpilibsuite/cameraserver/comments{/number}","issue_comment_url":"https://api.github.com/repos/wpilibsuite/cameraserver/issues/comments{/number}","contents_url":"https://api.github.com/repos/wpilibsuite/cameraserver/contents/{+path}","compare_url":"https://api.github.com/repos/wpilibsuite/cameraserver/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wpilibsuite/cameraserver/merges","archive_url":"https://api.github.com/repos/wpilibsuite/cameraserver/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wpilibsuite/cameraserver/downloads","issues_url":"https://api.github.com/repos/wpilibsuite/cameraserver/issues{/number}","pulls_url":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls{/number}","milestones_url":"https://api.github.com/repos/wpilibsuite/cameraserver/milestones{/number}","notifications_url":"https://api.github.com/repos/wpilibsuite/cameraserver/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wpilibsuite/cameraserver/labels{/name}","releases_url":"https://api.github.com/repos/wpilibsuite/cameraserver/releases{/id}","deployments_url":"https://api.github.com/repos/wpilibsuite/cameraserver/deployments","created_at":"2016-08-14T19:35:35Z","updated_at":"2016-10-28T07:55:36Z","pushed_at":"2016-10-28T18:20:54Z","git_url":"git://github.com/wpilibsuite/cameraserver.git","ssh_url":"git@github.com:wpilibsuite/cameraserver.git","clone_url":"https://github.com/wpilibsuite/cameraserver.git","svn_url":"https://github.com/wpilibsuite/cameraserver","homepage":null,"size":668,"stargazers_count":1,"watchers_count":1,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":2,"forks":1,"open_issues":2,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/4"},"html":{"href":"https://github.com/wpilibsuite/cameraserver/pull/4"},"issue":{"href":"https://api.github.com/repos/wpilibsuite/cameraserver/issues/4"},"comments":{"href":"https://api.github.com/repos/wpilibsuite/cameraserver/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/wpilibsuite/cameraserver/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/wpilibsuite/cameraserver/statuses/808731ea0bd2f23ffc9864c90cc6275303e67f2f"}}}}
{"actor":{"display_login":"PeterJohnson"}}