{"action":"created","comment":{"url":"https://api.github.com/repos/Studio-42/elFinder/pulls/comments/67613699","id":67613699,"diff_hunk":"@@ -0,0 +1,1659 @@\n+<?php\n+elFinder::$netDrivers['googledrive'] = 'GoogleDrive';\n+\n+/**\n+ * Simple elFinder driver for GoogleDrive\n+ * google-api-php-client-2.x or above\n+ *\n+ * @author Dmitry (dio) Levashov\n+ * @author Cem (discofever)\n+ **/\n+class elFinderVolumeGoogleDrive extends elFinderVolumeDriver {\n+\n+\t/**\n+\t * Driver id\n+\t * Must be started from letter and contains [a-z0-9]\n+\t * Used as part of volume id\n+\t *\n+\t * @var string\n+\t **/\n+\tprotected $driverId = 'gd';\n+\n+\t/**\n+\t * OAuth object\n+\t *\n+\t * @var oauth\n+\t **/\n+\tprotected $oauth = null;\n+\t\n+\t//protected $client = null;\n+\n+\t/**\n+\t * GoogleDrive object\n+\t *\n+\t * @var googledrive\n+\t **/\n+\tprotected $googledrive = null;\n+\t\n+    /**\n+     * MIME tyoe of directory\n+     *\n+     * @var string\n+     */\n+    const DIRMIME = 'application/vnd.google-apps.folder';\n+\t\n+\t /**\n+     * Fetch fields for list\n+     *\n+     * @var string\n+     */\n+    const FETCHFIELDS_LIST = 'files(id,name,mimeType,modifiedTime,parents,size,imageMediaMetadata(height,width),webContentLink,thumbnailLink),nextPageToken';\n+\t\n+\t/**\n+     * Fetch fields for get\n+     *\n+     * @var string\n+     */\n+    const FETCHFIELDS_GET = 'id,name,mimeType,modifiedTime,parents,size,imageMediaMetadata(height,width),webContentLink,thumbnailLink'; \n+\t\n+\t/**\n+\t * Directory for meta data caches\n+\t * If not set driver not cache meta data\n+\t *\n+\t * @var string\n+\t **/\n+\tprotected $metaCache = '';\n+\t\n+\t/**\n+\t * Last API error message\n+\t *\n+\t * @var string\n+\t **/\n+\tprotected $apiError = '';\n+\n+\t/**\n+\t * Directory for tmp files\n+\t * If not set driver will try to use tmbDir as tmpDir\n+\t *\n+\t * @var string\n+\t **/\n+\tprotected $tmp = '';\n+\t\n+\t/**\n+\t * Net mount key\n+\t *\n+\t * @var string\n+\t **/\n+\tpublic $netMountKey = '';\n+\t\n+\t/**\n+\t * drive.google.com uid\n+\t *\n+\t * @var string\n+\t **/\n+\tprotected $googledriveUid = '';\n+\t\n+\t/**\n+\t * Gdrive download host, replaces 'drive.google.com' of shares URL\n+\t * \n+\t * @var string\n+\t */\n+\tprivate $googledrive_dlhost = 'drive.google.com';\n+\t\t\n+\tprivate $tmbPrefix = '';\n+\t\n+\t\n+\t/**\n+\t * Constructor\n+\t * Extend options with required fields\n+\t *\n+\t * @return void\n+\t * @author Dmitry (dio) Levashov\n+\t * @author Cem (DiscoFever)\n+\t **/\n+\tpublic function __construct() {\t\n+\t\t@ include_once 'google-api-php-client/vendor/autoload.php';\n+\t\t\t\t\n+\t\t$opts = array(\n+\t\t\t'client_id'       \t=> '',\n+\t\t\t'client_secret'    \t=> '',\t\t\t\t\n+\t\t\t'accessToken'       => '',\n+\t\t\t'accessTokenSecret' => '',\n+\t\t\t'googledriveUid'    => '',\n+\t\t\t'root'\t\t\t\t=> 'GoogleDrive.com',\t\t\t\t\t\t\n+\t\t\t'path'              => '/',\n+\t\t\t'childpath'         => '',\n+\t\t\t'separator'         => '/',\t\t\t\n+\t\t\t'treeDeep'          => 0,\n+\t\t\t'tmbPath'           => '../files/.tmb',\n+\t\t\t'tmbURL'            => dirname($_SERVER['PHP_SELF']) . '/../files/.tmb',\n+\t\t\t'tmpPath'           => '../files/.tmp',\n+\t\t\t'getTmbSize'        => 'large', // small: 32x32, medium or s: 64x64, large or m: 128x128, l: 640x480, xl: 1024x768\n+\t\t\t'metaCachePath'     => '',\n+\t\t\t'metaCacheTime'     => '600', // 10m\n+\t\t\t'acceptedName'      => '#^[^/\\\\?*:|\"<>]*[^./\\\\?*:|\"<>]$#',\n+\t\t\t'rootCssClass'      => 'elfinder-navbar-root-googledrive'\n+\t\t);\n+\t\t$this->options = array_merge($this->options, $opts);\n+\t\t$this->options['mimeDetect'] = 'internal';\n+\t\t\t\t\n+\t}\n+\n+\n+\t/**\n+\t * Prepare\n+\t * Call from elFinder::netmout() before volume->mount()\n+\t *\n+\t * @return Array\n+\t * @author Naoki Sawada\n+\t **/\t \t \n+\tpublic function netmountPrepare($options) {\n+\t\n+\t\tif (empty($options['client_id']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTID')){\n+\t\t\t$options['client_id'] = ELFINDER_GOOGLEDRIVE_CLIENTID;\n+\t\t}\n+\t\tif (empty($options['client_secret']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTSECRET')){\n+\t\t\t$options['client_secret'] = ELFINDER_GOOGLEDRIVE_CLIENTSECRET;\n+\t\t}\n+\t\t\t\t\t\n+\t\tif (isset($_GET['code'])) {\t\t\t\n+\t\t\ttry{\t\t\t\n+\t\t\t\t$client = new Google_Client();\n+\t\t\t\t\t\t\t\n+\t\t\t\t$client->setClientId($options['client_id']);\t\t\t\n+\t\t\t\t$client->setClientSecret($options['client_secret']);\t\t\t\n+\t\t\t\t$client->setRedirectUri($this->getConnectorUrl().'?cmd=netmount&protocol=googledrive&host=1');\t\t\t\n+\t\t\t\t\t\t\t\t\t\t\t\t\n+\t\t\t\t$oauth_token = $client->fetchAccessTokenWithAuthCode($_GET['code']);\n+\t\t\t\t\t\t\t\t\n+\t\t\t\tif (!empty($oauth_token)) {\t\t\t\t\t\n+\t\t\t\t\t$this->session->set('elFinderGoogleDriveAuthTokens', $oauth_token);\n+\t\t\t\t\t$options['user'] ='init';\n+\t\t\t\t\t$options['pass'] ='return';\n+\t\t\t\t}\t\t\t\t\n+\t\t\t\t}catch (Exception $e){\t\t\t\t\n+\t\t\t\t\treturn $e->getMessage();\n+\t\t\t}\n+  \t\t}\n+    \t\n+\t\tif ($options['pass'] === 'reauth') {\n+\t\t\t$options['pass'] = '';\n+\t\t\t$this->session->remove('elFinderGoogledriveTokens');\n+\t\t\t$this->session->remove('elFinderGoogleDriveAuthTokens');\n+\t\t} else if ($options['pass'] === 'googledrive') {\n+\t\t\t$options['pass'] = '';\n+\t\t}\n+\t\t\n+\t\tif ($options['user'] === 'init') {\n+\t\t\n+\t\t\tif (empty($options['client_id']) || empty($options['client_secret'])) {\n+\t\t\t\t\n+\t\t\t\treturn array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');\n+\t\t\t}\n+\t\t\t\n+\t\t\ttry{\n+\t\t\t\t$this->oauth = new Google_Client();\n+\t\t\t\t\t\t\t\t\n+\t\t\t}catch (Exception $e){\t\n+\t\t\t\t\n+\t\t\t\treturn array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');\n+\t\t\t}\n+\t\t\t\n+\t\t\tif (empty($_GET['code'])) {\n+\t\t\t\t$html = '';\n+\t\t\t\t\n+\t\t\t\tif ($this->session->get('elFinderGoogledriveTokens')!==null) {\n+\t\t\t\t\t// token check\n+\t\t\t\t\ttry {\n+\t\t\t\t\t\t\n+\t\t\t\t\t\tlist($options['googledriveUid'], $options['accessToken']) = $this->session->get('elFinderGoogledriveTokens');\t\t\t\t\t\t\n+\t\t\t\t\t\t\t\t\t\t\t\t\n+\t\t\t\t\t\t$script = '<script>\n+\t\t\t\t\t\t\t$(\"#'.$options['id'].'\").elfinder(\"instance\").trigger(\"netmount\", {protocol: \"googledrive\", mode: \"done\"});\n+\t\t\t\t\t\t</script>';\n+\t\t\t\t\t\t$html = $script;\n+\t\t\t\t\t\t\n+\t\t\t\t\t} catch (Exception $e) {\n+\t\t\t\t\t\t$this->session->remove('elFinderGoogledriveTokens');\n+\t\t\t\t\t\t$this->session->remove('elFinderGoogleDriveAuthTokens');\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t\t\n+\t\t\t\tif (! $html) {\n+\t\t\t\t\t// get customdata\t\t\t\t\t\n+\t\t\t\t\t$cdata = '';\n+\t\t\t\t\t$innerKeys = array('cmd', 'host', 'options', 'pass', 'protocol', 'user');\n+\t\t\t\t\t$this->ARGS = $_SERVER['REQUEST_METHOD'] === 'POST'? $_POST : $_GET;\n+\t\t\t\t\tforeach($this->ARGS as $k => $v) {\n+\t\t\t\t\t\tif (! in_array($k, $innerKeys)) {\n+\t\t\t\t\t\t\t$cdata .= '&' . $k . '=' . rawurlencode($v);\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t\t\n+\t\t\t\t\tif (strpos($options['url'], 'http') !== 0 ) {\n+\t\t\t\t\t\t$options['url'] = $this->getConnectorUrl();\n+\t\t\t\t\t}\n+\t\t\t\t\t$callback  = $options['url']\n+\t\t\t\t\t  .'?cmd=netmount&protocol=googledrive&host=googledrive.com&user=init&pass=return&node='.$options['id'].$cdata;\n+\t\t\t\t\t\t\t\t\t\t\n+\t\t\t\t\ttry {\n+\t\t\t\t\t\t$client = new Google_Client();\n+\t\t\t\t\t\t\t\t\t\t\n+    \t\t\t\t\t// Get your credentials from the console\n+\t\t\t\t\t\t$client->setClientId($options['client_id']);\n+\t\t\t\t\t\t$client->setClientSecret($options['client_secret']);\n+\t\t\t\t\t\t$client->setRedirectUri($this->getConnectorUrl().'?cmd=netmount&protocol=googledrive&host=1');\t\t\t\t\t\t\n+\t\t\t\t\t\t//$client->setScopes([Google_Service_Oauth2::USERINFO_PROFILE , Google_Service_Drive::DRIVE]);\n+\t\t\t\t\t\t$client->setScopes([Google_Service_Drive::DRIVE]);\n+\t\t\t\t\t\tif (! empty($options['offline'])) {\n+                        \t$client->setApprovalPrompt('force');\n+                        \t$client->setAccessType('offline');\n+                    \t}\t\t\t\t\t\t\n+\t\t\t\t\t\n+\t\t\t\t\t\t$service = new Google_Service_Drive($client);\n+    \t\t\t\t\t$this->oauth = $client->createAuthUrl();\n+\t\t\t\t\t\t$url = $this->oauth.='&oauth_callback='.rawurlencode($callback);\n+\t\t\t\t\t\t\n+\t\t\t\t\t} catch (Exception $e) {\n+\t\t\t\t\t\treturn array('exit' => true, 'body' => '{msg:errAccess}');\n+\t\t\t\t\t}\n+\t\t\t\t\t\n+\t\t\t\t\t$html = '<input id=\"elf-volumedriver-googledrive-host-btn\" class=\"ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only\" value=\"{msg:btnApprove}\" type=\"button\" onclick=\"window.open(\\''.$url.'\\')\">';\n+\t\t\t\t\t$html .= '<script>\n+\t\t\t\t\t\t$(\"#'.$options['id'].'\").elfinder(\"instance\").trigger(\"netmount\", {protocol: \"googledrive\", mode: \"makebtn\"});\n+\t\t\t\t\t</script>';\n+\t\t\t\t}\n+\t\t\t\t\n+\t\t\t\treturn array('exit' => true, 'body' => $html);\n+\t\t\t} else {\n+\t\t\t\t\t\n+\t\t\t\t$client = new Google_Client();\n+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\n+    \t\t\t$client->setAccessToken($this->session->get('elFinderGoogleDriveAuthTokens'));\t\t\t\t\n+\t\t\t\t$oauth_token = $this->session->get('elFinderGoogleDriveAuthTokens');\t\t\t\t\t\t\t\t\n+\t\t\t\t$this->session->set('elFinderGoogledriveTokens', array(rand(1000000000,9999999999), $oauth_token));\n+\t\t\t\t\n+\t\t\t\t$service = new Google_Service_Drive($client);\n+\t\t\t\t$folders = [];\n+                    foreach($service->files->listFiles([\n+                        'pageSize' => 1000,\n+                        'q' => 'trashed = false and mimeType = \"application/vnd.google-apps.folder\"'\n+                    ]) as $f) {\n+                        $folders[$f->getId()] = $f->getName();\n+                    }\n+\t\t\t\t\t\n+\t\t\t\tnatcasesort($folders);\n+\t\t\t\t$folders = ['root' => 'My Drive'] + $folders;               \n+\t\t\t\t$folders = json_encode($folders);\t\t\t\t\n+\t\t\t\t$options['pass'] = 'return';\n+\t\t\t\t\t\n+\t\t\t\t$out = array(\n+\t\t\t\t\t'node' => 'elfinder',\n+\t\t\t\t\t'json' => '{\"protocol\": \"googledrive\", \"mode\": \"done\", \"folders\": '.$folders.'}',\n+\t\t\t\t\t'bind' => 'netmount'\n+\t\t\t\t);\n+\t\t\t\t\n+\t\t\t\treturn array('exit' => 'callback', 'out' => $out);\n+\t\t\t}\n+\n+\t\t}\n+\t\tif ($this->session->get('elFinderGoogledriveTokens')) {\n+\t\t\n+\t\t\tlist($options['googledriveUid'], $options['accessToken']) = $this->session->get('elFinderGoogledriveTokens');\n+\t\t\t$this->session->set('DriveCounter', (int)$this->session->get('DriveCounter')+1);\n+\t\t\t\t\n+\t\t}\n+\t\tunset($options['user'], $options['pass']);\n+\t\t\t\n+\t\treturn $options;\n+\t}\n+\t\n+\t/**\n+\t * process of on netunmount\n+\t * Drop `googledrive` & rm thumbs\n+\t * \n+\t * @param array $options\n+\t * @return boolean\n+\t */\n+\tpublic function netunmount($netVolumes, $key) {\t\n+\t\t$count = 0;\n+\t\t$googledriveUid = '';\n+\t\tif (isset($netVolumes[$key])) {\n+\t\t\t$googledriveUid = $netVolumes[$key]['googledriveUid'];\n+\t\t}\n+\t\tforeach($netVolumes as $volume) {\n+\t\t\tif (@$volume['host'] === 'googledrive' && @$volume['googledriveUid'] === $googledriveUid) {\n+\t\t\t\t$count++;\n+\t\t\t}\n+\t\t}\n+\t\tif ($count === 1) {\t\t\t\n+\t\t\tforeach(glob(rtrim($this->options['tmbPath'], '\\\\/').DIRECTORY_SEPARATOR.$this->tmbPrefix.'*.png') as $tmb) {\n+\t\t\t\tunlink($tmb);\n+\t\t\t}\n+\t\t}\n+\t\tif((int)$this->session->get('DriveCounter')>1){\n+\t\t\t$this->session->set('DriveCounter', (int)$this->session->get('DriveCounter')-1);\n+\t\t}else{\t\n+\t\t\t$client = new Google_Client();\n+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\n+\t\t\t$client->setAccessToken($this->session->get('elFinderGoogleDriveAuthTokens'));\t\t\t\t\t\t\t\t\t\n+\t\t\t$client->revokeToken();\t","path":"php/elFinderVolumeGoogleDrive.class.php","position":340,"original_position":340,"commit_id":"732d4d1cd6f43c1f5074fa75d9f413b34eb26aa4","original_commit_id":"732d4d1cd6f43c1f5074fa75d9f413b34eb26aa4","user":{"login":"nao-pon","id":1412630,"avatar_url":"https://avatars.githubusercontent.com/u/1412630?v=3","gravatar_id":"","url":"https://api.github.com/users/nao-pon","html_url":"https://github.com/nao-pon","followers_url":"https://api.github.com/users/nao-pon/followers","following_url":"https://api.github.com/users/nao-pon/following{/other_user}","gists_url":"https://api.github.com/users/nao-pon/gists{/gist_id}","starred_url":"https://api.github.com/users/nao-pon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nao-pon/subscriptions","organizations_url":"https://api.github.com/users/nao-pon/orgs","repos_url":"https://api.github.com/users/nao-pon/repos","events_url":"https://api.github.com/users/nao-pon/events{/privacy}","received_events_url":"https://api.github.com/users/nao-pon/received_events","type":"User","site_admin":false},"body":"revokeToken() is broken anothor fixed GoogleDrive volume drive with refreshToken. I think `$client->revokeToken()` is unnecessary.","created_at":"2016-06-19T09:22:06Z","updated_at":"2016-06-19T09:22:06Z","html_url":"https://github.com/Studio-42/elFinder/pull/1482#discussion_r67613699","pull_request_url":"https://api.github.com/repos/Studio-42/elFinder/pulls/1482","_links":{"self":{"href":"https://api.github.com/repos/Studio-42/elFinder/pulls/comments/67613699"},"html":{"href":"https://github.com/Studio-42/elFinder/pull/1482#discussion_r67613699"},"pull_request":{"href":"https://api.github.com/repos/Studio-42/elFinder/pulls/1482"}}},"pull_request":{"url":"https://api.github.com/repos/Studio-42/elFinder/pulls/1482","id":74356922,"html_url":"https://github.com/Studio-42/elFinder/pull/1482","diff_url":"https://github.com/Studio-42/elFinder/pull/1482.diff","patch_url":"https://github.com/Studio-42/elFinder/pull/1482.patch","issue_url":"https://api.github.com/repos/Studio-42/elFinder/issues/1482","number":1482,"state":"open","locked":false,"title":"Google Drive Mounting with elFinder","user":{"login":"rajasharma27","id":16103829,"avatar_url":"https://avatars.githubusercontent.com/u/16103829?v=3","gravatar_id":"","url":"https://api.github.com/users/rajasharma27","html_url":"https://github.com/rajasharma27","followers_url":"https://api.github.com/users/rajasharma27/followers","following_url":"https://api.github.com/users/rajasharma27/following{/other_user}","gists_url":"https://api.github.com/users/rajasharma27/gists{/gist_id}","starred_url":"https://api.github.com/users/rajasharma27/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rajasharma27/subscriptions","organizations_url":"https://api.github.com/users/rajasharma27/orgs","repos_url":"https://api.github.com/users/rajasharma27/repos","events_url":"https://api.github.com/users/rajasharma27/events{/privacy}","received_events_url":"https://api.github.com/users/rajasharma27/received_events","type":"User","site_admin":false},"body":"Sir, \r\nthis class working perfectly.\r\nplease add in your elFinder","created_at":"2016-06-19T07:20:21Z","updated_at":"2016-06-19T09:22:06Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1ff4cc40489b119545668535239285640a09cec2","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Studio-42/elFinder/pulls/1482/commits","review_comments_url":"https://api.github.com/repos/Studio-42/elFinder/pulls/1482/comments","review_comment_url":"https://api.github.com/repos/Studio-42/elFinder/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Studio-42/elFinder/issues/1482/comments","statuses_url":"https://api.github.com/repos/Studio-42/elFinder/statuses/732d4d1cd6f43c1f5074fa75d9f413b34eb26aa4","head":{"label":"rajasharma27:patch-11","ref":"patch-11","sha":"732d4d1cd6f43c1f5074fa75d9f413b34eb26aa4","user":{"login":"rajasharma27","id":16103829,"avatar_url":"https://avatars.githubusercontent.com/u/16103829?v=3","gravatar_id":"","url":"https://api.github.com/users/rajasharma27","html_url":"https://github.com/rajasharma27","followers_url":"https://api.github.com/users/rajasharma27/followers","following_url":"https://api.github.com/users/rajasharma27/following{/other_user}","gists_url":"https://api.github.com/users/rajasharma27/gists{/gist_id}","starred_url":"https://api.github.com/users/rajasharma27/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rajasharma27/subscriptions","organizations_url":"https://api.github.com/users/rajasharma27/orgs","repos_url":"https://api.github.com/users/rajasharma27/repos","events_url":"https://api.github.com/users/rajasharma27/events{/privacy}","received_events_url":"https://api.github.com/users/rajasharma27/received_events","type":"User","site_admin":false},"repo":{"id":51604059,"name":"elFinder","full_name":"rajasharma27/elFinder","owner":{"login":"rajasharma27","id":16103829,"avatar_url":"https://avatars.githubusercontent.com/u/16103829?v=3","gravatar_id":"","url":"https://api.github.com/users/rajasharma27","html_url":"https://github.com/rajasharma27","followers_url":"https://api.github.com/users/rajasharma27/followers","following_url":"https://api.github.com/users/rajasharma27/following{/other_user}","gists_url":"https://api.github.com/users/rajasharma27/gists{/gist_id}","starred_url":"https://api.github.com/users/rajasharma27/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rajasharma27/subscriptions","organizations_url":"https://api.github.com/users/rajasharma27/orgs","repos_url":"https://api.github.com/users/rajasharma27/repos","events_url":"https://api.github.com/users/rajasharma27/events{/privacy}","received_events_url":"https://api.github.com/users/rajasharma27/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rajasharma27/elFinder","description":"Open-source file manager for web, written in JavaScript using jQuery and jQuery UI","fork":true,"url":"https://api.github.com/repos/rajasharma27/elFinder","forks_url":"https://api.github.com/repos/rajasharma27/elFinder/forks","keys_url":"https://api.github.com/repos/rajasharma27/elFinder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rajasharma27/elFinder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rajasharma27/elFinder/teams","hooks_url":"https://api.github.com/repos/rajasharma27/elFinder/hooks","issue_events_url":"https://api.github.com/repos/rajasharma27/elFinder/issues/events{/number}","events_url":"https://api.github.com/repos/rajasharma27/elFinder/events","assignees_url":"https://api.github.com/repos/rajasharma27/elFinder/assignees{/user}","branches_url":"https://api.github.com/repos/rajasharma27/elFinder/branches{/branch}","tags_url":"https://api.github.com/repos/rajasharma27/elFinder/tags","blobs_url":"https://api.github.com/repos/rajasharma27/elFinder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rajasharma27/elFinder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rajasharma27/elFinder/git/refs{/sha}","trees_url":"https://api.github.com/repos/rajasharma27/elFinder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rajasharma27/elFinder/statuses/{sha}","languages_url":"https://api.github.com/repos/rajasharma27/elFinder/languages","stargazers_url":"https://api.github.com/repos/rajasharma27/elFinder/stargazers","contributors_url":"https://api.github.com/repos/rajasharma27/elFinder/contributors","subscribers_url":"https://api.github.com/repos/rajasharma27/elFinder/subscribers","subscription_url":"https://api.github.com/repos/rajasharma27/elFinder/subscription","commits_url":"https://api.github.com/repos/rajasharma27/elFinder/commits{/sha}","git_commits_url":"https://api.github.com/repos/rajasharma27/elFinder/git/commits{/sha}","comments_url":"https://api.github.com/repos/rajasharma27/elFinder/comments{/number}","issue_comment_url":"https://api.github.com/repos/rajasharma27/elFinder/issues/comments{/number}","contents_url":"https://api.github.com/repos/rajasharma27/elFinder/contents/{+path}","compare_url":"https://api.github.com/repos/rajasharma27/elFinder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rajasharma27/elFinder/merges","archive_url":"https://api.github.com/repos/rajasharma27/elFinder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rajasharma27/elFinder/downloads","issues_url":"https://api.github.com/repos/rajasharma27/elFinder/issues{/number}","pulls_url":"https://api.github.com/repos/rajasharma27/elFinder/pulls{/number}","milestones_url":"https://api.github.com/repos/rajasharma27/elFinder/milestones{/number}","notifications_url":"https://api.github.com/repos/rajasharma27/elFinder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rajasharma27/elFinder/labels{/name}","releases_url":"https://api.github.com/repos/rajasharma27/elFinder/releases{/id}","deployments_url":"https://api.github.com/repos/rajasharma27/elFinder/deployments","created_at":"2016-02-12T17:21:33Z","updated_at":"2016-02-12T17:21:34Z","pushed_at":"2016-06-19T07:17:59Z","git_url":"git://github.com/rajasharma27/elFinder.git","ssh_url":"git@github.com:rajasharma27/elFinder.git","clone_url":"https://github.com/rajasharma27/elFinder.git","svn_url":"https://github.com/rajasharma27/elFinder","homepage":"http://elfinder.org","size":14869,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"2.1_n-src"}},"base":{"label":"Studio-42:master","ref":"master","sha":"24e591024128892bdad1b92a1ef62b7febe1223b","user":{"login":"Studio-42","id":437049,"avatar_url":"https://avatars.githubusercontent.com/u/437049?v=3","gravatar_id":"","url":"https://api.github.com/users/Studio-42","html_url":"https://github.com/Studio-42","followers_url":"https://api.github.com/users/Studio-42/followers","following_url":"https://api.github.com/users/Studio-42/following{/other_user}","gists_url":"https://api.github.com/users/Studio-42/gists{/gist_id}","starred_url":"https://api.github.com/users/Studio-42/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Studio-42/subscriptions","organizations_url":"https://api.github.com/users/Studio-42/orgs","repos_url":"https://api.github.com/users/Studio-42/repos","events_url":"https://api.github.com/users/Studio-42/events{/privacy}","received_events_url":"https://api.github.com/users/Studio-42/received_events","type":"Organization","site_admin":false},"repo":{"id":1095380,"name":"elFinder","full_name":"Studio-42/elFinder","owner":{"login":"Studio-42","id":437049,"avatar_url":"https://avatars.githubusercontent.com/u/437049?v=3","gravatar_id":"","url":"https://api.github.com/users/Studio-42","html_url":"https://github.com/Studio-42","followers_url":"https://api.github.com/users/Studio-42/followers","following_url":"https://api.github.com/users/Studio-42/following{/other_user}","gists_url":"https://api.github.com/users/Studio-42/gists{/gist_id}","starred_url":"https://api.github.com/users/Studio-42/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Studio-42/subscriptions","organizations_url":"https://api.github.com/users/Studio-42/orgs","repos_url":"https://api.github.com/users/Studio-42/repos","events_url":"https://api.github.com/users/Studio-42/events{/privacy}","received_events_url":"https://api.github.com/users/Studio-42/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Studio-42/elFinder","description":"Open-source file manager for web, written in JavaScript using jQuery and jQuery UI","fork":false,"url":"https://api.github.com/repos/Studio-42/elFinder","forks_url":"https://api.github.com/repos/Studio-42/elFinder/forks","keys_url":"https://api.github.com/repos/Studio-42/elFinder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Studio-42/elFinder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Studio-42/elFinder/teams","hooks_url":"https://api.github.com/repos/Studio-42/elFinder/hooks","issue_events_url":"https://api.github.com/repos/Studio-42/elFinder/issues/events{/number}","events_url":"https://api.github.com/repos/Studio-42/elFinder/events","assignees_url":"https://api.github.com/repos/Studio-42/elFinder/assignees{/user}","branches_url":"https://api.github.com/repos/Studio-42/elFinder/branches{/branch}","tags_url":"https://api.github.com/repos/Studio-42/elFinder/tags","blobs_url":"https://api.github.com/repos/Studio-42/elFinder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Studio-42/elFinder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Studio-42/elFinder/git/refs{/sha}","trees_url":"https://api.github.com/repos/Studio-42/elFinder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Studio-42/elFinder/statuses/{sha}","languages_url":"https://api.github.com/repos/Studio-42/elFinder/languages","stargazers_url":"https://api.github.com/repos/Studio-42/elFinder/stargazers","contributors_url":"https://api.github.com/repos/Studio-42/elFinder/contributors","subscribers_url":"https://api.github.com/repos/Studio-42/elFinder/subscribers","subscription_url":"https://api.github.com/repos/Studio-42/elFinder/subscription","commits_url":"https://api.github.com/repos/Studio-42/elFinder/commits{/sha}","git_commits_url":"https://api.github.com/repos/Studio-42/elFinder/git/commits{/sha}","comments_url":"https://api.github.com/repos/Studio-42/elFinder/comments{/number}","issue_comment_url":"https://api.github.com/repos/Studio-42/elFinder/issues/comments{/number}","contents_url":"https://api.github.com/repos/Studio-42/elFinder/contents/{+path}","compare_url":"https://api.github.com/repos/Studio-42/elFinder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Studio-42/elFinder/merges","archive_url":"https://api.github.com/repos/Studio-42/elFinder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Studio-42/elFinder/downloads","issues_url":"https://api.github.com/repos/Studio-42/elFinder/issues{/number}","pulls_url":"https://api.github.com/repos/Studio-42/elFinder/pulls{/number}","milestones_url":"https://api.github.com/repos/Studio-42/elFinder/milestones{/number}","notifications_url":"https://api.github.com/repos/Studio-42/elFinder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Studio-42/elFinder/labels{/name}","releases_url":"https://api.github.com/repos/Studio-42/elFinder/releases{/id}","deployments_url":"https://api.github.com/repos/Studio-42/elFinder/deployments","created_at":"2010-11-19T18:05:06Z","updated_at":"2016-06-17T11:21:53Z","pushed_at":"2016-06-19T07:20:21Z","git_url":"git://github.com/Studio-42/elFinder.git","ssh_url":"git@github.com:Studio-42/elFinder.git","clone_url":"https://github.com/Studio-42/elFinder.git","svn_url":"https://github.com/Studio-42/elFinder","homepage":"http://studio-42.github.io/elFinder/","size":20219,"stargazers_count":2010,"watchers_count":2010,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":834,"mirror_url":null,"open_issues_count":19,"forks":834,"open_issues":19,"watchers":2010,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Studio-42/elFinder/pulls/1482"},"html":{"href":"https://github.com/Studio-42/elFinder/pull/1482"},"issue":{"href":"https://api.github.com/repos/Studio-42/elFinder/issues/1482"},"comments":{"href":"https://api.github.com/repos/Studio-42/elFinder/issues/1482/comments"},"review_comments":{"href":"https://api.github.com/repos/Studio-42/elFinder/pulls/1482/comments"},"review_comment":{"href":"https://api.github.com/repos/Studio-42/elFinder/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Studio-42/elFinder/pulls/1482/commits"},"statuses":{"href":"https://api.github.com/repos/Studio-42/elFinder/statuses/732d4d1cd6f43c1f5074fa75d9f413b34eb26aa4"}}}}
{"actor":{"display_login":"nao-pon"}}