summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2013-08-20 17:21:14 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2013-08-20 17:21:14 +0200
commit93194bb39617d4b11a0a84b8cd4caf0491155961 (patch)
tree7c2a42aec1b59b24ab6adde6207f94ee737ec676
parentcdada78aa4acd2880e0344a476d3c1d838645ae5 (diff)
downloadnextcloud-server-93194bb39617d4b11a0a84b8cd4caf0491155961.tar.gz
nextcloud-server-93194bb39617d4b11a0a84b8cd4caf0491155961.zip
Introducing IContainer into public api
-rw-r--r--lib/appframework/dependencyinjection/dicontainer.php22
-rw-r--r--lib/appframework/utility/simplecontainer.php44
-rw-r--r--tests/lib/appframework/classloader.php9
3 files changed, 63 insertions, 12 deletions
diff --git a/lib/appframework/dependencyinjection/dicontainer.php b/lib/appframework/dependencyinjection/dicontainer.php
index 69c645b1be3..88ad2cd414a 100644
--- a/lib/appframework/dependencyinjection/dicontainer.php
+++ b/lib/appframework/dependencyinjection/dicontainer.php
@@ -30,19 +30,11 @@ use OC\AppFramework\Http\Dispatcher;
use OC\AppFramework\Core\API;
use OC\AppFramework\Middleware\MiddlewareDispatcher;
use OC\AppFramework\Middleware\Security\SecurityMiddleware;
+use OC\AppFramework\Utility\SimpleContainer;
use OC\AppFramework\Utility\TimeFactory;
-// register 3rdparty autoloaders
-require_once __DIR__ . '/../../../3rdparty/Pimple/Pimple.php';
-
-/**
- * This class extends Pimple (http://pimple.sensiolabs.org/) for reusability
- * To use this class, extend your own container from this. Should you require it
- * you can overwrite the dependencies with your own classes by simply redefining
- * a dependency
- */
-class DIContainer extends \Pimple {
+class DIContainer extends SimpleContainer {
/**
@@ -61,8 +53,14 @@ class DIContainer extends \Pimple {
* Http
*/
$this['Request'] = $this->share(function($c) {
- $params = json_decode(file_get_contents('php://input'), true);
- $params = is_array($params) ? $params: array();
+
+ $params = array();
+
+ // we json decode the body only in case of content type json
+ if (isset($_SERVER['CONTENT_TYPE']) && stripos($_SERVER['CONTENT_TYPE'],'json') === true ) {
+ $params = json_decode(file_get_contents('php://input'), true);
+ $params = is_array($params) ? $params: array();
+ }
return new Request(
array(
diff --git a/lib/appframework/utility/simplecontainer.php b/lib/appframework/utility/simplecontainer.php
new file mode 100644
index 00000000000..04b6cd727b8
--- /dev/null
+++ b/lib/appframework/utility/simplecontainer.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace OC\AppFramework\Utility;
+
+// register 3rdparty autoloaders
+require_once __DIR__ . '/../../../3rdparty/Pimple/Pimple.php';
+
+/**
+ * Class SimpleContainer
+ *
+ * SimpleContainer is a simple implementation of IContainer on basis of \Pimple
+ */
+class SimpleContainer extends \Pimple implements \OCP\Core\IContainer {
+
+ /**
+ * @param string $name name of the service to query for
+ * @return object registered service for the given $name
+ */
+ public function query($name) {
+ return $this->offsetGet($name);
+ }
+
+ function registerParameter($name, $value)
+ {
+ $this[$name] = $value;
+ }
+
+ /**
+ * The given closure is call the first time the given service is queried.
+ * The closure has to return the instance for the given service.
+ * Created instance will be cached in case $shared is true.
+ *
+ * @param string $name name of the service to register another backend for
+ * @param callable $closure the closure to be called on service creation
+ */
+ function registerService($name, \Closure $closure, $shared = true)
+ {
+ if ($shared) {
+ $this[$name] = \Pimple::share($closure);
+ } else {
+ $this[$name] = $closure;
+ }
+ }
+}
diff --git a/tests/lib/appframework/classloader.php b/tests/lib/appframework/classloader.php
index ae485e67b2c..cd9f893df30 100644
--- a/tests/lib/appframework/classloader.php
+++ b/tests/lib/appframework/classloader.php
@@ -32,6 +32,15 @@ spl_autoload_register(function ($className){
}
}
+ if (strpos($className, 'OCP\\') === 0) {
+ $path = strtolower(str_replace('\\', '/', substr($className, 3)) . '.php');
+ $relPath = __DIR__ . '/../../../lib/public' . $path;
+
+ if(file_exists($relPath)){
+ require_once $relPath;
+ }
+ }
+
// FIXME: this will most probably not work anymore
if (strpos($className, 'OCA\\') === 0) {