From b2ef978d1069d5e7e172806a9e2426de2717a1f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20M=C3=BCller?= <thomas.mueller@tmit.eu>
Date: Wed, 25 Sep 2013 10:30:48 +0200
Subject: [PATCH] AppFramework: - get request from the server container -
 implement registerMiddleWare() - adding getAppName() to app container

---
 .../dependencyinjection/dicontainer.php       | 50 +++++++++----------
 lib/public/appframework/iappcontainer.php     | 12 +++++
 2 files changed, 37 insertions(+), 25 deletions(-)

diff --git a/lib/appframework/dependencyinjection/dicontainer.php b/lib/appframework/dependencyinjection/dicontainer.php
index 2ef885d7b2..5487826693 100644
--- a/lib/appframework/dependencyinjection/dicontainer.php
+++ b/lib/appframework/dependencyinjection/dicontainer.php
@@ -34,6 +34,8 @@ use OC\AppFramework\Utility\SimpleContainer;
 use OC\AppFramework\Utility\TimeFactory;
 use OCP\AppFramework\IApi;
 use OCP\AppFramework\IAppContainer;
+use OCP\AppFramework\IMiddleWare;
+use OCP\IServerContainer;
 
 
 class DIContainer extends SimpleContainer implements IAppContainer{
@@ -57,31 +59,10 @@ class DIContainer extends SimpleContainer implements IAppContainer{
 		 * Http
 		 */
 		$this['Request'] = $this->share(function($c) {
-
-			$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(
-					'get' => $_GET,
-					'post' => $_POST,
-					'files' => $_FILES,
-					'server' => $_SERVER,
-					'env' => $_ENV,
-					'session' => $_SESSION,
-					'cookies' => $_COOKIE,
-					'method' => (isset($_SERVER) && isset($_SERVER['REQUEST_METHOD']))
-							? $_SERVER['REQUEST_METHOD']
-							: null,
-					'params' => $params,
-					'urlParams' => $c['urlParams']
-				)
-			);
+			/** @var $c SimpleContainer */
+			/** @var $server IServerContainer */
+			$server = $c->query('ServerContainer');
+			return $server->getRequest();
 		});
 
 		$this['Protocol'] = $this->share(function($c){
@@ -138,4 +119,23 @@ class DIContainer extends SimpleContainer implements IAppContainer{
 	{
 		return $this->query('ServerContainer');
 	}
+
+	/**
+	 * @param IMiddleWare $middleWare
+	 * @return boolean
+	 */
+	function registerMiddleWare(IMiddleWare $middleWare) {
+		/** @var $dispatcher MiddlewareDispatcher */
+		$dispatcher = $this->query('MiddlewareDispatcher');
+		$dispatcher->registerMiddleware($middleWare);
+
+	}
+
+	/**
+	 * used to return the appname of the set application
+	 * @return string the name of your application
+	 */
+	function getAppName() {
+		return $this->query('AppName');
+	}
 }
diff --git a/lib/public/appframework/iappcontainer.php b/lib/public/appframework/iappcontainer.php
index c8f6229dd9..7d3b4b3bac 100644
--- a/lib/public/appframework/iappcontainer.php
+++ b/lib/public/appframework/iappcontainer.php
@@ -33,6 +33,12 @@ use OCP\IContainer;
  */
 interface IAppContainer extends IContainer{
 
+	/**
+	 * used to return the appname of the set application
+	 * @return string the name of your application
+	 */
+	function getAppName();
+
 	/**
 	 * @return IApi
 	 */
@@ -42,4 +48,10 @@ interface IAppContainer extends IContainer{
 	 * @return \OCP\IServerContainer
 	 */
 	function getServer();
+
+	/**
+	 * @param IMiddleWare $middleWare
+	 * @return boolean
+	 */
+	function registerMiddleWare(IMiddleWare $middleWare);
 }
-- 
GitLab