]> source.dussan.org Git - nextcloud-server.git/commitdiff
keep response message
authorBjoern Schiessle <schiessle@owncloud.com>
Mon, 13 Jan 2014 11:27:05 +0000 (12:27 +0100)
committerBjoern Schiessle <schiessle@owncloud.com>
Mon, 13 Jan 2014 11:27:05 +0000 (12:27 +0100)
lib/private/api.php

index 03d7b7382a5592c8f23e19c0d81cc8896649734e..c713368125c95f470c21d4a3484a13633c4b95af 100644 (file)
@@ -33,7 +33,7 @@ class OC_API {
        const USER_AUTH = 1;
        const SUBADMIN_AUTH = 2;
        const ADMIN_AUTH = 3;
-       
+
        /**
         * API Response Codes
         */
@@ -41,13 +41,13 @@ class OC_API {
        const RESPOND_SERVER_ERROR = 996;
        const RESPOND_NOT_FOUND = 998;
        const RESPOND_UNKNOWN_ERROR = 999;
-       
+
        /**
         * api actions
         */
        protected static $actions = array();
        private static $logoutRequired = false;
-       
+
        /**
         * registers an api call
         * @param string $method the http method
@@ -58,7 +58,7 @@ class OC_API {
         * @param array $defaults
         * @param array $requirements
         */
-       public static function register($method, $url, $action, $app, 
+       public static function register($method, $url, $action, $app,
                                $authLevel = OC_API::USER_AUTH,
                                $defaults = array(),
                                $requirements = array()) {
@@ -75,7 +75,7 @@ class OC_API {
                }
                self::$actions[$name][] = array('app' => $app, 'action' => $action, 'authlevel' => $authLevel);
        }
-       
+
        /**
         * handles an api call
         * @param array $parameters
@@ -125,7 +125,7 @@ class OC_API {
 
                self::respond($response, $format);
        }
-       
+
        /**
         * merge the returned result objects into one response
         * @param array $responses
@@ -166,32 +166,31 @@ class OC_API {
                        // Maybe any that are not OC_API::RESPOND_SERVER_ERROR
                        // Merge failed responses if more than one
                        $data = array();
-                       $meta = array();
                        foreach($shipped['failed'] as $failure) {
                                $data = array_merge_recursive($data, $failure['response']->getData());
                        }
                        $picked = reset($shipped['failed']);
                        $code = $picked['response']->getStatusCode();
-                       $response = new OC_OCS_Result($data, $code);
+                       $meta = $picked['response']->getMeta();
+                       $response = new OC_OCS_Result($data, $code, $meta['message']);
                        return $response;
                } elseif(!empty($shipped['succeeded'])) {
                        $responses = array_merge($shipped['succeeded'], $thirdparty['succeeded']);
                } elseif(!empty($thirdparty['failed'])) {
                        // Merge failed responses if more than one
                        $data = array();
-                       $meta = array();
                        foreach($thirdparty['failed'] as $failure) {
                                $data = array_merge_recursive($data, $failure['response']->getData());
                        }
                        $picked = reset($thirdparty['failed']);
                        $code = $picked['response']->getStatusCode();
-                       $response = new OC_OCS_Result($data, $code);
+                       $meta = $picked['response']->getMeta();
+                       $response = new OC_OCS_Result($data, $code, $meta['message']);
                        return $response;
                } else {
                        $responses = $thirdparty['succeeded'];
                }
                // Merge the successful responses
-               $meta = array();
                $data = array();
 
                foreach($responses as $app => $response) {
@@ -200,22 +199,25 @@ class OC_API {
                        } else {
                                $data = array_merge_recursive($data, $response['response']->getData());
                        }
-                       $codes[] = $response['response']->getStatusCode();
+                       $codes[] = array('code' => $response['response']->getStatusCode(),
+                               'meta' => $response['response']->getMeta());
                }
 
                // Use any non 100 status codes
                $statusCode = 100;
+               $statusMessage = null;
                foreach($codes as $code) {
-                       if($code != 100) {
-                               $statusCode = $code;
+                       if($code['code'] != 100) {
+                               $statusCode = $code['code'];
+                               $statusMessage = $code['meta']['message'];
                                break;
                        }
                }
 
-               $result = new OC_OCS_Result($data, $statusCode);
+               $result = new OC_OCS_Result($data, $statusCode, $statusMessage);
                return $result;
        }
-       
+
        /**
         * authenticate the api call
         * @param array $action the action details as supplied to OC_API::register()
@@ -261,8 +263,8 @@ class OC_API {
                                return false;
                                break;
                }
-       } 
-       
+       }
+
        /**
         * http basic auth
         * @return string|false (username, or false on failure)
@@ -294,7 +296,7 @@ class OC_API {
 
                return false;
        }
-       
+
        /**
         * respond to a call
         * @param OC_OCS_Result $result
@@ -343,5 +345,5 @@ class OC_API {
                        }
                }
        }
-       
+
 }