Gush\ThirdParty\Github\GitHubConfigurator::interact PHP Метод

interact() публичный Метод

public interact ( Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output )
$input Symfony\Component\Console\Input\InputInterface
$output Symfony\Component\Console\Output\OutputInterface
    public function interact(InputInterface $input, OutputInterface $output)
    {
        $oAuthToken = null;
        $client = new Client();
        $authenticationAttempts = 0;
        $authentication = ['username' => null, 'password' => null, 'base_url' => $this->apiUrl, 'repo_domain_url' => $this->repoUrl];
        while (null === $oAuthToken) {
            if ($authenticationAttempts > 0) {
                $this->styleHelper->error('Authentication failed please try again.');
            }
            $authentication['base_url'] = $this->styleHelper->ask(sprintf('%s API url', $this->label), $authentication['base_url'], [$this, 'validateUrl']);
            $authentication['repo_domain_url'] = $this->styleHelper->ask(sprintf('%s web url', $this->label), $authentication['repo_domain_url'], [$this, 'validateUrl']);
            $this->styleHelper->note(['For security reasons an authentication token will be stored instead of your password.', sprintf('To revoke access of this token you can visit %s/settings/tokens', $authentication['repo_domain_url'])]);
            $authentication['username'] = $this->styleHelper->ask('Username', $authentication['username'], [$this, 'validateNoneEmpty']);
            $authentication['password'] = $this->styleHelper->askHidden('Password', [$this, 'validateNoneEmpty']);
            try {
                $client->authenticate($authentication['username'], $authentication['password']);
                $oAuthToken = $this->createAuthorization($client)['token'];
            } catch (TwoFactorAuthenticationRequiredException $e) {
                $oAuthToken = $this->handle2fa($client, $e)['token'];
            }
        }
        return $this->getConfigStructure($authentication['username'], $oAuthToken, $authentication['base_url'], $authentication['repo_domain_url']);
    }