{"action":"created","comment":{"url":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/comments/242328921","pull_request_review_id":185814611,"id":242328921,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0MjMyODkyMQ==","diff_hunk":"@@ -0,0 +1,319 @@\n+<?php\n+\n+namespace Drupal\\stanford_ssp\\Form;\n+\n+use Drupal\\Component\\Utility\\Html;\n+use Drupal\\Core\\Config\\ConfigFactoryInterface;\n+use Drupal\\Core\\Extension\\ModuleHandlerInterface;\n+use Drupal\\Core\\Form\\FormStateInterface;\n+use Drupal\\Core\\Url;\n+use Drupal\\simplesamlphp_auth\\Form\\SyncingSettingsForm;\n+use Drupal\\stanford_ssp\\Service\\StanfordSSPDrupalAuth;\n+use Drupal\\stanford_ssp\\Service\\StanfordSSPWorkgroupApiInterface;\n+use Drupal\\user\\Entity\\Role;\n+use Symfony\\Component\\DependencyInjection\\ContainerInterface;\n+\n+/**\n+ * Class RoleSyncForm overrides simplesamlphp_auth form for easier UI.\n+ *\n+ * @package Drupal\\stanford_ssp\\Form\n+ */\n+class RoleSyncForm extends SyncingSettingsForm {\n+\n+  /**\n+   * Module handler service.\n+   *\n+   * @var \\Drupal\\Core\\Extension\\ModuleHandlerInterface\n+   */\n+  protected $moduleHandler;\n+\n+  /**\n+   * Workgroup API service.\n+   *\n+   * @var \\Drupal\\stanford_ssp\\Service\\StanfordSSPWorkgroupApiInterface\n+   */\n+  protected $workgroupApi;\n+\n+  /**\n+   * {@inheritdoc}\n+   */\n+  public static function create(ContainerInterface $container) {\n+    return new static(\n+      $container->get('config.factory'),\n+      $container->get('module_handler'),\n+      $container->get('stanford_ssp.workgroup_api')\n+    );\n+  }\n+\n+  /**\n+   * {@inheritdoc}\n+   */\n+  public function __construct(ConfigFactoryInterface $config_factory, ModuleHandlerInterface $module_handler, StanfordSSPWorkgroupApiInterface $workgroup_api) {\n+    parent::__construct($config_factory);\n+    $this->moduleHandler = $module_handler;\n+    $this->workgroupApi = $workgroup_api;\n+  }\n+\n+  /**\n+   * {@inheritdoc}\n+   */\n+  protected function getEditableConfigNames() {\n+    $names = parent::getEditableConfigNames();\n+    $names[] = 'stanford_ssp.settings';\n+    return $names;\n+  }\n+\n+  /**\n+   * {@inheritdoc}\n+   */\n+  public function buildForm(array $form, FormStateInterface $form_state) {\n+    $form = parent::buildForm($form, $form_state);\n+\n+    if (!$form_state->get('mappings')) {\n+      $mappings = explode('|', $form['user_info']['role_population']['#default_value']);\n+      $form_state->set('mappings', array_filter(array_combine($mappings, $mappings)));\n+    }\n+\n+    $form['user_info']['role_population'] = [\n+      '#type' => 'table',\n+      '#header' => $this->getRoleHeaders(),\n+      '#attributes' => ['id' => 'role-mapping-table'],\n+    ];\n+\n+    $form['user_info']['role_population']['add']['#tree'] = TRUE;\n+    $form['user_info']['role_population']['add']['role_id'] = [\n+      '#type' => 'select',\n+      '#title' => $this->t('Add Role'),\n+      '#options' => user_role_names(TRUE),\n+    ];\n+\n+    $form['user_info']['role_population']['add']['workgroup'] = [\n+      '#type' => 'textfield',\n+      '#title' => $this->t('Workgroup'),\n+    ];\n+    $form['user_info']['role_population']['add']['add_mapping'] = [\n+      '#type' => 'submit',\n+      '#value' => $this->t('Add Mapping'),\n+      '#limit_validation_errors' => [],\n+      '#submit' => ['::addMappingCallback'],\n+      '#ajax' => [\n+        'callback' => '::addMapping',\n+        'wrapper' => 'role-mapping-table',\n+      ],\n+    ];\n+\n+    foreach ($form_state->get('mappings', []) as $role_mapping) {\n+      $form['user_info']['role_population'][$role_mapping] = $this->buildRoleRow($role_mapping);\n+    }\n+\n+    $form['user_info']['role_eval_every_time']['#type'] = 'radios';\n+    $form['user_info']['role_eval_every_time']['#options'] = [\n+      0 => $this->t('Do not adjust roles. Allow local administration of roles only.'),\n+      StanfordSSPDrupalAuth::ROLE_REEVALUATE => $this->t('Re-evaluate roles on every log in. This will grant and remove roles.'),\n+      StanfordSSPDrupalAuth::ROLE_ADDITIVE => $this->t('Grant new roles only. Will only add roles based on role assignments.'),\n+    ];\n+\n+    $this->buildWorkgroupApiForm($form, $form_state);\n+    return $form;\n+  }\n+\n+  /**\n+   * Build the workgroup api form portion.\n+   *\n+   * @param array $form\n+   *   Complete form.\n+   * @param \\Drupal\\Core\\Form\\FormStateInterface $form_state\n+   *   Current form state.\n+   */\n+  protected function buildWorkgroupApiForm(array &$form, FormStateInterface $form_state) {\n+    $stanford_config = $this->config('stanford_ssp.settings');\n+    $form['user_info']['use_workgroup_api'] = [\n+      '#type' => 'radios',\n+      '#title' => $this->t('Source to validate role mapping groups against.'),\n+      '#default_value' => $stanford_config->get('use_workgroup_api') ?: 0,\n+      '#options' => [\n+        $this->t('SAML Attribute'),\n+        $this->t('Workgroup API'),\n+      ],\n+    ];\n+\n+    $form['user_info']['workgroup_api_cert'] = [\n+      '#type' => 'textfield',\n+      '#title' => $this->t('Path to Workgroup API SSL Certificate.'),\n+      '#description' => $this->t('For more information on how to get a certificate please see: https://uit.stanford.edu/service/registry/certificates.', [\n+        ':link' => Url::fromRoute('entity.key.add_form')->toString(),\n+      ]),\n+      '#default_value' => $stanford_config->get('workgroup_api_cert'),\n+      '#states' => ['visible' => ['input[name=\"use_workgroup_api\"]' => ['value' => 1]]],\n+    ];\n+\n+    $form['user_info']['workgroup_api_key'] = [\n+      '#type' => 'textfield',\n+      '#title' => $this->t('Key to Workgroup API SSL Key.'),\n+      '#description' => $this->t('For more information on how to get a key please see: https://uit.stanford.edu/service/registry/certificates.', [\n+        ':link' => Url::fromRoute('entity.key.add_form')->toString(),\n+      ]),\n+      '#default_value' => $stanford_config->get('workgroup_api_key'),\n+      '#states' => ['visible' => ['input[name=\"use_workgroup_api\"]' => ['value' => 1]]],\n+    ];\n+  }\n+\n+  /**\n+   * Get the role mapping table headers.\n+   *\n+   * @return array\n+   *   Array of table header labels.\n+   */\n+  protected function getRoleHeaders() {\n+    return [\n+      $this->t('Role'),\n+      $this->t('Workgroup'),\n+      $this->t('Actions'),\n+    ];\n+  }\n+\n+  /**\n+   * Build the table row for the role mapping string.\n+   *\n+   * @param string $role_mapping_string\n+   *   Formatted role mapping string.\n+   *\n+   * @return array\n+   *   Table render array.\n+   */\n+  protected function buildRoleRow($role_mapping_string) {\n+    list($role_id, $comparison) = explode(':', $role_mapping_string, 2);","path":"src/Form/RoleSyncForm.php","position":185,"original_position":185,"commit_id":"f2f8d3792c4b8c52529f3f74ed99fd2ee3a745b0","original_commit_id":"f2f8d3792c4b8c52529f3f74ed99fd2ee3a745b0","user":{"login":"pookmish","id":7185045,"node_id":"MDQ6VXNlcjcxODUwNDU=","avatar_url":"https://avatars0.githubusercontent.com/u/7185045?v=4","gravatar_id":"","url":"https://api.github.com/users/pookmish","html_url":"https://github.com/pookmish","followers_url":"https://api.github.com/users/pookmish/followers","following_url":"https://api.github.com/users/pookmish/following{/other_user}","gists_url":"https://api.github.com/users/pookmish/gists{/gist_id}","starred_url":"https://api.github.com/users/pookmish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pookmish/subscriptions","organizations_url":"https://api.github.com/users/pookmish/orgs","repos_url":"https://api.github.com/users/pookmish/repos","events_url":"https://api.github.com/users/pookmish/events{/privacy}","received_events_url":"https://api.github.com/users/pookmish/received_events","type":"User","site_admin":false},"body":"php 5.6 has the same result. i've tested as response to one of your comments in another PR","created_at":"2018-12-17T21:49:48Z","updated_at":"2018-12-17T21:49:48Z","html_url":"https://github.com/SU-SWS/stanford_ssp/pull/64#discussion_r242328921","pull_request_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/64","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/comments/242328921"},"html":{"href":"https://github.com/SU-SWS/stanford_ssp/pull/64#discussion_r242328921"},"pull_request":{"href":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/64"}},"in_reply_to_id":242328586},"pull_request":{"url":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/64","id":236692491,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM2NjkyNDkx","html_url":"https://github.com/SU-SWS/stanford_ssp/pull/64","diff_url":"https://github.com/SU-SWS/stanford_ssp/pull/64.diff","patch_url":"https://github.com/SU-SWS/stanford_ssp/pull/64.patch","issue_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/issues/64","number":64,"state":"open","locked":false,"title":"D8 version","user":{"login":"pookmish","id":7185045,"node_id":"MDQ6VXNlcjcxODUwNDU=","avatar_url":"https://avatars0.githubusercontent.com/u/7185045?v=4","gravatar_id":"","url":"https://api.github.com/users/pookmish","html_url":"https://github.com/pookmish","followers_url":"https://api.github.com/users/pookmish/followers","following_url":"https://api.github.com/users/pookmish/following{/other_user}","gists_url":"https://api.github.com/users/pookmish/gists{/gist_id}","starred_url":"https://api.github.com/users/pookmish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pookmish/subscriptions","organizations_url":"https://api.github.com/users/pookmish/orgs","repos_url":"https://api.github.com/users/pookmish/repos","events_url":"https://api.github.com/users/pookmish/events{/privacy}","received_events_url":"https://api.github.com/users/pookmish/received_events","type":"User","site_admin":false},"body":"# READY FOR REVIEW\r\n\r\n# Summary\r\n- I think the diff is not going to be much help. probably gonna have to just review the branch directly\r\n\r\n# Needed By (Date)\r\n- asap\r\n\r\n# Urgency\r\n- High\r\n\r\n# Steps to Test\r\n1. set up local saml\r\n1. Enable on a clean D8 setup.\r\n1. test out workgroup login functionality.\r\n\r\n\r\n# See Also\r\n- [PR Checklist](https://gist.github.com/sherakama/0ba17601381e3adbe0cad566ad4d80a5)","created_at":"2018-12-06T22:22:08Z","updated_at":"2018-12-17T21:49:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"fa6b508278b96c616d9365de49954f9c6d4bd0b9","assignee":{"login":"sherakama","id":550602,"node_id":"MDQ6VXNlcjU1MDYwMg==","avatar_url":"https://avatars2.githubusercontent.com/u/550602?v=4","gravatar_id":"","url":"https://api.github.com/users/sherakama","html_url":"https://github.com/sherakama","followers_url":"https://api.github.com/users/sherakama/followers","following_url":"https://api.github.com/users/sherakama/following{/other_user}","gists_url":"https://api.github.com/users/sherakama/gists{/gist_id}","starred_url":"https://api.github.com/users/sherakama/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sherakama/subscriptions","organizations_url":"https://api.github.com/users/sherakama/orgs","repos_url":"https://api.github.com/users/sherakama/repos","events_url":"https://api.github.com/users/sherakama/events{/privacy}","received_events_url":"https://api.github.com/users/sherakama/received_events","type":"User","site_admin":false},"assignees":[{"login":"sherakama","id":550602,"node_id":"MDQ6VXNlcjU1MDYwMg==","avatar_url":"https://avatars2.githubusercontent.com/u/550602?v=4","gravatar_id":"","url":"https://api.github.com/users/sherakama","html_url":"https://github.com/sherakama","followers_url":"https://api.github.com/users/sherakama/followers","following_url":"https://api.github.com/users/sherakama/following{/other_user}","gists_url":"https://api.github.com/users/sherakama/gists{/gist_id}","starred_url":"https://api.github.com/users/sherakama/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sherakama/subscriptions","organizations_url":"https://api.github.com/users/sherakama/orgs","repos_url":"https://api.github.com/users/sherakama/repos","events_url":"https://api.github.com/users/sherakama/events{/privacy}","received_events_url":"https://api.github.com/users/sherakama/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/64/commits","review_comments_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/64/comments","review_comment_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/issues/64/comments","statuses_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/statuses/f2f8d3792c4b8c52529f3f74ed99fd2ee3a745b0","head":{"label":"SU-SWS:d8-version","ref":"d8-version","sha":"f2f8d3792c4b8c52529f3f74ed99fd2ee3a745b0","user":{"login":"SU-SWS","id":840730,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg0MDczMA==","avatar_url":"https://avatars3.githubusercontent.com/u/840730?v=4","gravatar_id":"","url":"https://api.github.com/users/SU-SWS","html_url":"https://github.com/SU-SWS","followers_url":"https://api.github.com/users/SU-SWS/followers","following_url":"https://api.github.com/users/SU-SWS/following{/other_user}","gists_url":"https://api.github.com/users/SU-SWS/gists{/gist_id}","starred_url":"https://api.github.com/users/SU-SWS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SU-SWS/subscriptions","organizations_url":"https://api.github.com/users/SU-SWS/orgs","repos_url":"https://api.github.com/users/SU-SWS/repos","events_url":"https://api.github.com/users/SU-SWS/events{/privacy}","received_events_url":"https://api.github.com/users/SU-SWS/received_events","type":"Organization","site_admin":false},"repo":{"id":26981071,"node_id":"MDEwOlJlcG9zaXRvcnkyNjk4MTA3MQ==","name":"stanford_ssp","full_name":"SU-SWS/stanford_ssp","private":false,"owner":{"login":"SU-SWS","id":840730,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg0MDczMA==","avatar_url":"https://avatars3.githubusercontent.com/u/840730?v=4","gravatar_id":"","url":"https://api.github.com/users/SU-SWS","html_url":"https://github.com/SU-SWS","followers_url":"https://api.github.com/users/SU-SWS/followers","following_url":"https://api.github.com/users/SU-SWS/following{/other_user}","gists_url":"https://api.github.com/users/SU-SWS/gists{/gist_id}","starred_url":"https://api.github.com/users/SU-SWS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SU-SWS/subscriptions","organizations_url":"https://api.github.com/users/SU-SWS/orgs","repos_url":"https://api.github.com/users/SU-SWS/repos","events_url":"https://api.github.com/users/SU-SWS/events{/privacy}","received_events_url":"https://api.github.com/users/SU-SWS/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/SU-SWS/stanford_ssp","description":"Drupal module for configuring SimpleSAMLphp in Stanford web environments","fork":false,"url":"https://api.github.com/repos/SU-SWS/stanford_ssp","forks_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/forks","keys_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/teams","hooks_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/hooks","issue_events_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/issues/events{/number}","events_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/events","assignees_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/assignees{/user}","branches_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/branches{/branch}","tags_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/tags","blobs_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/git/refs{/sha}","trees_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/statuses/{sha}","languages_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/languages","stargazers_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/stargazers","contributors_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/contributors","subscribers_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/subscribers","subscription_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/subscription","commits_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/commits{/sha}","git_commits_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/git/commits{/sha}","comments_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/comments{/number}","issue_comment_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/issues/comments{/number}","contents_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/contents/{+path}","compare_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/merges","archive_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/downloads","issues_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/issues{/number}","pulls_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls{/number}","milestones_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/milestones{/number}","notifications_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/labels{/name}","releases_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/releases{/id}","deployments_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/deployments","created_at":"2014-11-21T22:44:48Z","updated_at":"2018-12-04T17:11:50Z","pushed_at":"2018-12-17T18:26:31Z","git_url":"git://github.com/SU-SWS/stanford_ssp.git","ssh_url":"git@github.com:SU-SWS/stanford_ssp.git","clone_url":"https://github.com/SU-SWS/stanford_ssp.git","svn_url":"https://github.com/SU-SWS/stanford_ssp","homepage":null,"size":222,"stargazers_count":5,"watchers_count":5,"language":"PHP","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"archived":false,"open_issues_count":18,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":6,"open_issues":18,"watchers":5,"default_branch":"8.x-1.x"}},"base":{"label":"SU-SWS:8.x-1.x","ref":"8.x-1.x","sha":"5a81773843675b96104b5b27060220d03ee1ce9d","user":{"login":"SU-SWS","id":840730,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg0MDczMA==","avatar_url":"https://avatars3.githubusercontent.com/u/840730?v=4","gravatar_id":"","url":"https://api.github.com/users/SU-SWS","html_url":"https://github.com/SU-SWS","followers_url":"https://api.github.com/users/SU-SWS/followers","following_url":"https://api.github.com/users/SU-SWS/following{/other_user}","gists_url":"https://api.github.com/users/SU-SWS/gists{/gist_id}","starred_url":"https://api.github.com/users/SU-SWS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SU-SWS/subscriptions","organizations_url":"https://api.github.com/users/SU-SWS/orgs","repos_url":"https://api.github.com/users/SU-SWS/repos","events_url":"https://api.github.com/users/SU-SWS/events{/privacy}","received_events_url":"https://api.github.com/users/SU-SWS/received_events","type":"Organization","site_admin":false},"repo":{"id":26981071,"node_id":"MDEwOlJlcG9zaXRvcnkyNjk4MTA3MQ==","name":"stanford_ssp","full_name":"SU-SWS/stanford_ssp","private":false,"owner":{"login":"SU-SWS","id":840730,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg0MDczMA==","avatar_url":"https://avatars3.githubusercontent.com/u/840730?v=4","gravatar_id":"","url":"https://api.github.com/users/SU-SWS","html_url":"https://github.com/SU-SWS","followers_url":"https://api.github.com/users/SU-SWS/followers","following_url":"https://api.github.com/users/SU-SWS/following{/other_user}","gists_url":"https://api.github.com/users/SU-SWS/gists{/gist_id}","starred_url":"https://api.github.com/users/SU-SWS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SU-SWS/subscriptions","organizations_url":"https://api.github.com/users/SU-SWS/orgs","repos_url":"https://api.github.com/users/SU-SWS/repos","events_url":"https://api.github.com/users/SU-SWS/events{/privacy}","received_events_url":"https://api.github.com/users/SU-SWS/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/SU-SWS/stanford_ssp","description":"Drupal module for configuring SimpleSAMLphp in Stanford web environments","fork":false,"url":"https://api.github.com/repos/SU-SWS/stanford_ssp","forks_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/forks","keys_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/teams","hooks_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/hooks","issue_events_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/issues/events{/number}","events_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/events","assignees_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/assignees{/user}","branches_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/branches{/branch}","tags_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/tags","blobs_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/git/refs{/sha}","trees_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/statuses/{sha}","languages_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/languages","stargazers_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/stargazers","contributors_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/contributors","subscribers_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/subscribers","subscription_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/subscription","commits_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/commits{/sha}","git_commits_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/git/commits{/sha}","comments_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/comments{/number}","issue_comment_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/issues/comments{/number}","contents_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/contents/{+path}","compare_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/merges","archive_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/downloads","issues_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/issues{/number}","pulls_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls{/number}","milestones_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/milestones{/number}","notifications_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/labels{/name}","releases_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/releases{/id}","deployments_url":"https://api.github.com/repos/SU-SWS/stanford_ssp/deployments","created_at":"2014-11-21T22:44:48Z","updated_at":"2018-12-04T17:11:50Z","pushed_at":"2018-12-17T18:26:31Z","git_url":"git://github.com/SU-SWS/stanford_ssp.git","ssh_url":"git@github.com:SU-SWS/stanford_ssp.git","clone_url":"https://github.com/SU-SWS/stanford_ssp.git","svn_url":"https://github.com/SU-SWS/stanford_ssp","homepage":null,"size":222,"stargazers_count":5,"watchers_count":5,"language":"PHP","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"archived":false,"open_issues_count":18,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":6,"open_issues":18,"watchers":5,"default_branch":"8.x-1.x"}},"_links":{"self":{"href":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/64"},"html":{"href":"https://github.com/SU-SWS/stanford_ssp/pull/64"},"issue":{"href":"https://api.github.com/repos/SU-SWS/stanford_ssp/issues/64"},"comments":{"href":"https://api.github.com/repos/SU-SWS/stanford_ssp/issues/64/comments"},"review_comments":{"href":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/64/comments"},"review_comment":{"href":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SU-SWS/stanford_ssp/pulls/64/commits"},"statuses":{"href":"https://api.github.com/repos/SU-SWS/stanford_ssp/statuses/f2f8d3792c4b8c52529f3f74ed99fd2ee3a745b0"}},"author_association":"NONE"}}
{"actor":{"display_login":"pookmish"}}