apiHandler = $apiHandler; $this->configHandler = $configHandler; } /** * @inheritdoc */ public function handleAction() { $code = filter_input(INPUT_GET, 'code', FILTER_SANITIZE_STRING); $redirectionTarget = $this->getRedirectUrl(); $apiToken = $this->apiHandler->getApiToken($code, $redirectionTarget); if (is_string($apiToken)) { $this->throwError(sprintf(__('Failed to fetch api token: "%s"', AID_CF7CR_TEXTDOMAIN), $apiToken)); } try { $date = new \DateTime(); $date->add((new \DateInterval('PT'.$apiToken->getExpiresIn().'S'))); } catch (\Exception $e) { $this->throwError(sprintf(__('Failed to process date with expiration interval: "%s"', AID_CF7CR_TEXTDOMAIN), $apiToken->getExpiresIn())); } $this->configHandler->setApiToken($apiToken); $this->configHandler->setApiTokenExpiry($date->format('Y-m-d H:i:s')); wp_safe_redirect($this->getTargetUrl()); exit(); } /** * @return string */ private function getRedirectUrl() { return esc_url(admin_url('admin-post.php?action=' . UpdateApiTokenController::ACTION_ID)); } /** * @return string */ private function getTargetUrl() { return esc_url('options-general.php?page='.SettingsApiBlock::BLOCK_SLUG); } }