From be2877c875ea936d4b9aa9eee0621378d754fe16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristia=CC=81n=20Feldsam?= Date: Sat, 20 Apr 2019 21:50:24 +0200 Subject: [PATCH] JSON API Consume json in request body. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Draft docs https://feldhostmailhosting.docs.apiary.io Signed-off-by: Kristián Feldsam --- data/web/json_api.php | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/data/web/json_api.php b/data/web/json_api.php index 53ecf5202..8e6407b75 100644 --- a/data/web/json_api.php +++ b/data/web/json_api.php @@ -64,6 +64,42 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u $object = (isset($query[2])) ? $query[2] : null; $extra = (isset($query[3])) ? $query[3] : null; + // accept json in request body + if($_SERVER['HTTP_CONTENT_TYPE'] === 'application/json') { + $request = file_get_contents('php://input'); + $requestDecoded = json_decode($request, true); + + // check for valid json + if($action != 'get' && $requestDecoded === null) { + echo json_encode(array( + 'type' => 'error', + 'msg' => 'Request body doesn\'t contain valid json!' + )); + exit; + } + + // add + if($action == 'add') { + $_POST['attr'] = $request; + } + + // edit + if($action == 'edit') { + $_POST['attr'] = json_encode($requestDecoded['attr']); + $_POST['items'] = json_encode($requestDecoded['items']); + } + + // delete + if($action == 'delete') { + $_POST['items'] = $request; + } + + unset($_SESSION['return']); + unset($_SESSION['success']); + unset($_SESSION['danger']); + unset($_SESSION['error']); + } + $request_incomplete = json_encode(array( 'type' => 'error', 'msg' => 'Cannot find attributes in post data'