function create_user($request) { $raw_input = $request->getBody(); $content_type = explode(';', $request->type)[0]; switch ($content_type) { case 'application/json': $input_data = json_decode($raw_input, true); break; case 'application/x-www-form-urlencoded': $input_data = array(); parse_str($raw_input, $input_data); break; default: Util::output_errors_and_die('', 415); } if ($input_data === null) { Util::output_errors_and_die('', 400); } $fields = array('full_name' => '', 'email' => '', 'gender' => '', 'birth_date' => '', 'username' => '', 'role' => ''); $user_data = array(); foreach ($fields as $f => $v) { if (array_key_exists($f, $input_data)) { if (!is_string($input_data[$f])) { Util::output_errors_and_die('', 400); } $user_data[$f] = trim($input_data[$f]); } else { $user_data[$f] = ''; } } if (isset($input_data['password'])) { if (!is_string($input_data['password'])) { Util::output_errors_and_die('', 400); } $user_data['password'] = $input_data['password']; } set_empty_if_undefined($user_data['password']); try { $model = new Model(); $uid = $model->create_user($user_data); } catch (DatabaseException $e) { Util::output_errors_and_die($e->getMessage(), 503); } catch (ConflictException $e) { Util::output_errors_and_die($e->getMessage(), 409); } catch (Exception $e) { Util::output_errors_and_die($e->getMessage(), 400); } if ($uid) { http_response_code(201); header('Content-Type: text/plain'); echo '/users/' . $uid; die; } else { Util::output_errors_and_die('', 400); } }