From fea805e3851c5b2ebd2e2c3d2d812ca8c7da40c1 Mon Sep 17 00:00:00 2001 From: Kendrick Chan Date: Mon, 29 Jan 2018 08:36:08 +0800 Subject: [PATCH] Make api json_encode result use JSON_FORCE_OBJECT --- config/routes/api.yaml | 4 +- src/Controller/APIController.php | 74 ++++++++++++++++++++++++++++---- src/Ramcar/APIResult.php | 9 +++- 3 files changed, 75 insertions(+), 12 deletions(-) diff --git a/config/routes/api.yaml b/config/routes/api.yaml index eac71aac..fe58d73d 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -36,7 +36,7 @@ api_vehicle_mfg_list: methods: [GET] api_vehicle_make_list: - path: /api/vehicle/mfgs/{id}/makes + path: /api/vehicle/mfgs/{mfg_id}/makes controller: App\Controller\APIController::listVehicleMakes methods: [GET] @@ -61,7 +61,7 @@ api_promo_list: methods: [GET] api_battery_list: - path: /api/vehicles/{id}/compatible_batteries + path: /api/vehicles/{vid}/compatible_batteries controller: App\Controller\APIController::getCompatibleBatteries methods: [GET] diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index e33f5b93..ba5418a0 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -8,6 +8,7 @@ use Doctrine\DBAL\DBALException; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\HttpFoundation\JsonResponse; use App\Ramcar\APIResult; use App\Entity\MobileSession; @@ -112,7 +113,7 @@ class APIController extends Controller $params = implode(', ', $missing); $res->setError(true) ->setErrorMessage('Missing parameter(s): ' . $params); - return $this->json($res->getReturnResponse()); + return $res->getReturnResponse(); } $em = $this->getDoctrine()->getManager(); @@ -161,7 +162,7 @@ class APIController extends Controller // response - return $this->json($res->getReturnResponse()); + return $res->getReturnResponse(); } public function confirmNumber(Request $req) @@ -175,7 +176,7 @@ class APIController extends Controller $em = $this->getDoctrine()->getManager(); $res = $this->checkParamsAndKey($req, $em, $required_params); if ($res->isError()) - return $this->json($res->getReturnResponse()); + return $res->getReturnResponse(); // phone number $phone_number = $req->request->get('phone_number'); @@ -194,13 +195,11 @@ class APIController extends Controller // TODO: send sms to number // response - return $this->json($res->getReturnResponse()); + return $res->getReturnResponse(); } public function validateCode(Request $req) { - $res = new APIResult(); - // check parameters $required_params = [ 'code', @@ -210,7 +209,7 @@ class APIController extends Controller $em = $this->getDoctrine()->getManager(); $res = $this->checkParamsAndKey($req, $em, $required_params); if ($res->isError()) - return $this->json($res->getReturnResponse()); + return $res->getReturnResponse(); // code is wrong $code = $req->request->get('code'); @@ -218,7 +217,7 @@ class APIController extends Controller { $res->setError(true) ->setErrorMessage('Wrong confirm code'); - return $this->json($res->getReturnResponse()); + return $res->getReturnResponse(); } // set confirm date @@ -228,6 +227,63 @@ class APIController extends Controller $em->flush(); // response - return $this->json($res->getReturnResponse()); + return $res->getReturnResponse(); + } + + public function getInfo() + { + // check required parameters and api key + $required_params = []; + $em = $this->getDoctrine()->getManager(); + $res = $this->checkParamsAndKey($req, $em, $required_params); + if ($res->isError()) + return $res->getReturnResponse(); + + + return $res->getReturnResponse(); + } + + public function updateInfo(Request $req) + { + } + + public function getStatus() + { + } + + public function listVehicleManufacturers() + { + } + + public function listVehicleMakes($mfg_id) + { + } + + public function addVehicle(Request $req) + { + } + + public function updateVehicle(Request $req, $id) + { + } + + public function listVehicles() + { + } + + public function listPromos() + { + } + + public function getCompatibleBatteries(Request $req, $vid) + { + } + + public function requestJobOrder(Request $req) + { + } + + public function getEstimate(Request $req) + { } } diff --git a/src/Ramcar/APIResult.php b/src/Ramcar/APIResult.php index dce4cf36..e1fea610 100644 --- a/src/Ramcar/APIResult.php +++ b/src/Ramcar/APIResult.php @@ -2,6 +2,8 @@ namespace App\Ramcar; +use Symfony\Component\HttpFoundation\JsonResponse; + class APIResult { protected $err_flag; @@ -55,12 +57,17 @@ class APIResult else $status = 'success'; - return [ + $return_data = [ 'error' => [ 'status' => $status, 'message' => $this->err_message ], 'data' => $this->data ]; + + $json = new JsonResponse($return_data); + $json->setEncodingOptions(JsonResponse::DEFAULT_ENCODING_OPTIONS | JSON_FORCE_OBJECT); + + return $json; } }