apiKeyService = $apiKeyService; } /** * @param Request $request * @return CreateShortCodeData * @throws \InvalidArgumentException * @throws InvalidArgumentException */ protected function buildUrlToShortCodeData(Request $request): CreateShortCodeData { $query = $request->getQueryParams(); // Check provided API key $apiKey = $this->apiKeyService->getByKey($query['apiKey'] ?? ''); if ($apiKey === null || ! $apiKey->isValid()) { throw new InvalidArgumentException( $this->translator->translate('No API key was provided or it is not valid') ); } if (! isset($query['longUrl'])) { throw new InvalidArgumentException($this->translator->translate('A URL was not provided')); } return new CreateShortCodeData(new Uri($query['longUrl'])); } }