{"action":"created","comment":{"url":"https://api.github.com/repos/owncloud/core/pulls/comments/24764540","id":24764540,"diff_hunk":"@@ -412,4 +438,254 @@ public function getId() {\n \t\treturn $this->requestId;\n \t}\n \n+\t/**\n+\t * Returns the remote address, if the connection came from a trusted proxy\n+\t * and `forwarded_for_headers` has been configured then the IP address\n+\t * specified in this header will be returned instead.\n+\t * Do always use this instead of $_SERVER['REMOTE_ADDR']\n+\t * @return string IP address\n+\t */\n+\tpublic function getRemoteAddress() {\n+\t\t$remoteAddress = isset($this->server['REMOTE_ADDR']) ? $this->server['REMOTE_ADDR'] : '';\n+\t\t$trustedProxies = $this->config->getSystemValue('trusted_proxies', []);\n+\n+\t\tif(is_array($trustedProxies) && in_array($remoteAddress, $trustedProxies)) {\n+\t\t\t$forwardedForHeaders = $this->config->getSystemValue('forwarded_for_headers', []);\n+\n+\t\t\tforeach($forwardedForHeaders as $header) {\n+\t\t\t\tif(isset($this->server[$header])) {\n+\t\t\t\t\tforeach(explode(',', $this->server[$header]) as $IP) {\n+\t\t\t\t\t\t$IP = trim($IP);\n+\t\t\t\t\t\tif (filter_var($IP, FILTER_VALIDATE_IP) !== false) {\n+\t\t\t\t\t\t\treturn $IP;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\n+\t\treturn $remoteAddress;\n+\t}\n+\n+\t/**\n+\t * Check overwrite condition\n+\t * @param string $type\n+\t * @return bool\n+\t */\n+\tprivate function isOverwriteCondition($type = '') {\n+\t\t$regex = '/' . $this->config->getSystemValue('overwritecondaddr', '')  . '/';\n+\t\treturn $regex === '//' || preg_match($regex, $this->server['REMOTE_ADDR']) === 1\n+\t\t|| ($type !== 'protocol' && $this->config->getSystemValue('forcessl', false));\n+\t}\n+\n+\t/**\n+\t * Returns the server protocol. It respects reverse proxy servers and load\n+\t * balancers.\n+\t * @return string Server protocol (http or https)\n+\t */\n+\tpublic function getServerProtocol() {\n+\t\tif($this->config->getSystemValue('overwriteprotocol') !== ''\n+\t\t\t&& $this->isOverwriteCondition('protocol')) {\n+\t\t\treturn $this->config->getSystemValue('overwriteprotocol');\n+\t\t}\n+\n+\t\tif (isset($this->server['HTTP_X_FORWARDED_PROTO'])) {\n+\t\t\t$proto = strtolower($this->server['HTTP_X_FORWARDED_PROTO']);\n+\t\t\t// Verify that the protocol is always HTTP or HTTPS\n+\t\t\t// default to http if an invalid value is provided\n+\t\t\treturn $proto === 'https' ? 'https' : 'http';\n+\t\t}\n+\n+\t\tif (isset($this->server['HTTPS'])\n+\t\t\t&& $this->server['HTTPS'] !== null\n+\t\t\t&& $this->server['HTTPS'] !== 'off') {\n+\t\t\treturn 'https';\n+\t\t}\n+\n+\t\treturn 'http';\n+\t}\n+\n+\t/**\n+\t * Returns the request uri, even if the website uses one or more\n+\t * reverse proxies\n+\t * @return string\n+\t */\n+\tpublic function getRequestUri() {\n+\t\t$uri = isset($this->server['REQUEST_URI']) ? $this->server['REQUEST_URI'] : '';\n+\t\tif($this->config->getSystemValue('overwritewebroot') !== '' && $this->isOverwriteCondition()) {\n+\t\t\t$uri = $this->getScriptName() . substr($uri, strlen($this->server['SCRIPT_NAME']));\n+\t\t}\n+\t\treturn $uri;\n+\t}\n+\n+\t/**\n+\t * Get raw PathInfo from request (not urldecoded)\n+\t * @throws \\Exception\n+\t * @return string Path info\n+\t */\n+\tpublic function getRawPathInfo() {\n+\t\t$requestUri = isset($this->server['REQUEST_URI']) ? $this->server['REQUEST_URI'] : '';\n+\t\t// remove too many leading slashes - can be caused by reverse proxy configuration\n+\t\tif (strpos($requestUri, '/') === 0) {\n+\t\t\t$requestUri = '/' . ltrim($requestUri, '/');\n+\t\t}\n+\n+\t\t$requestUri = preg_replace('%/{2,}%', '/', $requestUri);\n+\n+\t\t// Remove the query string from REQUEST_URI\n+\t\tif ($pos = strpos($requestUri, '?')) {\n+\t\t\t$requestUri = substr($requestUri, 0, $pos);\n+\t\t}\n+\n+\t\t$scriptName = $this->server['SCRIPT_NAME'];\n+\t\t$pathInfo = $requestUri;\n+\n+\t\t// strip off the script name's dir and file name\n+\t\t// FIXME: Sabre does not really belong here\n+\t\tlist($path, $name) = \\Sabre\\DAV\\URLUtil::splitPath($scriptName);\n+\t\tif (!empty($path)) {\n+\t\t\tif($path === $pathInfo || strpos($pathInfo, $path.'/') === 0) {\n+\t\t\t\t$pathInfo = substr($pathInfo, strlen($path));\n+\t\t\t} else {\n+\t\t\t\tthrow new \\Exception(\"The requested uri($requestUri) cannot be processed by the script '$scriptName')\");\n+\t\t\t}\n+\t\t}\n+\t\tif (strpos($pathInfo, '/'.$name) === 0) {\n+\t\t\t$pathInfo = substr($pathInfo, strlen($name) + 1);\n+\t\t}\n+\t\tif (strpos($pathInfo, $name) === 0) {\n+\t\t\t$pathInfo = substr($pathInfo, strlen($name));\n+\t\t}\n+\t\tif($pathInfo === '/'){\n+\t\t\treturn '';\n+\t\t} else {\n+\t\t\treturn $pathInfo;\n+\t\t}\n+\t}\n+\n+\t/**\n+\t * Get PathInfo from request\n+\t * @throws \\Exception\n+\t * @return string|false Path info or false when not found\n+\t */\n+\tpublic function getPathInfo() {\n+\t\tif(isset($this->server['PATH_INFO'])) {\n+\t\t\treturn $this->server['PATH_INFO'];\n+\t\t}\n+\n+\t\t$pathInfo = $this->getRawPathInfo();\n+\t\t// following is taken from \\Sabre\\DAV\\URLUtil::decodePathSegment\n+\t\t$pathInfo = rawurldecode($pathInfo);\n+\t\t$encoding = mb_detect_encoding($pathInfo, ['UTF-8', 'ISO-8859-1']);\n+\n+\t\tswitch($encoding) {\n+\t\t\tcase 'ISO-8859-1' :\n+\t\t\t\t$pathInfo = utf8_encode($pathInfo);\n+\t\t}\n+\t\t// end copy\n+\n+\t\treturn $pathInfo;\n+\t}\n+\n+\t/**\n+\t * Returns the script name, even if the website uses one or more\n+\t * reverse proxies\n+\t * @return string the script name\n+\t */\n+\tpublic function getScriptName() {\n+\t\t$name = $this->server['SCRIPT_NAME'];\n+\t\t$overwriteWebRoot =  $this->config->getSystemValue('overwritewebroot');\n+\t\tif ($overwriteWebRoot !== '' && $this->isOverwriteCondition()) {","path":"lib/private/appframework/http/request.php","position":271,"original_position":271,"commit_id":"f82b710e383882c09a77c23c6cd312d6ed5b7f42","original_commit_id":"f82b710e383882c09a77c23c6cd312d6ed5b7f42","user":{"login":"nickvergessen","id":213943,"avatar_url":"https://avatars.githubusercontent.com/u/213943?v=3","gravatar_id":"","url":"https://api.github.com/users/nickvergessen","html_url":"https://github.com/nickvergessen","followers_url":"https://api.github.com/users/nickvergessen/followers","following_url":"https://api.github.com/users/nickvergessen/following{/other_user}","gists_url":"https://api.github.com/users/nickvergessen/gists{/gist_id}","starred_url":"https://api.github.com/users/nickvergessen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nickvergessen/subscriptions","organizations_url":"https://api.github.com/users/nickvergessen/orgs","repos_url":"https://api.github.com/users/nickvergessen/repos","events_url":"https://api.github.com/users/nickvergessen/events{/privacy}","received_events_url":"https://api.github.com/users/nickvergessen/received_events","type":"User","site_admin":false},"body":"`getSystemValue()` changed the default to `''` right? otherwise we need to check for null here","created_at":"2015-02-16T17:28:30Z","updated_at":"2015-02-16T17:28:30Z","html_url":"https://github.com/owncloud/core/pull/14056#discussion_r24764540","pull_request_url":"https://api.github.com/repos/owncloud/core/pulls/14056","_links":{"self":{"href":"https://api.github.com/repos/owncloud/core/pulls/comments/24764540"},"html":{"href":"https://github.com/owncloud/core/pull/14056#discussion_r24764540"},"pull_request":{"href":"https://api.github.com/repos/owncloud/core/pulls/14056"}}},"pull_request":{"url":"https://api.github.com/repos/owncloud/core/pulls/14056","id":29011100,"html_url":"https://github.com/owncloud/core/pull/14056","diff_url":"https://github.com/owncloud/core/pull/14056.diff","patch_url":"https://github.com/owncloud/core/pull/14056.patch","issue_url":"https://api.github.com/repos/owncloud/core/issues/14056","number":14056,"state":"open","locked":false,"title":"Refactor OC_Request into TrustedDomainHelper and IRequest","user":{"login":"LukasReschke","id":878997,"avatar_url":"https://avatars.githubusercontent.com/u/878997?v=3","gravatar_id":"","url":"https://api.github.com/users/LukasReschke","html_url":"https://github.com/LukasReschke","followers_url":"https://api.github.com/users/LukasReschke/followers","following_url":"https://api.github.com/users/LukasReschke/following{/other_user}","gists_url":"https://api.github.com/users/LukasReschke/gists{/gist_id}","starred_url":"https://api.github.com/users/LukasReschke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LukasReschke/subscriptions","organizations_url":"https://api.github.com/users/LukasReschke/orgs","repos_url":"https://api.github.com/users/LukasReschke/repos","events_url":"https://api.github.com/users/LukasReschke/events{/privacy}","received_events_url":"https://api.github.com/users/LukasReschke/received_events","type":"User","site_admin":false},"body":"This changeset removes the static class `OC_Request` and moves the functions either into `IRequest` which is accessible via `\\OC::$server::->getRequest()` or into a separated `TrustedDomainHelper` class for some helper methods which should not be publicly exposed.\r\n\r\nThis changes only internal methods and nothing on the public API. Some public functions in `util.php` have been deprecated though in favour of the new non-static functions.\r\n\r\nUnfortunately some part of this code uses things like `__DIR__` and thus is not completely unit-testable. Where tests where possible they ahve been added though.\r\n\r\nFixes https://github.com/owncloud/core/issues/13976 which was requested in https://github.com/owncloud/core/pull/13973#issuecomment-73492969\r\n\r\n(let's hope the tests pass on Jenkins as well – can't run the full test suite locally but for the changes parts they worked just fine – will take a look once CI passed)\r\n\r\n@DeepDiver1975 As requested by you.\r\n@th3fallen @nickvergessen @MorrisJobke @PVince81 Huge PR. Would be cool if you have some time to review this and test carefully.\r\n\r\nFixes itself.","created_at":"2015-02-10T14:32:20Z","updated_at":"2015-02-16T17:28:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2ad5296a8e1b6d7af3f1312aac14bad909c89663","assignee":null,"milestone":{"url":"https://api.github.com/repos/owncloud/core/milestones/31","labels_url":"https://api.github.com/repos/owncloud/core/milestones/31/labels","id":912160,"number":31,"title":"8.1-next","description":"","creator":{"login":"MorrisJobke","id":245432,"avatar_url":"https://avatars.githubusercontent.com/u/245432?v=3","gravatar_id":"","url":"https://api.github.com/users/MorrisJobke","html_url":"https://github.com/MorrisJobke","followers_url":"https://api.github.com/users/MorrisJobke/followers","following_url":"https://api.github.com/users/MorrisJobke/following{/other_user}","gists_url":"https://api.github.com/users/MorrisJobke/gists{/gist_id}","starred_url":"https://api.github.com/users/MorrisJobke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MorrisJobke/subscriptions","organizations_url":"https://api.github.com/users/MorrisJobke/orgs","repos_url":"https://api.github.com/users/MorrisJobke/repos","events_url":"https://api.github.com/users/MorrisJobke/events{/privacy}","received_events_url":"https://api.github.com/users/MorrisJobke/received_events","type":"User","site_admin":false},"open_issues":359,"closed_issues":88,"state":"open","created_at":"2014-12-22T12:04:01Z","updated_at":"2015-02-16T17:06:43Z","due_on":"2015-04-02T22:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/owncloud/core/pulls/14056/commits","review_comments_url":"https://api.github.com/repos/owncloud/core/pulls/14056/comments","review_comment_url":"https://api.github.com/repos/owncloud/core/pulls/comments/{number}","comments_url":"https://api.github.com/repos/owncloud/core/issues/14056/comments","statuses_url":"https://api.github.com/repos/owncloud/core/statuses/f82b710e383882c09a77c23c6cd312d6ed5b7f42","head":{"label":"owncloud:refactor/13976","ref":"refactor/13976","sha":"f82b710e383882c09a77c23c6cd312d6ed5b7f42","user":{"login":"owncloud","id":1645051,"avatar_url":"https://avatars.githubusercontent.com/u/1645051?v=3","gravatar_id":"","url":"https://api.github.com/users/owncloud","html_url":"https://github.com/owncloud","followers_url":"https://api.github.com/users/owncloud/followers","following_url":"https://api.github.com/users/owncloud/following{/other_user}","gists_url":"https://api.github.com/users/owncloud/gists{/gist_id}","starred_url":"https://api.github.com/users/owncloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/owncloud/subscriptions","organizations_url":"https://api.github.com/users/owncloud/orgs","repos_url":"https://api.github.com/users/owncloud/repos","events_url":"https://api.github.com/users/owncloud/events{/privacy}","received_events_url":"https://api.github.com/users/owncloud/received_events","type":"Organization","site_admin":false},"repo":{"id":5550552,"name":"core","full_name":"owncloud/core","owner":{"login":"owncloud","id":1645051,"avatar_url":"https://avatars.githubusercontent.com/u/1645051?v=3","gravatar_id":"","url":"https://api.github.com/users/owncloud","html_url":"https://github.com/owncloud","followers_url":"https://api.github.com/users/owncloud/followers","following_url":"https://api.github.com/users/owncloud/following{/other_user}","gists_url":"https://api.github.com/users/owncloud/gists{/gist_id}","starred_url":"https://api.github.com/users/owncloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/owncloud/subscriptions","organizations_url":"https://api.github.com/users/owncloud/orgs","repos_url":"https://api.github.com/users/owncloud/repos","events_url":"https://api.github.com/users/owncloud/events{/privacy}","received_events_url":"https://api.github.com/users/owncloud/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/owncloud/core","description":"The ownCloud core","fork":false,"url":"https://api.github.com/repos/owncloud/core","forks_url":"https://api.github.com/repos/owncloud/core/forks","keys_url":"https://api.github.com/repos/owncloud/core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/owncloud/core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/owncloud/core/teams","hooks_url":"https://api.github.com/repos/owncloud/core/hooks","issue_events_url":"https://api.github.com/repos/owncloud/core/issues/events{/number}","events_url":"https://api.github.com/repos/owncloud/core/events","assignees_url":"https://api.github.com/repos/owncloud/core/assignees{/user}","branches_url":"https://api.github.com/repos/owncloud/core/branches{/branch}","tags_url":"https://api.github.com/repos/owncloud/core/tags","blobs_url":"https://api.github.com/repos/owncloud/core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/owncloud/core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/owncloud/core/git/refs{/sha}","trees_url":"https://api.github.com/repos/owncloud/core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/owncloud/core/statuses/{sha}","languages_url":"https://api.github.com/repos/owncloud/core/languages","stargazers_url":"https://api.github.com/repos/owncloud/core/stargazers","contributors_url":"https://api.github.com/repos/owncloud/core/contributors","subscribers_url":"https://api.github.com/repos/owncloud/core/subscribers","subscription_url":"https://api.github.com/repos/owncloud/core/subscription","commits_url":"https://api.github.com/repos/owncloud/core/commits{/sha}","git_commits_url":"https://api.github.com/repos/owncloud/core/git/commits{/sha}","comments_url":"https://api.github.com/repos/owncloud/core/comments{/number}","issue_comment_url":"https://api.github.com/repos/owncloud/core/issues/comments/{number}","contents_url":"https://api.github.com/repos/owncloud/core/contents/{+path}","compare_url":"https://api.github.com/repos/owncloud/core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/owncloud/core/merges","archive_url":"https://api.github.com/repos/owncloud/core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/owncloud/core/downloads","issues_url":"https://api.github.com/repos/owncloud/core/issues{/number}","pulls_url":"https://api.github.com/repos/owncloud/core/pulls{/number}","milestones_url":"https://api.github.com/repos/owncloud/core/milestones{/number}","notifications_url":"https://api.github.com/repos/owncloud/core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/owncloud/core/labels{/name}","releases_url":"https://api.github.com/repos/owncloud/core/releases{/id}","created_at":"2012-08-25T10:32:48Z","updated_at":"2015-02-16T16:37:36Z","pushed_at":"2015-02-16T17:05:57Z","git_url":"git://github.com/owncloud/core.git","ssh_url":"git@github.com:owncloud/core.git","clone_url":"https://github.com/owncloud/core.git","svn_url":"https://github.com/owncloud/core","homepage":null,"size":880139,"stargazers_count":3030,"watchers_count":3030,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":987,"mirror_url":null,"open_issues_count":1825,"forks":987,"open_issues":1825,"watchers":3030,"default_branch":"master"}},"base":{"label":"owncloud:master","ref":"master","sha":"92710591955e4696c29628b438dbb7a173ee379c","user":{"login":"owncloud","id":1645051,"avatar_url":"https://avatars.githubusercontent.com/u/1645051?v=3","gravatar_id":"","url":"https://api.github.com/users/owncloud","html_url":"https://github.com/owncloud","followers_url":"https://api.github.com/users/owncloud/followers","following_url":"https://api.github.com/users/owncloud/following{/other_user}","gists_url":"https://api.github.com/users/owncloud/gists{/gist_id}","starred_url":"https://api.github.com/users/owncloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/owncloud/subscriptions","organizations_url":"https://api.github.com/users/owncloud/orgs","repos_url":"https://api.github.com/users/owncloud/repos","events_url":"https://api.github.com/users/owncloud/events{/privacy}","received_events_url":"https://api.github.com/users/owncloud/received_events","type":"Organization","site_admin":false},"repo":{"id":5550552,"name":"core","full_name":"owncloud/core","owner":{"login":"owncloud","id":1645051,"avatar_url":"https://avatars.githubusercontent.com/u/1645051?v=3","gravatar_id":"","url":"https://api.github.com/users/owncloud","html_url":"https://github.com/owncloud","followers_url":"https://api.github.com/users/owncloud/followers","following_url":"https://api.github.com/users/owncloud/following{/other_user}","gists_url":"https://api.github.com/users/owncloud/gists{/gist_id}","starred_url":"https://api.github.com/users/owncloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/owncloud/subscriptions","organizations_url":"https://api.github.com/users/owncloud/orgs","repos_url":"https://api.github.com/users/owncloud/repos","events_url":"https://api.github.com/users/owncloud/events{/privacy}","received_events_url":"https://api.github.com/users/owncloud/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/owncloud/core","description":"The ownCloud core","fork":false,"url":"https://api.github.com/repos/owncloud/core","forks_url":"https://api.github.com/repos/owncloud/core/forks","keys_url":"https://api.github.com/repos/owncloud/core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/owncloud/core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/owncloud/core/teams","hooks_url":"https://api.github.com/repos/owncloud/core/hooks","issue_events_url":"https://api.github.com/repos/owncloud/core/issues/events{/number}","events_url":"https://api.github.com/repos/owncloud/core/events","assignees_url":"https://api.github.com/repos/owncloud/core/assignees{/user}","branches_url":"https://api.github.com/repos/owncloud/core/branches{/branch}","tags_url":"https://api.github.com/repos/owncloud/core/tags","blobs_url":"https://api.github.com/repos/owncloud/core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/owncloud/core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/owncloud/core/git/refs{/sha}","trees_url":"https://api.github.com/repos/owncloud/core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/owncloud/core/statuses/{sha}","languages_url":"https://api.github.com/repos/owncloud/core/languages","stargazers_url":"https://api.github.com/repos/owncloud/core/stargazers","contributors_url":"https://api.github.com/repos/owncloud/core/contributors","subscribers_url":"https://api.github.com/repos/owncloud/core/subscribers","subscription_url":"https://api.github.com/repos/owncloud/core/subscription","commits_url":"https://api.github.com/repos/owncloud/core/commits{/sha}","git_commits_url":"https://api.github.com/repos/owncloud/core/git/commits{/sha}","comments_url":"https://api.github.com/repos/owncloud/core/comments{/number}","issue_comment_url":"https://api.github.com/repos/owncloud/core/issues/comments/{number}","contents_url":"https://api.github.com/repos/owncloud/core/contents/{+path}","compare_url":"https://api.github.com/repos/owncloud/core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/owncloud/core/merges","archive_url":"https://api.github.com/repos/owncloud/core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/owncloud/core/downloads","issues_url":"https://api.github.com/repos/owncloud/core/issues{/number}","pulls_url":"https://api.github.com/repos/owncloud/core/pulls{/number}","milestones_url":"https://api.github.com/repos/owncloud/core/milestones{/number}","notifications_url":"https://api.github.com/repos/owncloud/core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/owncloud/core/labels{/name}","releases_url":"https://api.github.com/repos/owncloud/core/releases{/id}","created_at":"2012-08-25T10:32:48Z","updated_at":"2015-02-16T16:37:36Z","pushed_at":"2015-02-16T17:05:57Z","git_url":"git://github.com/owncloud/core.git","ssh_url":"git@github.com:owncloud/core.git","clone_url":"https://github.com/owncloud/core.git","svn_url":"https://github.com/owncloud/core","homepage":null,"size":880139,"stargazers_count":3030,"watchers_count":3030,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":987,"mirror_url":null,"open_issues_count":1825,"forks":987,"open_issues":1825,"watchers":3030,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/owncloud/core/pulls/14056"},"html":{"href":"https://github.com/owncloud/core/pull/14056"},"issue":{"href":"https://api.github.com/repos/owncloud/core/issues/14056"},"comments":{"href":"https://api.github.com/repos/owncloud/core/issues/14056/comments"},"review_comments":{"href":"https://api.github.com/repos/owncloud/core/pulls/14056/comments"},"review_comment":{"href":"https://api.github.com/repos/owncloud/core/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/owncloud/core/pulls/14056/commits"},"statuses":{"href":"https://api.github.com/repos/owncloud/core/statuses/f82b710e383882c09a77c23c6cd312d6ed5b7f42"}}}}