{"action":"created","comment":{"url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/comments/72430341","id":72430341,"diff_hunk":"@@ -239,153 +238,80 @@ public static function removeDiagnostic(core_kernel_classes_Resource $testCenter\n      *\n      * @param $testCenter\n      * @param $sessions\n+     * @param bool $logHistory\n      * @param array [$options]\n      * @return array\n      */\n-    public static function getSessionHistory($testCenter, $sessions, $options = array())\n+    public static function getSessionHistory($testCenter, $sessions, $logHistory = false, $options = array())\n     {\n         if (!is_array($sessions)) {\n             $sessions = $sessions ? [$sessions] : [];\n         }\n+        \n+        $deliveryLog = ServiceManager::getServiceManager()->get(DeliveryLog::SERVICE_ID);\n+\n+        $periodStart = null;\n+        $periodEnd = null;\n \n         $history = [];\n+        $userService = \\tao_models_classes_UserService::singleton();\n+        $proctor = $userService->getCurrentUser();\n+\n+        $deliveryService = ServiceManager::getServiceManager()->get(DeliveryMonitoringService::CONFIG_ID);\n         foreach ($sessions as $sessionUri) {\n-            $startTime = time() - rand(10000, 20000);\n-            $history[] = [\n-                'timestamp' => $startTime,\n-                'session' => $sessionUri,\n-                'role' => 'Test Taker',\n-                'actor' => 'Billy LaPorte',\n-                'event' => 'launch',\n-                'details' => '',\n-                'context' => ''\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + 1,\n-                'session' => $sessionUri,\n-                'role' => 'Test Taker',\n-                'actor' => 'Billy LaPorte',\n-                'event' => 'awaiting',\n-                'details' => '',\n-                'context' => ''\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(1, 10),\n-                'session' => $sessionUri,\n-                'role' => 'Proctor',\n-                'actor' => 'Proctor 1',\n-                'event' => 'authorize',\n-                'details' => '',\n-                'context' => ''\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(10, 20),\n-                'session' => $sessionUri,\n-                'role' => 'Test Taker',\n-                'actor' => 'Billy LaPorte',\n-                'event' => 'start item',\n-                'details' => '',\n-                'context' => 'Section 1 - item 1/3'\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(20, 30),\n-                'session' => $sessionUri,\n-                'role' => 'Test Taker',\n-                'actor' => 'Billy LaPorte',\n-                'event' => 'end item',\n-                'details' => '',\n-                'context' => 'Section 1 - item 1/3'\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(30, 40),\n-                'session' => $sessionUri,\n-                'role' => 'Test Taker',\n-                'actor' => 'Billy LaPorte',\n-                'event' => 'start item',\n-                'details' => '',\n-                'context' => 'Section 1 - item 2/3'\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(40, 50),\n-                'session' => $sessionUri,\n-                'role' => 'Proctor',\n-                'actor' => 'Proctor 1',\n-                'event' => 'pause',\n-                'details' => ['Fire emergency'],\n-                'context' => 'Section 1 - item 2/3'\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(1000, 2000),\n-                'session' => $sessionUri,\n-                'role' => 'Test Taker',\n-                'actor' => 'Billy LaPorte',\n-                'event' => 'launch',\n-                'details' => '',\n-                'context' => ''\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(1000, 2000),\n-                'session' => $sessionUri,\n-                'role' => 'Test Taker',\n-                'actor' => 'Billy LaPorte',\n-                'event' => 'awaiting',\n-                'details' => '',\n-                'context' => ''\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(1000, 2000),\n-                'session' => $sessionUri,\n-                'role' => 'Proctor',\n-                'actor' => 'Proctor 1',\n-                'event' => 'authorize',\n-                'details' => '',\n-                'context' => ''\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(2010, 2020),\n-                'session' => $sessionUri,\n-                'role' => 'Test Taker',\n-                'actor' => 'Billy LaPorte',\n-                'event' => 'start item',\n-                'details' => '',\n-                'context' => 'Section 1 - item 2/3'\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(2010, 2020),\n-                'session' => $sessionUri,\n-                'role' => 'Test Taker',\n-                'actor' => 'Billy LaPorte',\n-                'event' => 'prohibited',\n-                'details' => 'shortcut: Cmd+c',\n-                'context' => 'Section 1 - item 2/3'\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(2020, 2030),\n-                'session' => $sessionUri,\n-                'role' => 'Test Taker',\n-                'actor' => 'Billy LaPorte',\n-                'event' => 'end item',\n-                'details' => '',\n-                'context' => 'Section 1 - item 2/3'\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(2010, 2020),\n-                'session' => $sessionUri,\n-                'role' => 'Test Taker',\n-                'actor' => 'Billy LaPorte',\n-                'event' => 'start item',\n-                'details' => '',\n-                'context' => 'Section 1 - item 3/3'\n-            ];\n-            $history[] = [\n-                'timestamp' => $startTime + rand(2040, 2050),\n-                'session' => $sessionUri,\n-                'role' => 'Proctor',\n-                'actor' => 'Proctor 1',\n-                'event' => 'terminate',\n-                'details' => ['Fire emergency', 'Exit code: T'],\n-                'context' => 'Section 1 - item 3/3'\n-            ];\n+            $valid = false;\n+            $deliveryExecution = \\taoDelivery_models_classes_execution_ServiceProxy::singleton()->getDeliveryExecution($sessionUri);\n+            $delivery = $deliveryExecution->getDelivery();\n+            $executions = $deliveryService->getCurrentDeliveryExecutions($delivery, $testCenter, $options);\n+            foreach($executions as $execution){\n+                if($execution['delivery_execution_id'] === $sessionUri && $execution['authorized_by'] === $proctor->getUri()){\n+                    $valid = true;\n+                    continue;\n+                }\n+            }\n+            if(!$valid){\n+                continue;\n+            }\n+\n+            if($logHistory){\n+                $deliveryLog->log($deliveryExecution->getIdentifier(), 'HISTORY', array());\n+            }\n+\n+            $logs = $deliveryLog->get($deliveryExecution->getIdentifier());\n+            $exportable = array();\n+            foreach($logs as $data){\n+                if($data['event_id'] !== 'HEARTBEAT' && strpos($data['event_id'], 'latency') === FALSE){\n+                    $author = new \\core_kernel_classes_Resource($data['created_by']);\n+                    $proctorRole = new \\core_kernel_classes_Resource('http://www.tao.lu/Ontologies/TAOProctor.rdf#ProctorRole');\n+                    $role = ($userService->userHasRoles($author, $proctorRole)) ? __('Proctor') : __('Test-Taker');\n+\n+                    if(is_string($data['data'])){\n+                        $data['data'] = json_decode($data['data'], true);\n+                    }\n+                    if(isset($data['data']['type'])) {\n+                        $event_id = $data['data']['type'];\n+\n+                        $context = (isset($data['data']['context']['readable']))?$data['data']['context']['readable'] : '';\n+                        $details = (isset($data['data']['context']['shortcut']))?$data['data']['context']['shortcut']: '';\n+                    } else {\n+                        $details = (isset($data['data']['reason']['reasons']) && !is_null($data['data']['reason']['reasons']))?array_merge(array_values($data['data']['reason']['reasons']), array($data['data']['reason']['comment'])) : '';","path":"helpers/TestCenterHelper.php","position":212,"original_position":214,"commit_id":"316029c71bb8f240e14140f6f127d5748a7c8e71","original_commit_id":"78f9c1f72a0df6f9b5f3f20a589e08b9bede9ed6","user":{"login":"jsconan","id":1500098,"avatar_url":"https://avatars.githubusercontent.com/u/1500098?v=3","gravatar_id":"","url":"https://api.github.com/users/jsconan","html_url":"https://github.com/jsconan","followers_url":"https://api.github.com/users/jsconan/followers","following_url":"https://api.github.com/users/jsconan/following{/other_user}","gists_url":"https://api.github.com/users/jsconan/gists{/gist_id}","starred_url":"https://api.github.com/users/jsconan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsconan/subscriptions","organizations_url":"https://api.github.com/users/jsconan/orgs","repos_url":"https://api.github.com/users/jsconan/repos","events_url":"https://api.github.com/users/jsconan/events{/privacy}","received_events_url":"https://api.github.com/users/jsconan/received_events","type":"User","site_admin":false},"body":"Is the 'reason' index always exist if the type is not provided ? This could lead to issue if the data is extended later. I would rather place a ` elseif (isset($data['data']['reason']))` here. Or whatever could ensure the needed format.","created_at":"2016-07-27T12:33:06Z","updated_at":"2016-07-27T12:33:06Z","html_url":"https://github.com/oat-sa/extension-tao-proctoring/pull/183#discussion_r72430341","pull_request_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/183","_links":{"self":{"href":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/comments/72430341"},"html":{"href":"https://github.com/oat-sa/extension-tao-proctoring/pull/183#discussion_r72430341"},"pull_request":{"href":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/183"}}},"pull_request":{"url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/183","id":78991483,"html_url":"https://github.com/oat-sa/extension-tao-proctoring/pull/183","diff_url":"https://github.com/oat-sa/extension-tao-proctoring/pull/183.diff","patch_url":"https://github.com/oat-sa/extension-tao-proctoring/pull/183.patch","issue_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/issues/183","number":183,"state":"open","locked":false,"title":"Feature/tao 2805 history service","user":{"login":"antoinerobin","id":5881795,"avatar_url":"https://avatars.githubusercontent.com/u/5881795?v=3","gravatar_id":"","url":"https://api.github.com/users/antoinerobin","html_url":"https://github.com/antoinerobin","followers_url":"https://api.github.com/users/antoinerobin/followers","following_url":"https://api.github.com/users/antoinerobin/following{/other_user}","gists_url":"https://api.github.com/users/antoinerobin/gists{/gist_id}","starred_url":"https://api.github.com/users/antoinerobin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antoinerobin/subscriptions","organizations_url":"https://api.github.com/users/antoinerobin/orgs","repos_url":"https://api.github.com/users/antoinerobin/repos","events_url":"https://api.github.com/users/antoinerobin/events{/privacy}","received_events_url":"https://api.github.com/users/antoinerobin/received_events","type":"User","site_admin":false},"body":"use : https://github.com/oat-sa/extension-tao-act/pull/315 to test it ","created_at":"2016-07-27T09:23:50Z","updated_at":"2016-07-27T12:33:06Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e92b755022b49d7993b67d949cbcd57491cb88c0","assignee":{"login":"jsconan","id":1500098,"avatar_url":"https://avatars.githubusercontent.com/u/1500098?v=3","gravatar_id":"","url":"https://api.github.com/users/jsconan","html_url":"https://github.com/jsconan","followers_url":"https://api.github.com/users/jsconan/followers","following_url":"https://api.github.com/users/jsconan/following{/other_user}","gists_url":"https://api.github.com/users/jsconan/gists{/gist_id}","starred_url":"https://api.github.com/users/jsconan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsconan/subscriptions","organizations_url":"https://api.github.com/users/jsconan/orgs","repos_url":"https://api.github.com/users/jsconan/repos","events_url":"https://api.github.com/users/jsconan/events{/privacy}","received_events_url":"https://api.github.com/users/jsconan/received_events","type":"User","site_admin":false},"assignees":[{"login":"jsconan","id":1500098,"avatar_url":"https://avatars.githubusercontent.com/u/1500098?v=3","gravatar_id":"","url":"https://api.github.com/users/jsconan","html_url":"https://github.com/jsconan","followers_url":"https://api.github.com/users/jsconan/followers","following_url":"https://api.github.com/users/jsconan/following{/other_user}","gists_url":"https://api.github.com/users/jsconan/gists{/gist_id}","starred_url":"https://api.github.com/users/jsconan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsconan/subscriptions","organizations_url":"https://api.github.com/users/jsconan/orgs","repos_url":"https://api.github.com/users/jsconan/repos","events_url":"https://api.github.com/users/jsconan/events{/privacy}","received_events_url":"https://api.github.com/users/jsconan/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/183/commits","review_comments_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/183/comments","review_comment_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/comments{/number}","comments_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/issues/183/comments","statuses_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/statuses/316029c71bb8f240e14140f6f127d5748a7c8e71","head":{"label":"oat-sa:feature/TAO-2805-history-service","ref":"feature/TAO-2805-history-service","sha":"316029c71bb8f240e14140f6f127d5748a7c8e71","user":{"login":"oat-sa","id":7581081,"avatar_url":"https://avatars.githubusercontent.com/u/7581081?v=3","gravatar_id":"","url":"https://api.github.com/users/oat-sa","html_url":"https://github.com/oat-sa","followers_url":"https://api.github.com/users/oat-sa/followers","following_url":"https://api.github.com/users/oat-sa/following{/other_user}","gists_url":"https://api.github.com/users/oat-sa/gists{/gist_id}","starred_url":"https://api.github.com/users/oat-sa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oat-sa/subscriptions","organizations_url":"https://api.github.com/users/oat-sa/orgs","repos_url":"https://api.github.com/users/oat-sa/repos","events_url":"https://api.github.com/users/oat-sa/events{/privacy}","received_events_url":"https://api.github.com/users/oat-sa/received_events","type":"Organization","site_admin":false},"repo":{"id":39016295,"name":"extension-tao-proctoring","full_name":"oat-sa/extension-tao-proctoring","owner":{"login":"oat-sa","id":7581081,"avatar_url":"https://avatars.githubusercontent.com/u/7581081?v=3","gravatar_id":"","url":"https://api.github.com/users/oat-sa","html_url":"https://github.com/oat-sa","followers_url":"https://api.github.com/users/oat-sa/followers","following_url":"https://api.github.com/users/oat-sa/following{/other_user}","gists_url":"https://api.github.com/users/oat-sa/gists{/gist_id}","starred_url":"https://api.github.com/users/oat-sa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oat-sa/subscriptions","organizations_url":"https://api.github.com/users/oat-sa/orgs","repos_url":"https://api.github.com/users/oat-sa/repos","events_url":"https://api.github.com/users/oat-sa/events{/privacy}","received_events_url":"https://api.github.com/users/oat-sa/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/oat-sa/extension-tao-proctoring","description":"TaoProctoring extension","fork":false,"url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring","forks_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/forks","keys_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/keys{/key_id}","collaborators_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/teams","hooks_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/hooks","issue_events_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/issues/events{/number}","events_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/events","assignees_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/assignees{/user}","branches_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/branches{/branch}","tags_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/tags","blobs_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/git/refs{/sha}","trees_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/git/trees{/sha}","statuses_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/statuses/{sha}","languages_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/languages","stargazers_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/stargazers","contributors_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/contributors","subscribers_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/subscribers","subscription_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/subscription","commits_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/commits{/sha}","git_commits_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/git/commits{/sha}","comments_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/comments{/number}","issue_comment_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/issues/comments{/number}","contents_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/contents/{+path}","compare_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/compare/{base}...{head}","merges_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/merges","archive_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/downloads","issues_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/issues{/number}","pulls_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls{/number}","milestones_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/milestones{/number}","notifications_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/labels{/name}","releases_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/releases{/id}","deployments_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/deployments","created_at":"2015-07-13T14:15:04Z","updated_at":"2016-01-29T18:42:24Z","pushed_at":"2016-07-27T12:30:50Z","git_url":"git://github.com/oat-sa/extension-tao-proctoring.git","ssh_url":"git@github.com:oat-sa/extension-tao-proctoring.git","clone_url":"https://github.com/oat-sa/extension-tao-proctoring.git","svn_url":"https://github.com/oat-sa/extension-tao-proctoring","homepage":null,"size":1540,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":3,"forks":1,"open_issues":3,"watchers":0,"default_branch":"master"}},"base":{"label":"oat-sa:feature/TAO-2783_session_history","ref":"feature/TAO-2783_session_history","sha":"23795762c3981b2995d4a8503582c549c3270432","user":{"login":"oat-sa","id":7581081,"avatar_url":"https://avatars.githubusercontent.com/u/7581081?v=3","gravatar_id":"","url":"https://api.github.com/users/oat-sa","html_url":"https://github.com/oat-sa","followers_url":"https://api.github.com/users/oat-sa/followers","following_url":"https://api.github.com/users/oat-sa/following{/other_user}","gists_url":"https://api.github.com/users/oat-sa/gists{/gist_id}","starred_url":"https://api.github.com/users/oat-sa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oat-sa/subscriptions","organizations_url":"https://api.github.com/users/oat-sa/orgs","repos_url":"https://api.github.com/users/oat-sa/repos","events_url":"https://api.github.com/users/oat-sa/events{/privacy}","received_events_url":"https://api.github.com/users/oat-sa/received_events","type":"Organization","site_admin":false},"repo":{"id":39016295,"name":"extension-tao-proctoring","full_name":"oat-sa/extension-tao-proctoring","owner":{"login":"oat-sa","id":7581081,"avatar_url":"https://avatars.githubusercontent.com/u/7581081?v=3","gravatar_id":"","url":"https://api.github.com/users/oat-sa","html_url":"https://github.com/oat-sa","followers_url":"https://api.github.com/users/oat-sa/followers","following_url":"https://api.github.com/users/oat-sa/following{/other_user}","gists_url":"https://api.github.com/users/oat-sa/gists{/gist_id}","starred_url":"https://api.github.com/users/oat-sa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oat-sa/subscriptions","organizations_url":"https://api.github.com/users/oat-sa/orgs","repos_url":"https://api.github.com/users/oat-sa/repos","events_url":"https://api.github.com/users/oat-sa/events{/privacy}","received_events_url":"https://api.github.com/users/oat-sa/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/oat-sa/extension-tao-proctoring","description":"TaoProctoring extension","fork":false,"url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring","forks_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/forks","keys_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/keys{/key_id}","collaborators_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/teams","hooks_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/hooks","issue_events_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/issues/events{/number}","events_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/events","assignees_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/assignees{/user}","branches_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/branches{/branch}","tags_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/tags","blobs_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/git/refs{/sha}","trees_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/git/trees{/sha}","statuses_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/statuses/{sha}","languages_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/languages","stargazers_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/stargazers","contributors_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/contributors","subscribers_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/subscribers","subscription_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/subscription","commits_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/commits{/sha}","git_commits_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/git/commits{/sha}","comments_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/comments{/number}","issue_comment_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/issues/comments{/number}","contents_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/contents/{+path}","compare_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/compare/{base}...{head}","merges_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/merges","archive_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/downloads","issues_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/issues{/number}","pulls_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls{/number}","milestones_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/milestones{/number}","notifications_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/labels{/name}","releases_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/releases{/id}","deployments_url":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/deployments","created_at":"2015-07-13T14:15:04Z","updated_at":"2016-01-29T18:42:24Z","pushed_at":"2016-07-27T12:30:50Z","git_url":"git://github.com/oat-sa/extension-tao-proctoring.git","ssh_url":"git@github.com:oat-sa/extension-tao-proctoring.git","clone_url":"https://github.com/oat-sa/extension-tao-proctoring.git","svn_url":"https://github.com/oat-sa/extension-tao-proctoring","homepage":null,"size":1540,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":3,"forks":1,"open_issues":3,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/183"},"html":{"href":"https://github.com/oat-sa/extension-tao-proctoring/pull/183"},"issue":{"href":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/issues/183"},"comments":{"href":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/issues/183/comments"},"review_comments":{"href":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/183/comments"},"review_comment":{"href":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/pulls/183/commits"},"statuses":{"href":"https://api.github.com/repos/oat-sa/extension-tao-proctoring/statuses/316029c71bb8f240e14140f6f127d5748a7c8e71"}}}}
{"actor":{"display_login":"jsconan"}}