getParsedBody(); if (! isset($postData['longUrl'])) { throw new InvalidArgumentException('A URL was not provided'); } return new CreateShortUrlData( new Uri($postData['longUrl']), (array) ($postData['tags'] ?? []), ShortUrlMeta::createFromParams( $this->getOptionalDate($postData, 'validSince'), $this->getOptionalDate($postData, 'validUntil'), $postData['customSlug'] ?? null, isset($postData['maxVisits']) ? (int) $postData['maxVisits'] : null ) ); } private function getOptionalDate(array $postData, string $fieldName): ?Chronos { return isset($postData[$fieldName]) ? Chronos::parse($postData[$fieldName]) : null; } }