serviceUri = $serviceUri; $this->httpClient = $httpClient; $this->requestFactory = $requestFactory; $this->additionalQueryStringValues = $additionalQueryStringValues; $this->additionalHeaders = $additionalHeaders; } public function getMetadataStatementFor(MetadataTOCPayloadEntry $entry): MetadataStatement { $uri = $this->buildUri($entry->getUrl()); return MetadataStatementFetcher::fetchMetadataStatement($uri, true, $this->httpClient, $this->requestFactory, $this->additionalHeaders); } public function getMetadataTOCPayload(): MetadataTOCPayload { $uri = $this->buildUri($this->serviceUri); return MetadataStatementFetcher::fetchTableOfContent($uri, $this->httpClient, $this->requestFactory, $this->additionalHeaders); } private function buildUri(string $uri): string { $parsedUri = parse($uri); $queryString = $parsedUri['query']; $query = parse_query($queryString ?? ''); foreach ($this->additionalQueryStringValues as $k => $v) { $query[$k] = $v; } $parsedUri['query'] = build_query($query); return build($parsedUri); } }