From 93daa9e247e9c423a6d4bb10af1106fdde37b800 Mon Sep 17 00:00:00 2001
From: Bart Visscher <bartv@thisnet.nl>
Date: Wed, 1 Aug 2012 19:48:51 +0200
Subject: [PATCH] API: Complete respond function

---
 lib/api.php | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/lib/api.php b/lib/api.php
index 454a6fd26d..6ee570d60e 100644
--- a/lib/api.php
+++ b/lib/api.php
@@ -115,13 +115,32 @@ class OC_API {
 	*/
 	private static function respond($response, $format='json'){
 		if ($format == 'json') {
-			echo json_encode($response);
-		//} else if ($format == 'xml') {
-			// TODO array to xml
+			OC_JSON::encodedPrint($response);
+		} else if ($format == 'xml') {
+			header('Content-type: text/xml; charset=UTF-8');
+			$writer = new XMLWriter();
+			$writer->openMemory();
+			$writer->setIndent( true );
+			$writer->startDocument();
+			self::toXML($response, $writer);
+			$writer->endDocument();
+			echo $writer->outputMemory(true);
 		} else {
 			var_dump($format, $response);
 		}
 	}
+
+	private static function toXML($array, $writer){
+		foreach($array as $k => $v) {
+			if (is_array($v)) {
+				$writer->startElement($k);
+				self::toXML($v, $writer);
+				$writer->endElement();
+			} else {
+				$writer->writeElement($k, $v);
+			}
+		}
+	}
 	
 	/**
 	 * check if the user is authenticated
-- 
GitLab