/** * trigger a action for given snippet specified over get-action parameter. * * @Post("/snippets/{uuid}") * * @param string $uuid * @param Request $request * * @return \Symfony\Component\HttpFoundation\Response */ public function postTriggerAction($uuid, Request $request) { $view = null; $snippet = null; $this->initEnv($request); $action = $this->getRequestParameter($request, 'action', true); try { switch ($action) { case 'copy-locale': $destLocale = $this->getRequestParameter($request, 'dest', true); // call repository method $snippet = $this->snippetRepository->copyLocale($uuid, $this->getUser()->getId(), $this->languageCode, explode(',', $destLocale)); break; default: throw new RestException('Unrecognized action: ' . $action); } // prepare view $view = View::create($this->decorateSnippet($snippet->toArray(), $this->languageCode), $snippet !== null ? 200 : 204); } catch (RestException $exc) { $view = View::create($exc->toArray(), 400); } return $this->viewHandler->handle($view); }