{"action":"created","comment":{"url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/comments/62254991","id":62254991,"diff_hunk":"@@ -0,0 +1,340 @@\n+\"use strict\";\n+\n+var $ = document.querySelector.bind(document);\n+\n+function PreloadSubmission() {\n+  this.setDomainFromURLParam();\n+\n+  $(\"#domain-form\").addEventListener(\"submit\", function(ev) {\n+    this.onDomainChanged();\n+    ev.preventDefault();\n+  }.bind(this));\n+\n+  $(\"#checkbox-owner\").addEventListener(\"change\", this.onCheckBoxChanged.bind(this));\n+  $(\"#checkbox-subdomains\").addEventListener(\"change\", this.onCheckBoxChanged.bind(this));\n+  $(\"#submit-form\").addEventListener(\"submit\", function(ev) {\n+    this.onSubmitForm();\n+    ev.preventDefault();\n+  }.bind(this));\n+}\n+\n+PreloadSubmission.prototype = {\n+  // TODO: look at response codes.\n+  status: function(domain) {\n+    return new Promise(function(resolve, reject) {\n+      var oReq = new XMLHttpRequest();\n+      oReq.addEventListener(\"load\", (function(ev) {\n+        resolve(JSON.parse(oReq.response));\n+      }).bind(this));\n+      oReq.open(\"GET\", \"/status/\" + domain);\n+      oReq.send();\n+    });\n+  },\n+\n+  checkdomain: function(domain) {\n+    console.log(\"checkdomain:\" + domain);\n+    return new Promise(function(resolve, reject) {\n+      var oReq = new XMLHttpRequest();\n+      oReq.addEventListener(\"load\", (function(ev) {\n+        resolve(JSON.parse(oReq.response));\n+      }).bind(this));\n+      oReq.open(\"GET\", \"/checkdomain/\" + domain);\n+      oReq.send();\n+    });\n+  },\n+\n+  submit: function(domain) {\n+    console.log(\"checkdomain:\" + domain);\n+    return new Promise(function(resolve, reject) {\n+      var oReq = new XMLHttpRequest();\n+      oReq.addEventListener(\"load\", (function(ev) {\n+        resolve(JSON.parse(oReq.response));\n+      }).bind(this));\n+      oReq.open(\"GET\", \"/submit/\" + domain);\n+      oReq.send();\n+    });\n+  },\n+\n+  isValidDomainFormat: function(domain) {\n+    return domain.includes(\".\") &&\n+          !domain.endsWith(\".\") &&\n+          !domain.startsWith(\".\") &&\n+          !domain.includes(\"..\");\n+  },\n+\n+  // hasLikelyETLD1: function(domain) {\n+  //   // Submitting .com domains is common; don't use the fast path for .co\n+  //   // Same for .net => .ne\n+  //   if (domain.endsWith(\".co\") || domain.endsWith(\".ne\")) {\n+  //     return true;\n+  //   }\n+\n+  //   var publicsuffix = tldjs.getPublicSuffix(domain)\n+  //   return publicsuffix !== null && publicsuffix !== domain;\n+  // },\n+\n+  clearTheme: function(theme) {\n+    document.body.classList.remove(\"theme-green\", \"theme-yellow\", \"theme-red\");\n+  },\n+\n+  setTheme: function(theme) {\n+    this.clearTheme();\n+    document.body.classList.add(theme)\n+  },\n+\n+  currentDomain: function() {\n+    var domain = $(\"#domain\").value;\n+    // Check for pasted URLs beginning with http:// or https://\n+    if (domain.startsWith(\"http://\")) {\n+      domain = domain.slice(\"http://\".length)\n+    }\n+    if (domain.startsWith(\"https://\")) {\n+      domain = domain.slice(\"https://\".length)\n+    }\n+    return domain;\n+  },\n+\n+  clearResults: function() {\n+    $(\"#result\").classList.add(\"hidden\");\n+  },\n+\n+  showResults: function(domain, checkDomainIssues, domainStatus) {\n+    if (checkDomainIssues.errors.length === 0) {\n+      if (checkDomainIssues.warnings.length === 0) {\n+        $(\"#summary\").textContent = \"\" + domain + \" satisfies all requirements for preloading!\";\n+        this.setTheme(\"theme-green\");\n+      } else {\n+        $(\"#summary\").textContent = \"\" + domain + \" has \" + (checkDomainIssues.warnings.length == 1 ? \"a warning\" : \"warnings\") + \", but satisfies all requirements for preloading.\";\n+        this.setTheme(\"theme-yellow\");\n+      }\n+    } else {\n+        $(\"#summary\").textContent = \"\" + domain + \" has errors and cannot be preloaded.\";\n+        this.setTheme(\"theme-red\");\n+    }\n+\n+    switch (domainStatus.status) {\n+    case \"unknown\":\n+      if (checkDomainIssues.errors.length === 0) {\n+        $(\"#status\").textContent = \"\" + domain + \" is not yet preloaded, and may be submitted to the preload list.\"\n+      } else {\n+        $(\"#status\").textContent = \"\" + domain + \" is not preloaded.\"\n+      }\n+      break;\n+    case \"pending\":\n+      $(\"#status\").textContent = \"\" + domain + \" is pending submission to the preload list.\"\n+      break;\n+    case \"preloaded\":\n+      $(\"#status\").textContent = \"\" + domain + \" is currently preloaded.\"\n+      break;\n+    case \"rejected\":\n+      // TODO: do something useful if domainStatus.message is not present.\n+      if (domainStatus.message) {\n+        $(\"#status\").textContent = \"\" + domain + \" was rejected from the preload list for the following reason: \" + domainStatus.message;\n+      } else {\n+        $(\"#status\").textContent = \"\" + domain + \" was rejected from the preload list.\";\n+      }\n+      if (checkDomainIssues.errors.length === 0) {\n+        $(\"#status\").textContent += \" It may be submitted again.\"\n+      }\n+      break;\n+    case \"removed\":\n+      if (checkDomainIssues.warnings.length === 0) {\n+        $(\"#status\").textContent = \"\" + domain + \" was previously on the preload list, but has been removed. It may be submitted again.\";\n+      } else {\n+        $(\"#status\").textContent = \"\" + domain + \" was previously on the preload list, but has been removed.\";\n+      }\n+      break;\n+    default:\n+      $(\"#status\").textContent = \"Cannot determine preload status.\";\n+    }\n+\n+    function createIssueElement(issue, bullet, className) {\n+      var el = document.createElement(\"div\");\n+      el.classList.add(className);\n+      // summary.title = issue.code;\n+\n+      var bulletSpan = document.createElement(\"span\");\n+      bulletSpan.textContent = bullet + \" \";\n+      el.appendChild(bulletSpan);\n+\n+      var summary = document.createElement(\"span\")\n+      summary.classList.add(\"summary\");\n+      summary.textContent = issue.summary;\n+      el.appendChild(summary);\n+\n+      var br = document.createElement(\"br\")\n+      el.appendChild(br);\n+\n+      var message = document.createElement(\"span\")\n+      message.textContent = issue.message;\n+      el.appendChild(message);\n+\n+      return el;\n+    }\n+\n+    $(\"#errors\").textContent = \"\";\n+    $(\"#warnings\").textContent = \"\";\n+    for (var i in checkDomainIssues.errors) {\n+      var error = checkDomainIssues.errors[i];\n+      var el = createIssueElement(error, \"❌\", \"error\");\n+      $(\"#errors\").appendChild(el);\n+    }\n+    for (var j in checkDomainIssues.warnings) {\n+      var warning = checkDomainIssues.warnings[j];\n+      var el = createIssueElement(warning, \"⚠️\", \"warning\");\n+      $(\"#warnings\").appendChild(el);\n+    }\n+\n+    $(\"#result\").classList.remove(\"hidden\");\n+  },\n+\n+  hideSubmission: function() {\n+    $(\"#submit-form\").classList.add(\"hidden\");\n+  },\n+\n+  showSubmission: function() {\n+    $(\"#checkbox-owner\").checked = false;\n+    $(\"#checkbox-subdomains\").checked = false;\n+    $(\"#submit\").disabled = true;\n+\n+    $(\"#submit-form\").classList.remove(\"hidden\");\n+  },\n+\n+  onSubmitForm: function() {\n+    this.submit(this.domainToSubmit).then(function(issues) {\n+      console.log(\"submit:\", issues);\n+      $(\"#submit-result\").classList.remove(\"hidden\");\n+      if (issues.errors.length == 0) {\n+        $(\"#submit-result\").textContent = \"Submitted successfully!\";\n+        // TODO: Now try SSL Labs!\n+      } else {\n+        $(\"#submit-result\").textContent = \"There are errors. Please submit your site again.\";\n+      }\n+    });\n+  },\n+\n+  showWaiting: function(domain) {\n+    $(\"#checking\").textContent = \"Checking  \" + domain;\n+\n+    $(\"#result-waiting\").classList.remove(\"hidden\");\n+  },\n+\n+  hideWaiting: function() {\n+    $(\"#result-waiting\").classList.add(\"hidden\");\n+  },\n+\n+  updateURLHash: function(domain) {\n+    console.log(domain);\n+    if (domain) {\n+      history.replaceState({}, document.title, \".?domain=\" + domain);\n+    } else {\n+      history.replaceState({}, document.title, \".\");\n+    }\n+  },\n+\n+  onDomainChanged: function() {\n+    var domain = this.currentDomain();\n+    this.showWaiting(domain);\n+    this.clearResults();\n+    this.hideSubmission();\n+    this.updateURLHash(domain);\n+    this.clearTheme()\n+\n+    if (!domain) {\n+      $(\"#result-waiting\").classList.add(\"hidden\");\n+      return;\n+    }\n+\n+    this.currentResultsDomain = \"\";\n+\n+    Promise.all([\n+      this.checkdomain(domain),\n+      this.status(domain)\n+    ]).then(function(values) {\n+      this.handleResults(domain, values[0], values[1]);\n+    }.bind(this), function() {\n+        // TODO: handle failure better.\n+        $(\"#result\").classList.remove(\"hidden\");\n+        $(\"#result-waiting\").classList.add(\"hidden\");\n+    });\n+  },\n+\n+  onCheckBoxChanged: function() {\n+    $(\"#submit\").disabled = !($(\"#checkbox-owner\").checked && $(\"#checkbox-subdomains\").checked);\n+  },\n+\n+  handleResults: function(domain, checkDomainIssues, domainStatus) {\n+    console.log(\"handleResults:\", checkDomainIssues, domainStatus);\n+\n+    if (domain !== this.currentDomain()) {\n+      return;\n+    }\n+    if (this.currentResultsDomain === domain) {\n+      return;\n+    } else {\n+      this.currentResultsDomain = domain;\n+    }\n+\n+    if (domain !== this.currentDomain()) {\n+      console.log(\"Outdated result.\");\n+      return;\n+    }\n+\n+    this.showResults(domain, checkDomainIssues, domainStatus);\n+    this.hideWaiting();\n+\n+    if (checkDomainIssues.errors.length === 0 && [\"unknown\", \"rejected\", \"removed\"].indexOf(domainStatus.status) != -1) {\n+      this.domainToSubmit = domain;\n+      this.showSubmission();\n+    }\n+  },\n+\n+  domainFromURLParam: function() {\n+    var match = window.location.search.match(/^\\?domain=([^?&]+)$/);\n+    return match ? decodeURIComponent(match[1]) : null;\n+  },\n+\n+  setDomainFromURLParam: function() {\n+    var domain = this.domainFromURLParam();\n+    if (domain) {\n+      console.log(\"From URL parameter:\", domain);\n+      $(\"#domain\").value = domain;\n+      this.onDomainChanged();\n+    }\n+  }\n+\n+  // showResult: function(domain, status) {\n+  //   console.log(status);   \n+\n+  //   this.showElement(\"resultError\");\n+  //   $(\"#resultSummary\").textContent = domain + \"hi there\"","path":"files/static/index.js","position":310,"original_position":310,"commit_id":"a55d322d2570da7fd5059eaee4f87a9227cc9c87","original_commit_id":"d6ee494f31192a8dc3c37dfebea1d8bccb66c4d0","user":{"login":"meacer","id":1571579,"avatar_url":"https://avatars.githubusercontent.com/u/1571579?v=3","gravatar_id":"","url":"https://api.github.com/users/meacer","html_url":"https://github.com/meacer","followers_url":"https://api.github.com/users/meacer/followers","following_url":"https://api.github.com/users/meacer/following{/other_user}","gists_url":"https://api.github.com/users/meacer/gists{/gist_id}","starred_url":"https://api.github.com/users/meacer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meacer/subscriptions","organizations_url":"https://api.github.com/users/meacer/orgs","repos_url":"https://api.github.com/users/meacer/repos","events_url":"https://api.github.com/users/meacer/events{/privacy}","received_events_url":"https://api.github.com/users/meacer/received_events","type":"User","site_admin":false},"body":"hi","created_at":"2016-05-05T21:04:34Z","updated_at":"2016-05-05T21:04:34Z","html_url":"https://github.com/chromium/hstspreload.appspot.com/pull/4#discussion_r62254991","pull_request_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/4","_links":{"self":{"href":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/comments/62254991"},"html":{"href":"https://github.com/chromium/hstspreload.appspot.com/pull/4#discussion_r62254991"},"pull_request":{"href":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/4"}}},"pull_request":{"url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/4","id":68933615,"html_url":"https://github.com/chromium/hstspreload.appspot.com/pull/4","diff_url":"https://github.com/chromium/hstspreload.appspot.com/pull/4.diff","patch_url":"https://github.com/chromium/hstspreload.appspot.com/pull/4.patch","issue_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/issues/4","number":4,"state":"open","locked":false,"title":"hstspreload server review by meacer@","user":{"login":"lgarron","id":248078,"avatar_url":"https://avatars.githubusercontent.com/u/248078?v=3","gravatar_id":"","url":"https://api.github.com/users/lgarron","html_url":"https://github.com/lgarron","followers_url":"https://api.github.com/users/lgarron/followers","following_url":"https://api.github.com/users/lgarron/following{/other_user}","gists_url":"https://api.github.com/users/lgarron/gists{/gist_id}","starred_url":"https://api.github.com/users/lgarron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lgarron/subscriptions","organizations_url":"https://api.github.com/users/lgarron/orgs","repos_url":"https://api.github.com/users/lgarron/repos","events_url":"https://api.github.com/users/lgarron/events{/privacy}","received_events_url":"https://api.github.com/users/lgarron/received_events","type":"User","site_admin":false},"body":"meacer@, could you review these changes?\r\n\r\nSee the [hstspreload v2 doc](https://docs.google.com/document/d/17kft9NgnqdKJTMbt9hbvCSd2-k9T76FP7C_IrM-kisQ/edit#) for an overview of the new code.\r\n\r\n(See https://github.com/chromium/hstspreload/pull/66 for the Go library review.)","created_at":"2016-05-04T21:18:10Z","updated_at":"2016-05-05T21:04:34Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c9867ffb19f0de8a39111290cf445eba313f1190","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/4/commits","review_comments_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/4/comments","review_comment_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/comments{/number}","comments_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/issues/4/comments","statuses_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/statuses/a55d322d2570da7fd5059eaee4f87a9227cc9c87","head":{"label":"chromium:master","ref":"master","sha":"a55d322d2570da7fd5059eaee4f87a9227cc9c87","user":{"login":"chromium","id":30044,"avatar_url":"https://avatars.githubusercontent.com/u/30044?v=3","gravatar_id":"","url":"https://api.github.com/users/chromium","html_url":"https://github.com/chromium","followers_url":"https://api.github.com/users/chromium/followers","following_url":"https://api.github.com/users/chromium/following{/other_user}","gists_url":"https://api.github.com/users/chromium/gists{/gist_id}","starred_url":"https://api.github.com/users/chromium/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chromium/subscriptions","organizations_url":"https://api.github.com/users/chromium/orgs","repos_url":"https://api.github.com/users/chromium/repos","events_url":"https://api.github.com/users/chromium/events{/privacy}","received_events_url":"https://api.github.com/users/chromium/received_events","type":"Organization","site_admin":false},"repo":{"id":57102752,"name":"hstspreload.appspot.com","full_name":"chromium/hstspreload.appspot.com","owner":{"login":"chromium","id":30044,"avatar_url":"https://avatars.githubusercontent.com/u/30044?v=3","gravatar_id":"","url":"https://api.github.com/users/chromium","html_url":"https://github.com/chromium","followers_url":"https://api.github.com/users/chromium/followers","following_url":"https://api.github.com/users/chromium/following{/other_user}","gists_url":"https://api.github.com/users/chromium/gists{/gist_id}","starred_url":"https://api.github.com/users/chromium/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chromium/subscriptions","organizations_url":"https://api.github.com/users/chromium/orgs","repos_url":"https://api.github.com/users/chromium/repos","events_url":"https://api.github.com/users/chromium/events{/privacy}","received_events_url":"https://api.github.com/users/chromium/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/chromium/hstspreload.appspot.com","description":":lock:","fork":false,"url":"https://api.github.com/repos/chromium/hstspreload.appspot.com","forks_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/forks","keys_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/teams","hooks_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/hooks","issue_events_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/issues/events{/number}","events_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/events","assignees_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/assignees{/user}","branches_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/branches{/branch}","tags_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/tags","blobs_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/git/refs{/sha}","trees_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/statuses/{sha}","languages_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/languages","stargazers_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/stargazers","contributors_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/contributors","subscribers_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/subscribers","subscription_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/subscription","commits_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/commits{/sha}","git_commits_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/git/commits{/sha}","comments_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/comments{/number}","issue_comment_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/issues/comments{/number}","contents_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/contents/{+path}","compare_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/merges","archive_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/downloads","issues_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/issues{/number}","pulls_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls{/number}","milestones_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/milestones{/number}","notifications_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/labels{/name}","releases_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/releases{/id}","deployments_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/deployments","created_at":"2016-04-26T06:12:32Z","updated_at":"2016-04-26T09:22:22Z","pushed_at":"2016-05-05T21:03:15Z","git_url":"git://github.com/chromium/hstspreload.appspot.com.git","ssh_url":"git@github.com:chromium/hstspreload.appspot.com.git","clone_url":"https://github.com/chromium/hstspreload.appspot.com.git","svn_url":"https://github.com/chromium/hstspreload.appspot.com","homepage":"https://hstspreload.appspot.com/","size":303,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":6,"forks":0,"open_issues":6,"watchers":0,"default_branch":"master"}},"base":{"label":"chromium:meacer-review","ref":"meacer-review","sha":"02b1209b8eb58d736cc4417e4c13b7943160e710","user":{"login":"chromium","id":30044,"avatar_url":"https://avatars.githubusercontent.com/u/30044?v=3","gravatar_id":"","url":"https://api.github.com/users/chromium","html_url":"https://github.com/chromium","followers_url":"https://api.github.com/users/chromium/followers","following_url":"https://api.github.com/users/chromium/following{/other_user}","gists_url":"https://api.github.com/users/chromium/gists{/gist_id}","starred_url":"https://api.github.com/users/chromium/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chromium/subscriptions","organizations_url":"https://api.github.com/users/chromium/orgs","repos_url":"https://api.github.com/users/chromium/repos","events_url":"https://api.github.com/users/chromium/events{/privacy}","received_events_url":"https://api.github.com/users/chromium/received_events","type":"Organization","site_admin":false},"repo":{"id":57102752,"name":"hstspreload.appspot.com","full_name":"chromium/hstspreload.appspot.com","owner":{"login":"chromium","id":30044,"avatar_url":"https://avatars.githubusercontent.com/u/30044?v=3","gravatar_id":"","url":"https://api.github.com/users/chromium","html_url":"https://github.com/chromium","followers_url":"https://api.github.com/users/chromium/followers","following_url":"https://api.github.com/users/chromium/following{/other_user}","gists_url":"https://api.github.com/users/chromium/gists{/gist_id}","starred_url":"https://api.github.com/users/chromium/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chromium/subscriptions","organizations_url":"https://api.github.com/users/chromium/orgs","repos_url":"https://api.github.com/users/chromium/repos","events_url":"https://api.github.com/users/chromium/events{/privacy}","received_events_url":"https://api.github.com/users/chromium/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/chromium/hstspreload.appspot.com","description":":lock:","fork":false,"url":"https://api.github.com/repos/chromium/hstspreload.appspot.com","forks_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/forks","keys_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/teams","hooks_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/hooks","issue_events_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/issues/events{/number}","events_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/events","assignees_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/assignees{/user}","branches_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/branches{/branch}","tags_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/tags","blobs_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/git/refs{/sha}","trees_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/statuses/{sha}","languages_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/languages","stargazers_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/stargazers","contributors_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/contributors","subscribers_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/subscribers","subscription_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/subscription","commits_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/commits{/sha}","git_commits_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/git/commits{/sha}","comments_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/comments{/number}","issue_comment_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/issues/comments{/number}","contents_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/contents/{+path}","compare_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/merges","archive_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/downloads","issues_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/issues{/number}","pulls_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls{/number}","milestones_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/milestones{/number}","notifications_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/labels{/name}","releases_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/releases{/id}","deployments_url":"https://api.github.com/repos/chromium/hstspreload.appspot.com/deployments","created_at":"2016-04-26T06:12:32Z","updated_at":"2016-04-26T09:22:22Z","pushed_at":"2016-05-05T21:03:15Z","git_url":"git://github.com/chromium/hstspreload.appspot.com.git","ssh_url":"git@github.com:chromium/hstspreload.appspot.com.git","clone_url":"https://github.com/chromium/hstspreload.appspot.com.git","svn_url":"https://github.com/chromium/hstspreload.appspot.com","homepage":"https://hstspreload.appspot.com/","size":303,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":6,"forks":0,"open_issues":6,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/4"},"html":{"href":"https://github.com/chromium/hstspreload.appspot.com/pull/4"},"issue":{"href":"https://api.github.com/repos/chromium/hstspreload.appspot.com/issues/4"},"comments":{"href":"https://api.github.com/repos/chromium/hstspreload.appspot.com/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/chromium/hstspreload.appspot.com/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/chromium/hstspreload.appspot.com/statuses/a55d322d2570da7fd5059eaee4f87a9227cc9c87"}}}}