summaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-03-03 14:22:56 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-03-03 14:22:56 +0100
commitbe27188649c25190aca19e1a4b3dbb58eef129f8 (patch)
treed93cbb6835860777cfc3f0b8f670d61465674b66 /lib/private
parente30ca8198f4535cdb9f14feb335b68d363aec426 (diff)
parentfaddd1e2565d01aa55ca23ee809170eb0a2cba98 (diff)
downloadnextcloud-server-be27188649c25190aca19e1a4b3dbb58eef129f8.tar.gz
nextcloud-server-be27188649c25190aca19e1a4b3dbb58eef129f8.zip
Merge pull request #14574 from owncloud/fix-irequest-for-older-php-versions
Read from IRequest instead of reading twice
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/api.php11
-rw-r--r--lib/private/ocs.php1
-rw-r--r--lib/private/server.php86
3 files changed, 48 insertions, 50 deletions
diff --git a/lib/private/api.php b/lib/private/api.php
index c58d2620684..23924c518bb 100644
--- a/lib/private/api.php
+++ b/lib/private/api.php
@@ -84,11 +84,14 @@ class OC_API {
* @param array $parameters
*/
public static function call($parameters) {
+ $request = \OC::$server->getRequest();
+ $method = $request->getMethod();
+
// Prepare the request variables
- if($_SERVER['REQUEST_METHOD'] == 'PUT') {
- parse_str(file_get_contents("php://input"), $parameters['_put']);
- } else if($_SERVER['REQUEST_METHOD'] == 'DELETE') {
- parse_str(file_get_contents("php://input"), $parameters['_delete']);
+ if($method === 'PUT') {
+ $parameters['_put'] = $request->getParams();
+ } else if($method === 'DELETE') {
+ $parameters['_delete'] = $request->getParams();
}
$name = $parameters['_route'];
// Foreach registered action
diff --git a/lib/private/ocs.php b/lib/private/ocs.php
index bbe642a247d..d43811e339b 100644
--- a/lib/private/ocs.php
+++ b/lib/private/ocs.php
@@ -76,7 +76,6 @@ class OC_OCS {
$method='get';
}elseif($_SERVER['REQUEST_METHOD'] == 'PUT') {
$method='put';
- parse_str(file_get_contents("php://input"), $put_vars);
}elseif($_SERVER['REQUEST_METHOD'] == 'POST') {
$method='post';
}else{
diff --git a/lib/private/server.php b/lib/private/server.php
index a16854d6288..18d996537e2 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -268,6 +268,46 @@ class Server extends SimpleContainer implements IServerContainer {
$this->registerService('TrustedDomainHelper', function ($c) {
return new TrustedDomainHelper($this->getConfig());
});
+ $this->registerService('Request', function ($c) {
+ if (isset($this['urlParams'])) {
+ $urlParams = $this['urlParams'];
+ } else {
+ $urlParams = [];
+ }
+
+ if ($this->getSession()->exists('requesttoken')) {
+ $requestToken = $this->getSession()->get('requesttoken');
+ } else {
+ $requestToken = false;
+ }
+
+ if (defined('PHPUNIT_RUN') && PHPUNIT_RUN
+ && in_array('fakeinput', stream_get_wrappers())
+ ) {
+ $stream = 'fakeinput://data';
+ } else {
+ $stream = 'php://input';
+ }
+
+ return new Request(
+ [
+ 'get' => $_GET,
+ 'post' => $_POST,
+ 'files' => $_FILES,
+ 'server' => $_SERVER,
+ 'env' => $_ENV,
+ 'cookies' => $_COOKIE,
+ 'method' => (isset($_SERVER) && isset($_SERVER['REQUEST_METHOD']))
+ ? $_SERVER['REQUEST_METHOD']
+ : null,
+ 'urlParams' => $urlParams,
+ 'requesttoken' => $requestToken,
+ ],
+ $this->getSecureRandom(),
+ $this->getConfig(),
+ $stream
+ );
+ });
}
/**
@@ -282,54 +322,10 @@ class Server extends SimpleContainer implements IServerContainer {
* currently being processed is returned from this method.
* In case the current execution was not initiated by a web request null is returned
*
- * FIXME: This should be queried as well. However, due to our totally awesome
- * static code a lot of tests do stuff like $_SERVER['foo'] which obviously
- * will not work with that approach. We even have some integration tests in our
- * unit tests which setup a complete webserver. Once the code is all non-static
- * or we don't have such mixed integration/unit tests setup anymore this can
- * get moved out again.
- *
* @return \OCP\IRequest|null
*/
function getRequest() {
- if (isset($this['urlParams'])) {
- $urlParams = $this['urlParams'];
- } else {
- $urlParams = array();
- }
-
- if ($this->getSession()->exists('requesttoken')) {
- $requestToken = $this->getSession()->get('requesttoken');
- } else {
- $requestToken = false;
- }
-
- if (defined('PHPUNIT_RUN') && PHPUNIT_RUN
- && in_array('fakeinput', stream_get_wrappers())
- ) {
- $stream = 'fakeinput://data';
- } else {
- $stream = 'php://input';
- }
-
- return new Request(
- [
- 'get' => $_GET,
- 'post' => $_POST,
- 'files' => $_FILES,
- 'server' => $_SERVER,
- 'env' => $_ENV,
- 'cookies' => $_COOKIE,
- 'method' => (isset($_SERVER) && isset($_SERVER['REQUEST_METHOD']))
- ? $_SERVER['REQUEST_METHOD']
- : null,
- 'urlParams' => $urlParams,
- 'requesttoken' => $requestToken,
- ],
- $this->getSecureRandom(),
- $this->getConfig(),
- $stream
- );
+ return $this->query('Request');
}
/**