]> source.dussan.org Git - nextcloud-server.git/commitdiff
AvatarController use proper JSONResponse 1172/head
authorRoeland Jago Douma <roeland@famdouma.nl>
Mon, 29 Aug 2016 19:31:41 +0000 (21:31 +0200)
committerRoeland Jago Douma <roeland@famdouma.nl>
Mon, 29 Aug 2016 19:52:14 +0000 (21:52 +0200)
* Do not rely on DataResponse magic. We want JSON so use JSON
* Fix tests

core/Controller/AvatarController.php
tests/Core/Controller/AvatarControllerTest.php

index 3aa002634d8011b474c51ccafde2a87fa8cfb0ca..5b64320948a7254dee25405474e1559f342ea46a 100644 (file)
@@ -29,8 +29,8 @@ namespace OC\Core\Controller;
 
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http;
-use OCP\AppFramework\Http\DataResponse;
 use OCP\AppFramework\Http\DataDisplayResponse;
+use OCP\AppFramework\Http\JSONResponse;
 use OCP\Files\File;
 use OCP\Files\IRootFolder;
 use OCP\Files\NotFoundException;
@@ -111,7 +111,7 @@ class AvatarController extends Controller {
         *
         * @param string $userId
         * @param int $size
-        * @return DataResponse|DataDisplayResponse
+        * @return JSONResponse|DataDisplayResponse
         */
        public function getAvatar($userId, $size) {
                if ($size > 2048) {
@@ -128,13 +128,13 @@ class AvatarController extends Controller {
                        $resp->setETag($avatar->getEtag());
                } catch (NotFoundException $e) {
                        $user = $this->userManager->get($userId);
-                       $resp = new DataResponse([
+                       $resp = new JSONResponse([
                                'data' => [
                                        'displayname' => $user->getDisplayName(),
                                ],
                        ]);
                } catch (\Exception $e) {
-                       $resp = new DataResponse([
+                       $resp = new JSONResponse([
                                'data' => [
                                        'displayname' => '',
                                ],
@@ -152,25 +152,22 @@ class AvatarController extends Controller {
         * @NoAdminRequired
         *
         * @param string $path
-        * @return DataResponse
+        * @return JSONResponse
         */
        public function postAvatar($path) {
                $files = $this->request->getUploadedFile('files');
 
-               $headers = [];
-
                if (isset($path)) {
                        $path = stripslashes($path);
                        $userFolder = $this->rootFolder->getUserFolder($this->userId);
                        $node = $userFolder->get($path);
                        if (!($node instanceof File)) {
-                               return new DataResponse(['data' => ['message' => $this->l->t('Please select a file.')]], Http::STATUS_OK, $headers);
+                               return new JSONResponse(['data' => ['message' => $this->l->t('Please select a file.')]]);
                        }
                        if ($node->getSize() > 20*1024*1024) {
-                               return new DataResponse(
+                               return new JSONResponse(
                                        ['data' => ['message' => $this->l->t('File is too big')]],
-                                       Http::STATUS_BAD_REQUEST,
-                                       $headers
+                                       Http::STATUS_BAD_REQUEST
                                );
                        }
                        $content = $node->getContent();
@@ -181,28 +178,25 @@ class AvatarController extends Controller {
                                !\OC\Files\Filesystem::isFileBlacklisted($files['tmp_name'][0])
                        ) {
                                if ($files['size'][0] > 20*1024*1024) {
-                                       return new DataResponse(
+                                       return new JSONResponse(
                                                ['data' => ['message' => $this->l->t('File is too big')]],
-                                               Http::STATUS_BAD_REQUEST,
-                                               $headers
+                                               Http::STATUS_BAD_REQUEST
                                        );
                                }
                                $this->cache->set('avatar_upload', file_get_contents($files['tmp_name'][0]), 7200);
                                $content = $this->cache->get('avatar_upload');
                                unlink($files['tmp_name'][0]);
                        } else {
-                               return new DataResponse(
+                               return new JSONResponse(
                                        ['data' => ['message' => $this->l->t('Invalid file provided')]],
-                                       Http::STATUS_BAD_REQUEST,
-                                       $headers
+                                       Http::STATUS_BAD_REQUEST
                                );
                        }
                } else {
                        //Add imgfile
-                       return new DataResponse(
+                       return new JSONResponse(
                                ['data' => ['message' => $this->l->t('No image or file provided')]],
-                               Http::STATUS_BAD_REQUEST,
-                               $headers
+                               Http::STATUS_BAD_REQUEST
                        );
                }
 
@@ -214,57 +208,54 @@ class AvatarController extends Controller {
                        if ($image->valid()) {
                                $mimeType = $image->mimeType();
                                if ($mimeType !== 'image/jpeg' && $mimeType !== 'image/png') {
-                                       return new DataResponse(
+                                       return new JSONResponse(
                                                ['data' => ['message' => $this->l->t('Unknown filetype')]],
-                                               Http::STATUS_OK,
-                                               $headers
+                                               Http::STATUS_OK
                                        );
                                }
 
                                $this->cache->set('tmpAvatar', $image->data(), 7200);
-                               return new DataResponse(
+                               return new JSONResponse(
                                        ['data' => 'notsquare'],
-                                       Http::STATUS_OK,
-                                       $headers
+                                       Http::STATUS_OK
                                );
                        } else {
-                               return new DataResponse(
+                               return new JSONResponse(
                                        ['data' => ['message' => $this->l->t('Invalid image')]],
-                                       Http::STATUS_OK,
-                                       $headers
+                                       Http::STATUS_OK
                                );
                        }
                } catch (\Exception $e) {
                        $this->logger->logException($e, ['app' => 'core']);
-                       return new DataResponse(['data' => ['message' => $this->l->t('An error occurred. Please contact your admin.')]], Http::STATUS_OK, $headers);
+                       return new JSONResponse(['data' => ['message' => $this->l->t('An error occurred. Please contact your admin.')]], Http::STATUS_OK);
                }
        }
 
        /**
         * @NoAdminRequired
      *
-        * @return DataResponse
+        * @return JSONResponse
         */
        public function deleteAvatar() {
                try {
                        $avatar = $this->avatarManager->getAvatar($this->userId);
                        $avatar->remove();
-                       return new DataResponse();
+                       return new JSONResponse();
                } catch (\Exception $e) {
                        $this->logger->logException($e, ['app' => 'core']);
-                       return new DataResponse(['data' => ['message' => $this->l->t('An error occurred. Please contact your admin.')]], Http::STATUS_BAD_REQUEST);
+                       return new JSONResponse(['data' => ['message' => $this->l->t('An error occurred. Please contact your admin.')]], Http::STATUS_BAD_REQUEST);
                }
        }
 
        /**
         * @NoAdminRequired
         *
-        * @return DataResponse|DataDisplayResponse
+        * @return JSONResponse|DataDisplayResponse
         */
        public function getTmpAvatar() {
                $tmpAvatar = $this->cache->get('tmpAvatar');
                if (is_null($tmpAvatar)) {
-                       return new DataResponse(['data' => [
+                       return new JSONResponse(['data' => [
                                                                                'message' => $this->l->t("No temporary profile picture available, try again")
                                                                        ]],
                                                                        Http::STATUS_NOT_FOUND);
@@ -286,22 +277,22 @@ class AvatarController extends Controller {
         * @NoAdminRequired
         *
         * @param array $crop
-        * @return DataResponse
+        * @return JSONResponse
         */
        public function postCroppedAvatar($crop) {
                if (is_null($crop)) {
-                       return new DataResponse(['data' => ['message' => $this->l->t("No crop data provided")]],
+                       return new JSONResponse(['data' => ['message' => $this->l->t("No crop data provided")]],
                                                                        Http::STATUS_BAD_REQUEST);
                }
 
                if (!isset($crop['x'], $crop['y'], $crop['w'], $crop['h'])) {
-                       return new DataResponse(['data' => ['message' => $this->l->t("No valid crop data provided")]],
+                       return new JSONResponse(['data' => ['message' => $this->l->t("No valid crop data provided")]],
                                                                        Http::STATUS_BAD_REQUEST);
                }
 
                $tmpAvatar = $this->cache->get('tmpAvatar');
                if (is_null($tmpAvatar)) {
-                       return new DataResponse(['data' => [
+                       return new JSONResponse(['data' => [
                                                                                'message' => $this->l->t("No temporary profile picture available, try again")
                                                                        ]],
                                                                        Http::STATUS_BAD_REQUEST);
@@ -314,13 +305,13 @@ class AvatarController extends Controller {
                        $avatar->set($image);
                        // Clean up
                        $this->cache->remove('tmpAvatar');
-                       return new DataResponse(['status' => 'success']);
+                       return new JSONResponse(['status' => 'success']);
                } catch (\OC\NotSquareException $e) {
-                       return new DataResponse(['data' => ['message' => $this->l->t('Crop is not square')]],
+                       return new JSONResponse(['data' => ['message' => $this->l->t('Crop is not square')]],
                                                                        Http::STATUS_BAD_REQUEST);
                } catch (\Exception $e) {
                        $this->logger->logException($e, ['app' => 'core']);
-                       return new DataResponse(['data' => ['message' => $this->l->t('An error occurred. Please contact your admin.')]], Http::STATUS_BAD_REQUEST);
+                       return new JSONResponse(['data' => ['message' => $this->l->t('An error occurred. Please contact your admin.')]], Http::STATUS_BAD_REQUEST);
                }
        }
 }
index a275a8bd16a0cdd39a20c0818f342b4408b2a644..fe1a44b28abd40abfc02b246f14a89e4db09785d 100644 (file)
@@ -228,7 +228,7 @@ class AvatarControllerTest extends \Test\TestCase {
                $this->logger->expects($this->once())
                        ->method('logException')
                        ->with(new \Exception("foo"));
-               $expectedResponse = new Http\DataResponse(['data' => ['message' => 'An error occurred. Please contact your admin.']], Http::STATUS_BAD_REQUEST);
+               $expectedResponse = new Http\JSONResponse(['data' => ['message' => 'An error occurred. Please contact your admin.']], Http::STATUS_BAD_REQUEST);
                $this->assertEquals($expectedResponse, $this->avatarController->deleteAvatar());
        }
 
@@ -377,7 +377,7 @@ class AvatarControllerTest extends \Test\TestCase {
                $this->logger->expects($this->once())
                        ->method('logException')
                        ->with(new \Exception("foo"));
-               $expectedResponse = new Http\DataResponse(['data' => ['message' => 'An error occurred. Please contact your admin.']], Http::STATUS_OK);
+               $expectedResponse = new Http\JSONResponse(['data' => ['message' => 'An error occurred. Please contact your admin.']], Http::STATUS_OK);
                $this->assertEquals($expectedResponse, $this->avatarController->postAvatar('avatar.jpg'));
        }
 
@@ -437,7 +437,7 @@ class AvatarControllerTest extends \Test\TestCase {
                $this->logger->expects($this->once())
                        ->method('logException')
                        ->with(new \Exception('foo'));
-               $expectedResponse = new Http\DataResponse(['data' => ['message' => 'An error occurred. Please contact your admin.']], Http::STATUS_BAD_REQUEST);
+               $expectedResponse = new Http\JSONResponse(['data' => ['message' => 'An error occurred. Please contact your admin.']], Http::STATUS_BAD_REQUEST);
                $this->assertEquals($expectedResponse, $this->avatarController->postCroppedAvatar(['x' => 0, 'y' => 0, 'w' => 10, 'h' => 11]));
        }