title('URL SHORTENER'); $urlShortener = $appConfig->getUrlShortener(); $diffKeys = $appConfig->hasUrlShortener() && $io->confirm('Do you want to keep imported URL shortener config?'); $keysToAskFor = $diffKeys ? array_diff(self::EXPECTED_KEYS, array_keys($urlShortener)) : self::EXPECTED_KEYS; if (empty($keysToAskFor)) { return; } foreach ($keysToAskFor as $key) { $urlShortener[$key] = $this->ask($io, $key); } $appConfig->setUrlShortener($urlShortener); } private function ask(SymfonyStyle $io, string $key) { switch ($key) { case self::SCHEMA: return $io->choice( 'Select schema for generated short URLs', ['http', 'https'], 'http' ); case self::HOSTNAME: return $this->askRequired($io, 'hostname', 'Hostname for generated URLs'); case self::CHARS: return $io->ask( 'Character set for generated short codes (leave empty to autogenerate one)' ) ?: str_shuffle(UrlShortener::DEFAULT_CHARS); case self::VALIDATE_URL: return $io->confirm('Do you want to validate long urls by 200 HTTP status code on response'); } return ''; } }