/**
  * @route POST /?method=users.create&format=json
  * @route POST /users/create.json
  * 
  * @param Request $request
  * @return Response
  * @throws Exception
  */
 public function createAction($request)
 {
     $request->acceptContentTypes(array('json'));
     if ('POST' != $request->getMethod()) {
         throw new Exception('HTTP method not allowed', Response::NOT_ALLOWED);
     }
     try {
         $user = new User(array('name' => $request->getPost('name'), 'username' => $request->getPost('username'), 'email' => $request->getPost('email'), 'gender' => $request->getPost('gender')));
     } catch (ValidationException $e) {
         throw new Exception($e->getMessage(), Response::OK);
     }
     $id = $this->getModel('User')->save($user);
     if (!is_numeric($id)) {
         throw new Exception('An error occurred while creating user', Response::OK);
     }
     $response = new Response();
     $response->setCode(Response::CREATED);
     $response->setEtagHeader(md5('/users/' . $id));
     return $response;
 }