{"action":"created","comment":{"url":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/comments/71813702","id":71813702,"diff_hunk":"@@ -0,0 +1,171 @@\n+/*\n+ * Copyright (c) 2015 The Ontario Institute for Cancer Research. All rights reserved.                             \n+ *                                                                                                               \n+ * This program and the accompanying materials are made available under the terms of the GNU Public License v3.0.\n+ * You should have received a copy of the GNU General Public License along with                                  \n+ * this program. If not, see <http://www.gnu.org/licenses/>.                                                     \n+ *                                                                                                               \n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY                           \n+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES                          \n+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT                           \n+ * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,                                \n+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED                          \n+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;                               \n+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER                              \n+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN                         \n+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ */\n+package org.icgc.dcc.portal.server.service;\n+\n+import java.net.URL;\n+import java.util.List;\n+\n+import org.icgc.dcc.portal.server.config.ServerProperties.SoftwareProperties;\n+import org.springframework.stereotype.Service;\n+\n+import com.fasterxml.jackson.databind.ObjectMapper;\n+\n+import lombok.Data;\n+import lombok.SneakyThrows;\n+import lombok.val;\n+\n+@Service\n+public class SoftwareService {\n+\n+  /**\n+   * Constants.\n+   */\n+  private static final ObjectMapper MAPPER = new ObjectMapper();\n+\n+  /**\n+   * Configuration.\n+   */\n+  private String mavenRepositoryUrl = \"https://artifacts.oicr.on.ca/artifactory\";\n+\n+  @SneakyThrows\n+  public List<ArtifactFolder> getVersions(String artifactId, SoftwareProperties config) {\n+    String versionsUrl;\n+    versionsUrl = mavenRepositoryUrl + \"/api/storage/\" + config.getIcgcRepository() + \"/\" +\n+        artifactId;\n+    val url = new URL(versionsUrl);\n+    val response = MAPPER.readValue(url, ArtifactFolderResults.class);\n+    return response.children;\n+  }\n+\n+  @SneakyThrows\n+  public List<MavenArtifactVersion> getMavenVersions(String artifactId, SoftwareProperties config) {\n+    val versionsUrl = mavenRepositoryUrl + \"/api/search/versions?g=\" + config.getGroupId() + \"&a=\" +\n+        artifactId + \"&repos=\" + config.getRepository();\n+    val url = new URL(versionsUrl);\n+    val response = MAPPER.readValue(url, MavenArtifactResults.class);\n+    return response.results;\n+  }\n+\n+  public String getLatestVersionUrl(SoftwareProperties config) {\n+    return getVersionUrl(\"%5BRELEASE%5D\", config.getArtifactId(), config);\n+  }\n+\n+  public String getLatestICGCGetVersionUrl(String os, SoftwareProperties config) {\n+    List<ArtifactFolder> result = getVersions(\"icgc-get\", config);\n+\n+    return getICGCGetVersionUrl(\"0.2.10\", os, config);\n+  }\n+\n+  public String getVersionChecksumUrl(String version, SoftwareProperties config) {\n+    return getVersionUrl(version, config.getArtifactId(), config) + \".md5\";\n+  }\n+\n+  public String getVersionSignatureUrl(String version, SoftwareProperties config) {\n+    return getVersionUrl(version, config.getArtifactId(), config) + \".asc\";\n+  }\n+\n+  public String getICGCGetVersionUrl(String version, String os, SoftwareProperties config) {\n+    String classifier;\n+    if (os.equals(\"linux\")) {\n+      classifier = config.getLinuxClassifier();\n+    } else {\n+      classifier = config.getOsxClassifier();\n+    }\n+    return getVersionUrl(version, config.getIcgcArtifactId(), config) + classifier + \".zip\";\n+  }\n+\n+  public String getVersionUrl(String version, String artifactId, SoftwareProperties config) {\n+    if (artifactId.equals(\"icgc-get\")) {\n+      return getRepositoryUrl(artifactId, config) + \"/\" + artifactId + \"/\" + version + \"/\" + artifactId + \"_v\" + version\n+          + \"_\";\n+    }\n+    val classifier = config.getClassifier();\n+    return getGroupUrl(config) + \"/\" + artifactId + \"/\" + version + \"/\" + artifactId + \"-\" + version + \"-\"\n+        + classifier + \".tar.gz\";\n+  }\n+\n+  private String getGroupUrl(SoftwareProperties config) {\n+    val groupId = config.getGroupId();\n+    return getRepositoryUrl(\"icgc-storage-client\", config) + \"/\" + groupId.replaceAll(\"\\\\.\", \"/\");\n+  }\n+\n+  private String getRepositoryUrl(String artifactId, SoftwareProperties config) {\n+    String repository;\n+    if (artifactId.equals(\"icgc-get\")) {\n+      repository = config.getIcgcRepository();\n+    } else {\n+      repository = config.getRepository();\n+    }\n+    return mavenRepositoryUrl + \"/simple/\" + repository;\n+  }\n+\n+  @Data\n+  public static class MavenArtifactResults {\n+\n+    List<MavenArtifactVersion> results;\n+\n+  }\n+\n+  @Data\n+  public static class MavenArtifactVersion {\n+\n+    String version;\n+    boolean integration;\n+\n+  }\n+\n+  @Data\n+  public static class ArtifactFolderResults {\n+\n+    String repo;\n+    String Path;\n+    String created;\n+    String createdBy;\n+    String lastModified;\n+    String modifiedBy;\n+    String lastUpdated;\n+    List<ArtifactFolder> children;\n+    String uri;\n+\n+  }\n+\n+  @Data\n+  public static class ArtifactFolder {\n+\n+    String uri;\n+    boolean folder;\n+\n+  }\n+\n+  public int compareVersion(String[] arg0, String[] arg1) {","path":"dcc-portal-server/src/main/java/org/icgc/dcc/portal/server/service/SoftwareService.java","position":155,"original_position":155,"commit_id":"1a2bad7b2eab4a2895b94724bb4ad2624ad77e4c","original_commit_id":"1a2bad7b2eab4a2895b94724bb4ad2624ad77e4c","user":{"login":"btiernay","id":2717578,"avatar_url":"https://avatars.githubusercontent.com/u/2717578?v=3","gravatar_id":"","url":"https://api.github.com/users/btiernay","html_url":"https://github.com/btiernay","followers_url":"https://api.github.com/users/btiernay/followers","following_url":"https://api.github.com/users/btiernay/following{/other_user}","gists_url":"https://api.github.com/users/btiernay/gists{/gist_id}","starred_url":"https://api.github.com/users/btiernay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/btiernay/subscriptions","organizations_url":"https://api.github.com/users/btiernay/orgs","repos_url":"https://api.github.com/users/btiernay/repos","events_url":"https://api.github.com/users/btiernay/events{/privacy}","received_events_url":"https://api.github.com/users/btiernay/received_events","type":"User","site_admin":false},"body":"Where is this used?","created_at":"2016-07-22T01:04:17Z","updated_at":"2016-07-22T01:04:17Z","html_url":"https://github.com/icgc-dcc/dcc-portal/pull/33#discussion_r71813702","pull_request_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/33","_links":{"self":{"href":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/comments/71813702"},"html":{"href":"https://github.com/icgc-dcc/dcc-portal/pull/33#discussion_r71813702"},"pull_request":{"href":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/33"}}},"pull_request":{"url":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/33","id":78027004,"html_url":"https://github.com/icgc-dcc/dcc-portal/pull/33","diff_url":"https://github.com/icgc-dcc/dcc-portal/pull/33.diff","patch_url":"https://github.com/icgc-dcc/dcc-portal/pull/33.patch","issue_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/issues/33","number":33,"state":"open","locked":false,"title":"Icgc get","user":{"login":"GavinMWilson","id":18145343,"avatar_url":"https://avatars.githubusercontent.com/u/18145343?v=3","gravatar_id":"","url":"https://api.github.com/users/GavinMWilson","html_url":"https://github.com/GavinMWilson","followers_url":"https://api.github.com/users/GavinMWilson/followers","following_url":"https://api.github.com/users/GavinMWilson/following{/other_user}","gists_url":"https://api.github.com/users/GavinMWilson/gists{/gist_id}","starred_url":"https://api.github.com/users/GavinMWilson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GavinMWilson/subscriptions","organizations_url":"https://api.github.com/users/GavinMWilson/orgs","repos_url":"https://api.github.com/users/GavinMWilson/repos","events_url":"https://api.github.com/users/GavinMWilson/events{/privacy}","received_events_url":"https://api.github.com/users/GavinMWilson/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-07-19T18:37:55Z","updated_at":"2016-07-22T01:04:17Z","closed_at":null,"merged_at":null,"merge_commit_sha":"20f726075735bc2da488c9d9e4c8bcab04a6d01f","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/33/commits","review_comments_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/33/comments","review_comment_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/comments{/number}","comments_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/issues/33/comments","statuses_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/statuses/1a2bad7b2eab4a2895b94724bb4ad2624ad77e4c","head":{"label":"icgc-dcc:icgc-get","ref":"icgc-get","sha":"1a2bad7b2eab4a2895b94724bb4ad2624ad77e4c","user":{"login":"icgc-dcc","id":1508638,"avatar_url":"https://avatars.githubusercontent.com/u/1508638?v=3","gravatar_id":"","url":"https://api.github.com/users/icgc-dcc","html_url":"https://github.com/icgc-dcc","followers_url":"https://api.github.com/users/icgc-dcc/followers","following_url":"https://api.github.com/users/icgc-dcc/following{/other_user}","gists_url":"https://api.github.com/users/icgc-dcc/gists{/gist_id}","starred_url":"https://api.github.com/users/icgc-dcc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/icgc-dcc/subscriptions","organizations_url":"https://api.github.com/users/icgc-dcc/orgs","repos_url":"https://api.github.com/users/icgc-dcc/repos","events_url":"https://api.github.com/users/icgc-dcc/events{/privacy}","received_events_url":"https://api.github.com/users/icgc-dcc/received_events","type":"Organization","site_admin":false},"repo":{"id":62242110,"name":"dcc-portal","full_name":"icgc-dcc/dcc-portal","owner":{"login":"icgc-dcc","id":1508638,"avatar_url":"https://avatars.githubusercontent.com/u/1508638?v=3","gravatar_id":"","url":"https://api.github.com/users/icgc-dcc","html_url":"https://github.com/icgc-dcc","followers_url":"https://api.github.com/users/icgc-dcc/followers","following_url":"https://api.github.com/users/icgc-dcc/following{/other_user}","gists_url":"https://api.github.com/users/icgc-dcc/gists{/gist_id}","starred_url":"https://api.github.com/users/icgc-dcc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/icgc-dcc/subscriptions","organizations_url":"https://api.github.com/users/icgc-dcc/orgs","repos_url":"https://api.github.com/users/icgc-dcc/repos","events_url":"https://api.github.com/users/icgc-dcc/events{/privacy}","received_events_url":"https://api.github.com/users/icgc-dcc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/icgc-dcc/dcc-portal","description":"Data portal for exploring and accessing data","fork":false,"url":"https://api.github.com/repos/icgc-dcc/dcc-portal","forks_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/forks","keys_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/keys{/key_id}","collaborators_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/teams","hooks_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/hooks","issue_events_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/issues/events{/number}","events_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/events","assignees_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/assignees{/user}","branches_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/branches{/branch}","tags_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/tags","blobs_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/git/refs{/sha}","trees_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/git/trees{/sha}","statuses_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/statuses/{sha}","languages_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/languages","stargazers_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/stargazers","contributors_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/contributors","subscribers_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/subscribers","subscription_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/subscription","commits_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/commits{/sha}","git_commits_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/git/commits{/sha}","comments_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/comments{/number}","issue_comment_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/issues/comments{/number}","contents_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/contents/{+path}","compare_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/compare/{base}...{head}","merges_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/merges","archive_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/downloads","issues_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/issues{/number}","pulls_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls{/number}","milestones_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/milestones{/number}","notifications_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/labels{/name}","releases_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/releases{/id}","deployments_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/deployments","created_at":"2016-06-29T16:44:10Z","updated_at":"2016-07-18T13:55:22Z","pushed_at":"2016-07-21T22:40:07Z","git_url":"git://github.com/icgc-dcc/dcc-portal.git","ssh_url":"git@github.com:icgc-dcc/dcc-portal.git","clone_url":"https://github.com/icgc-dcc/dcc-portal.git","svn_url":"https://github.com/icgc-dcc/dcc-portal","homepage":"https://dcc.icgc.org/","size":11217,"stargazers_count":3,"watchers_count":3,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":7,"forks":1,"open_issues":7,"watchers":3,"default_branch":"develop"}},"base":{"label":"icgc-dcc:develop","ref":"develop","sha":"83410fc5fa58fec35a4fbd1c36e56198af735383","user":{"login":"icgc-dcc","id":1508638,"avatar_url":"https://avatars.githubusercontent.com/u/1508638?v=3","gravatar_id":"","url":"https://api.github.com/users/icgc-dcc","html_url":"https://github.com/icgc-dcc","followers_url":"https://api.github.com/users/icgc-dcc/followers","following_url":"https://api.github.com/users/icgc-dcc/following{/other_user}","gists_url":"https://api.github.com/users/icgc-dcc/gists{/gist_id}","starred_url":"https://api.github.com/users/icgc-dcc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/icgc-dcc/subscriptions","organizations_url":"https://api.github.com/users/icgc-dcc/orgs","repos_url":"https://api.github.com/users/icgc-dcc/repos","events_url":"https://api.github.com/users/icgc-dcc/events{/privacy}","received_events_url":"https://api.github.com/users/icgc-dcc/received_events","type":"Organization","site_admin":false},"repo":{"id":62242110,"name":"dcc-portal","full_name":"icgc-dcc/dcc-portal","owner":{"login":"icgc-dcc","id":1508638,"avatar_url":"https://avatars.githubusercontent.com/u/1508638?v=3","gravatar_id":"","url":"https://api.github.com/users/icgc-dcc","html_url":"https://github.com/icgc-dcc","followers_url":"https://api.github.com/users/icgc-dcc/followers","following_url":"https://api.github.com/users/icgc-dcc/following{/other_user}","gists_url":"https://api.github.com/users/icgc-dcc/gists{/gist_id}","starred_url":"https://api.github.com/users/icgc-dcc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/icgc-dcc/subscriptions","organizations_url":"https://api.github.com/users/icgc-dcc/orgs","repos_url":"https://api.github.com/users/icgc-dcc/repos","events_url":"https://api.github.com/users/icgc-dcc/events{/privacy}","received_events_url":"https://api.github.com/users/icgc-dcc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/icgc-dcc/dcc-portal","description":"Data portal for exploring and accessing data","fork":false,"url":"https://api.github.com/repos/icgc-dcc/dcc-portal","forks_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/forks","keys_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/keys{/key_id}","collaborators_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/teams","hooks_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/hooks","issue_events_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/issues/events{/number}","events_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/events","assignees_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/assignees{/user}","branches_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/branches{/branch}","tags_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/tags","blobs_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/git/refs{/sha}","trees_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/git/trees{/sha}","statuses_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/statuses/{sha}","languages_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/languages","stargazers_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/stargazers","contributors_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/contributors","subscribers_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/subscribers","subscription_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/subscription","commits_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/commits{/sha}","git_commits_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/git/commits{/sha}","comments_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/comments{/number}","issue_comment_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/issues/comments{/number}","contents_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/contents/{+path}","compare_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/compare/{base}...{head}","merges_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/merges","archive_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/downloads","issues_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/issues{/number}","pulls_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls{/number}","milestones_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/milestones{/number}","notifications_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/labels{/name}","releases_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/releases{/id}","deployments_url":"https://api.github.com/repos/icgc-dcc/dcc-portal/deployments","created_at":"2016-06-29T16:44:10Z","updated_at":"2016-07-18T13:55:22Z","pushed_at":"2016-07-21T22:40:07Z","git_url":"git://github.com/icgc-dcc/dcc-portal.git","ssh_url":"git@github.com:icgc-dcc/dcc-portal.git","clone_url":"https://github.com/icgc-dcc/dcc-portal.git","svn_url":"https://github.com/icgc-dcc/dcc-portal","homepage":"https://dcc.icgc.org/","size":11217,"stargazers_count":3,"watchers_count":3,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":7,"forks":1,"open_issues":7,"watchers":3,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/33"},"html":{"href":"https://github.com/icgc-dcc/dcc-portal/pull/33"},"issue":{"href":"https://api.github.com/repos/icgc-dcc/dcc-portal/issues/33"},"comments":{"href":"https://api.github.com/repos/icgc-dcc/dcc-portal/issues/33/comments"},"review_comments":{"href":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/33/comments"},"review_comment":{"href":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/icgc-dcc/dcc-portal/pulls/33/commits"},"statuses":{"href":"https://api.github.com/repos/icgc-dcc/dcc-portal/statuses/1a2bad7b2eab4a2895b94724bb4ad2624ad77e4c"}}}}
{"actor":{"display_login":"btiernay"}}