Chris@0: transliteration = $transliteration; Chris@0: $this->tokenGenerator = $token_generator; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public static function create(ContainerInterface $container) { Chris@0: return new static( Chris@0: $container->get('transliteration'), Chris@0: $container->get('csrf_token') Chris@0: ); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Transliterates a string in given language. Various postprocessing possible. Chris@0: * Chris@0: * @param \Symfony\Component\HttpFoundation\Request $request Chris@0: * The input string and language for the transliteration. Chris@0: * Optionally may contain the replace_pattern, replace, lowercase parameters. Chris@0: * Chris@0: * @return \Symfony\Component\HttpFoundation\JsonResponse Chris@0: * The transliterated string. Chris@0: */ Chris@0: public function transliterate(Request $request) { Chris@0: $text = $request->query->get('text'); Chris@0: $langcode = $request->query->get('langcode'); Chris@0: $replace_pattern = $request->query->get('replace_pattern'); Chris@0: $replace_token = $request->query->get('replace_token'); Chris@0: $replace = $request->query->get('replace'); Chris@0: $lowercase = $request->query->get('lowercase'); Chris@0: Chris@0: $transliterated = $this->transliteration->transliterate($text, $langcode, '_'); Chris@0: if ($lowercase) { Chris@17: $transliterated = mb_strtolower($transliterated); Chris@0: } Chris@0: Chris@0: if (isset($replace_pattern) && isset($replace)) { Chris@0: if (!isset($replace_token)) { Chris@0: throw new AccessDeniedHttpException("Missing 'replace_token' query parameter."); Chris@0: } Chris@0: elseif (!$this->tokenGenerator->validate($replace_token, $replace_pattern)) { Chris@0: throw new AccessDeniedHttpException("Invalid 'replace_token' query parameter."); Chris@0: } Chris@0: Chris@0: // Quote the pattern delimiter and remove null characters to avoid the e Chris@0: // or other modifiers being injected. Chris@0: $transliterated = preg_replace('@' . strtr($replace_pattern, ['@' => '\@', chr(0) => '']) . '@', $replace, $transliterated); Chris@0: } Chris@0: return new JsonResponse($transliterated); Chris@0: } Chris@0: Chris@0: }