From 0486ddc5a10f8a57ed58ab6b33b12521167a9025 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Tue, 23 Apr 2019 11:47:45 +0800 Subject: [PATCH] Normalize JSON response structure --- app/Http/Controllers/AdminController.php | 4 +- app/Http/Controllers/AuthController.php | 8 +- app/Http/Controllers/PluginController.php | 4 +- app/Http/Controllers/SkinlibController.php | 4 +- app/Http/Controllers/UserController.php | 8 +- app/Http/Middleware/CheckPlayerExist.php | 4 +- app/Http/Middleware/CheckPlayerOwner.php | 4 +- app/helpers.php | 8 +- .../assets/src/components/AddPlayerDialog.vue | 8 +- .../src/components/ApplyToPlayerDialog.vue | 8 +- .../assets/src/components/ClosetItem.vue | 8 +- .../src/components/EmailVerification.vue | 8 +- .../src/components/mixins/addClosetItem.ts | 8 +- .../src/components/mixins/enablePlugin.ts | 10 +- .../src/components/mixins/removeClosetItem.ts | 8 +- .../src/components/mixins/setAsAvatar.ts | 8 +- resources/assets/src/scripts/logout.ts | 4 +- resources/assets/src/scripts/net.ts | 4 +- resources/assets/src/scripts/notify.ts | 4 +- resources/assets/src/shims.d.ts | 2 +- .../assets/src/views/admin/Customization.vue | 4 +- resources/assets/src/views/admin/Market.vue | 8 +- resources/assets/src/views/admin/Players.vue | 32 ++-- resources/assets/src/views/admin/Plugins.vue | 16 +- resources/assets/src/views/admin/Reports.vue | 8 +- resources/assets/src/views/admin/Update.vue | 6 +- resources/assets/src/views/admin/Users.vue | 52 +++---- resources/assets/src/views/auth/Forgot.vue | 8 +- resources/assets/src/views/auth/Login.vue | 8 +- resources/assets/src/views/auth/Register.vue | 8 +- resources/assets/src/views/auth/Reset.vue | 8 +- resources/assets/src/views/skinlib/Show.vue | 44 +++--- resources/assets/src/views/skinlib/Upload.vue | 8 +- resources/assets/src/views/user/Bind.vue | 8 +- resources/assets/src/views/user/Dashboard.vue | 6 +- resources/assets/src/views/user/Players.vue | 24 +-- resources/assets/src/views/user/Profile.vue | 36 ++--- .../tests/components/AddPlayerDialog.test.ts | 4 +- .../components/ApplyToPlayerDialog.test.ts | 4 +- .../tests/components/ClosetItem.test.ts | 12 +- .../components/EmailVerification.test.ts | 4 +- .../tests/components/SkinLibItem.test.ts | 6 +- resources/assets/tests/scripts/logout.test.ts | 2 +- resources/assets/tests/scripts/net.test.ts | 8 +- .../tests/views/admin/Customization.test.ts | 2 +- .../assets/tests/views/admin/Market.test.ts | 6 +- .../assets/tests/views/admin/Players.test.ts | 16 +- .../assets/tests/views/admin/Plugins.test.ts | 12 +- .../assets/tests/views/admin/Reports.test.ts | 8 +- .../assets/tests/views/admin/Update.test.ts | 2 +- .../assets/tests/views/admin/Users.test.ts | 28 ++-- .../assets/tests/views/auth/Forgot.test.ts | 4 +- .../assets/tests/views/auth/Login.test.ts | 10 +- .../assets/tests/views/auth/Register.test.ts | 6 +- .../assets/tests/views/auth/Reset.test.ts | 4 +- .../assets/tests/views/skinlib/Show.test.ts | 24 +-- .../assets/tests/views/skinlib/Upload.test.ts | 4 +- .../assets/tests/views/user/Bind.test.ts | 4 +- .../assets/tests/views/user/Dashboard.test.ts | 4 +- .../assets/tests/views/user/Players.test.ts | 14 +- .../assets/tests/views/user/Profile.test.ts | 18 +-- tests/AdminControllerTest.php | 110 ++++++------- tests/AuthControllerTest.php | 66 ++++---- tests/ClosetControllerTest.php | 36 ++--- tests/MarketControllerTest.php | 8 +- tests/MiddlewareTest.php | 12 +- tests/PlayerControllerTest.php | 68 ++++----- tests/PluginControllerTest.php | 24 +-- tests/ReportControllerTest.php | 34 ++--- tests/SkinlibControllerTest.php | 144 +++++++++--------- tests/UpdateControllerTest.php | 8 +- tests/UserControllerTest.php | 90 +++++------ tsconfig.json | 1 + 73 files changed, 608 insertions(+), 607 deletions(-) diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index c1f86432..1ee8d3fc 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -461,8 +461,8 @@ class AdminController extends Controller $user->save(); return json([ - 'errno' => 0, - 'msg' => trans('admin.users.operations.permission'), + 'code' => 0, + 'message' => trans('admin.users.operations.permission'), ]); } elseif ($action == 'delete') { $user->delete(); diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 9bd7eaa5..58fb7823 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -155,8 +155,8 @@ class AuthController extends Controller Auth::login($user); return json([ - 'errno' => 0, - 'msg' => trans('auth.register.success'), + 'code' => 0, + 'message' => trans('auth.register.success'), ]); } @@ -191,8 +191,8 @@ class AuthController extends Controller // Rate limit if ($remain > 0) { return json([ - 'errno' => 2, - 'msg' => trans('auth.forgot.frequent-mail'), + 'code' => 2, + 'message' => trans('auth.forgot.frequent-mail'), 'remain' => $remain, ]); } diff --git a/app/Http/Controllers/PluginController.php b/app/Http/Controllers/PluginController.php index 97c8927d..6dd6eb8f 100644 --- a/app/Http/Controllers/PluginController.php +++ b/app/Http/Controllers/PluginController.php @@ -43,8 +43,8 @@ class PluginController extends Controller } return json([ - 'errno' => 1, - 'msg' => trans('admin.plugins.operations.unsatisfied.notice'), + 'code' => 1, + 'message' => trans('admin.plugins.operations.unsatisfied.notice'), 'reason' => $reason, ]); } diff --git a/app/Http/Controllers/SkinlibController.php b/app/Http/Controllers/SkinlibController.php index 33a35f78..5805f184 100644 --- a/app/Http/Controllers/SkinlibController.php +++ b/app/Http/Controllers/SkinlibController.php @@ -341,8 +341,8 @@ class SkinlibController extends Controller $t->save(); return json([ - 'errno' => 0, - 'msg' => trans('skinlib.privacy.success', ['privacy' => (! $t->public ? trans('general.private') : trans('general.public'))]), + 'code' => 0, + 'message' => trans('skinlib.privacy.success', ['privacy' => (! $t->public ? trans('general.private') : trans('general.public'))]), 'public' => $t->public, ]); } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 4dbcd3ea..cc02fff7 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -95,8 +95,8 @@ class UserController extends Controller $gap = option('sign_gap_time'); return json([ - 'errno' => 0, - 'msg' => trans('user.sign-success', ['score' => $acquiredScore]), + 'code' => 0, + 'message' => trans('user.sign-success', ['score' => $acquiredScore]), 'score' => $user->score, 'storage' => $this->calculatePercentageUsed($user->getStorageUsed(), option('score_per_storage')), 'remaining_time' => $gap > 1 ? round($gap) : $gap, @@ -252,8 +252,8 @@ class UserController extends Controller return response() ->json([ - 'errno' => 0, - 'msg' => trans('user.profile.delete.success'), + 'code' => 0, + 'message' => trans('user.profile.delete.success'), ]); } diff --git a/app/Http/Middleware/CheckPlayerExist.php b/app/Http/Middleware/CheckPlayerExist.php index bae52876..6e304c42 100644 --- a/app/Http/Middleware/CheckPlayerExist.php +++ b/app/Http/Middleware/CheckPlayerExist.php @@ -13,8 +13,8 @@ class CheckPlayerExist if ($request->has('pid') && $request->isMethod('post')) { if (is_null(Player::find($request->input('pid')))) { return response()->json([ - 'errno' => 1, - 'msg' => trans('general.unexistent-player'), + 'code' => 1, + 'message' => trans('general.unexistent-player'), ]); } else { return $next($request); diff --git a/app/Http/Middleware/CheckPlayerOwner.php b/app/Http/Middleware/CheckPlayerOwner.php index 77407c6c..97c4b48d 100644 --- a/app/Http/Middleware/CheckPlayerOwner.php +++ b/app/Http/Middleware/CheckPlayerOwner.php @@ -21,8 +21,8 @@ class CheckPlayerOwner if ($player->uid != auth()->id()) { return response()->json([ - 'errno' => 1, - 'msg' => trans('admin.players.no-permission'), + 'code' => 1, + 'message' => trans('admin.players.no-permission'), ]); } } diff --git a/app/helpers.php b/app/helpers.php index 1f856c4f..2cae9385 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -51,13 +51,13 @@ if (! function_exists('json')) { } elseif (count($args) == 3 && is_array($args[2])) { // The third argument is array of extra fields return Response::json(array_merge([ - 'errno' => $args[1], - 'msg' => $args[0], + 'code' => $args[1], + 'message' => $args[0], ], $args[2])); } else { return Response::json([ - 'errno' => Arr::get($args, 1, 1), - 'msg' => $args[0], + 'code' => Arr::get($args, 1, 1), + 'message' => $args[0], ]); } } diff --git a/resources/assets/src/components/AddPlayerDialog.vue b/resources/assets/src/components/AddPlayerDialog.vue index c5ece55b..d2577884 100644 --- a/resources/assets/src/components/AddPlayerDialog.vue +++ b/resources/assets/src/components/AddPlayerDialog.vue @@ -60,16 +60,16 @@ export default { }, methods: { async addPlayer() { - const { errno, msg } = await this.$http.post( + const { code, message } = await this.$http.post( '/user/player/add', { player_name: this.name } ) - if (errno === 0) { + if (code === 0) { $('#modal-add-player').modal('hide') - this.$message.success(msg) + this.$message.success(message) this.$emit('add') } else { - this.$message.warning(msg) + this.$message.warning(message) } }, }, diff --git a/resources/assets/src/components/ApplyToPlayerDialog.vue b/resources/assets/src/components/ApplyToPlayerDialog.vue index dda9c7c8..ecb70602 100644 --- a/resources/assets/src/components/ApplyToPlayerDialog.vue +++ b/resources/assets/src/components/ApplyToPlayerDialog.vue @@ -82,7 +82,7 @@ export default { return this.$message.info(this.$t('user.emptySelectedTexture')) } - const { errno, msg } = await this.$http.post( + const { code, message } = await this.$http.post( '/user/player/set', { pid: this.selected, @@ -92,11 +92,11 @@ export default { }, } ) - if (errno === 0) { - this.$message.success(msg) + if (code === 0) { + this.$message.success(message) $('#modal-use-as').modal('hide') } else { - this.$message.warning(msg) + this.$message.warning(message) } }, avatarUrl(player) { diff --git a/resources/assets/src/components/ClosetItem.vue b/resources/assets/src/components/ClosetItem.vue index a1d3bf88..ab229d4c 100644 --- a/resources/assets/src/components/ClosetItem.vue +++ b/resources/assets/src/components/ClosetItem.vue @@ -86,15 +86,15 @@ export default { return } - const { errno, msg } = await this.$http.post( + const { code, message } = await this.$http.post( '/user/closet/rename', { tid: this.tid, new_name: newTextureName } ) - if (errno === 0) { + if (code === 0) { this.textureName = newTextureName - this.$message.success(msg) + this.$message.success(message) } else { - this.$message.warning(msg) + this.$message.warning(message) } }, }, diff --git a/resources/assets/src/components/EmailVerification.vue b/resources/assets/src/components/EmailVerification.vue index c8a8944f..8feec019 100644 --- a/resources/assets/src/components/EmailVerification.vue +++ b/resources/assets/src/components/EmailVerification.vue @@ -26,11 +26,11 @@ export default { methods: { async resend() { this.pending = true - const { errno, msg } = await this.$http.post('/user/email-verification') - if (errno === 0) { - this.$message.success(msg) + const { code, message } = await this.$http.post('/user/email-verification') + if (code === 0) { + this.$message.success(message) } else { - this.$message.error(msg) + this.$message.error(message) } this.pending = false }, diff --git a/resources/assets/src/components/mixins/addClosetItem.ts b/resources/assets/src/components/mixins/addClosetItem.ts index 979f8c3d..a49438e5 100644 --- a/resources/assets/src/components/mixins/addClosetItem.ts +++ b/resources/assets/src/components/mixins/addClosetItem.ts @@ -22,15 +22,15 @@ export default Vue.extend<{ return } - const { errno, msg } = await this.$http.post( + const { code, message } = await this.$http.post( '/user/closet/add', { tid: this.tid, name: value } ) - if (errno === 0) { - this.$message.success(msg!) + if (code === 0) { + this.$message.success(message!) this.$emit('like-toggled', true) } else { - this.$message.warning(msg!) + this.$message.warning(message!) } }, }, diff --git a/resources/assets/src/components/mixins/enablePlugin.ts b/resources/assets/src/components/mixins/enablePlugin.ts index a8e01505..56fcf405 100644 --- a/resources/assets/src/components/mixins/enablePlugin.ts +++ b/resources/assets/src/components/mixins/enablePlugin.ts @@ -22,18 +22,18 @@ export default Vue.extend({ } const { - errno, msg, reason, + code, message, reason, } = await this.$http.post( '/admin/plugins/manage', { action: 'enable', name } - ) as { errno: number, msg: string, reason: string[] } - if (errno === 0) { - this.$message.success(msg) + ) as { code: number, message: string, reason: string[] } + if (code === 0) { + this.$message.success(message) this.$set(this.plugins[originalIndex], 'enabled', true) } else { const div = document.createElement('div') const p = document.createElement('p') - p.textContent = msg + p.textContent = message div.appendChild(p) const ul = document.createElement('ul') reason.forEach(item => { diff --git a/resources/assets/src/components/mixins/removeClosetItem.ts b/resources/assets/src/components/mixins/removeClosetItem.ts index 4482a4be..f82bc53e 100644 --- a/resources/assets/src/components/mixins/removeClosetItem.ts +++ b/resources/assets/src/components/mixins/removeClosetItem.ts @@ -15,15 +15,15 @@ export default Vue.extend<{ return } - const { errno, msg } = await this.$http.post( + const { code, message } = await this.$http.post( '/user/closet/remove', { tid: this.tid } ) - if (errno === 0) { + if (code === 0) { this.$emit('item-removed') - this.$message.success(msg!) + this.$message.success(message!) } else { - this.$message.warning(msg!) + this.$message.warning(message!) } }, }, diff --git a/resources/assets/src/components/mixins/setAsAvatar.ts b/resources/assets/src/components/mixins/setAsAvatar.ts index c49bc471..ff3fde44 100644 --- a/resources/assets/src/components/mixins/setAsAvatar.ts +++ b/resources/assets/src/components/mixins/setAsAvatar.ts @@ -14,17 +14,17 @@ export default Vue.extend<{ return } - const { errno, msg } = await this.$http.post( + const { code, message } = await this.$http.post( '/user/profile/avatar', { tid: this.tid } ) - if (errno === 0) { - this.$message.success(msg!) + if (code === 0) { + this.$message.success(message!) Array.from(document.querySelectorAll('[alt="User Image"]')) .forEach(el => (el.src += `?${new Date().getTime()}`)) } else { - this.$message.warning(msg!) + this.$message.warning(message!) } }, }, diff --git a/resources/assets/src/scripts/logout.ts b/resources/assets/src/scripts/logout.ts index 5d0d5a7d..d0039fbe 100644 --- a/resources/assets/src/scripts/logout.ts +++ b/resources/assets/src/scripts/logout.ts @@ -11,9 +11,9 @@ export async function logout() { return } - const { msg } = await post('/auth/logout') + const { message } = await post('/auth/logout') setTimeout(() => (window.location.href = blessing.base_url), 1000) - Message.success(msg) + Message.success(message) } const button = document.querySelector('#logout-button') diff --git a/resources/assets/src/scripts/net.ts b/resources/assets/src/scripts/net.ts index b0e7559e..d81e4d33 100644 --- a/resources/assets/src/scripts/net.ts +++ b/resources/assets/src/scripts/net.ts @@ -43,8 +43,8 @@ export async function walkFetch(request: Request): Promise { errors: { [field: string]: string[] } } = await response.json() return { - errno: 1, - msg: Object.keys(errors).map(field => errors[field][0])[0], + code: 1, + message: Object.keys(errors).map(field => errors[field][0])[0], } } diff --git a/resources/assets/src/scripts/notify.ts b/resources/assets/src/scripts/notify.ts index ad074268..7d2cfb6c 100644 --- a/resources/assets/src/scripts/notify.ts +++ b/resources/assets/src/scripts/notify.ts @@ -8,7 +8,7 @@ export function showAjaxError(error: Error): void { } export function showModal( - msg: string, title = 'Message', + message: string, title = 'Message', type = 'default', options: ModalOptions = {} ): void { @@ -30,7 +30,7 @@ export function showModal(