From 51bd9619e3fc4d66861633512bfdde3591a5d960 Mon Sep 17 00:00:00 2001 From: Pawel Skotnicki Date: Wed, 13 Aug 2025 11:27:38 +0200 Subject: [PATCH] Allow to overwritte base url and provide Guzzle config --- lib/ApiClient/Http/Client.php | 4 ++-- lib/ApiClient/TicketparkApiClient.php | 5 +++-- test/ApiClient/TicketparkApiClientTest.php | 25 ++++++++++++++++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/lib/ApiClient/Http/Client.php b/lib/ApiClient/Http/Client.php index d66000d..929b1c9 100644 --- a/lib/ApiClient/Http/Client.php +++ b/lib/ApiClient/Http/Client.php @@ -15,9 +15,9 @@ final class Client implements ClientInterface { private readonly GuzzleClient $guzzle; - public function __construct() + public function __construct(array $guzzleConfig = []) { - $this->guzzle = new GuzzleClient(); + $this->guzzle = new GuzzleClient($guzzleConfig); } public function head(string $url, array $headers): Response diff --git a/lib/ApiClient/TicketparkApiClient.php b/lib/ApiClient/TicketparkApiClient.php index dff9485..5b0a1fa 100644 --- a/lib/ApiClient/TicketparkApiClient.php +++ b/lib/ApiClient/TicketparkApiClient.php @@ -23,7 +23,8 @@ class TicketparkApiClient public function __construct( private readonly string $apiKey, - private readonly string $apiSecret + private readonly string $apiSecret, + private readonly string $baseUrl = self::ROOT_URL, ) { } @@ -147,7 +148,7 @@ private function getUrl(string $path, array $parameters = []): string $params = '?' . http_build_query($parameters); } - return self::ROOT_URL . $path . $params; + return $this->baseUrl . $path . $params; } private function getValidAccessToken(): string diff --git a/test/ApiClient/TicketparkApiClientTest.php b/test/ApiClient/TicketparkApiClientTest.php index 24fe2da..e09ac4d 100644 --- a/test/ApiClient/TicketparkApiClientTest.php +++ b/test/ApiClient/TicketparkApiClientTest.php @@ -224,4 +224,29 @@ public function testGenerateTokensThrowsExceptionOnUnexpectedResponse() $this->apiClient->setUserCredentials('username', 'secret'); $this->apiClient->generateTokens(); } + + public function testGetWithOverwrittenBaseUrl() + { + $httpClient = $this->prophet->prophesize(ClientInterface::class); + $httpClient->get( + 'https://overwritten.ticketpark.ch/path?foo=bar', + [ + 'Content-Type' => 'application/json', + 'Accept' => 'application/json', + 'Authorization' => 'Bearer some-token' + ] + ) + ->willReturn(new Response(200, '', [])) + ->shouldBeCalledOnce(); + + $apiClient = new TicketparkApiClient( + 'apiKey', + 'apiSecret', + 'https://overwritten.ticketpark.ch' + ); + + $apiClient->setClient($httpClient->reveal()); + $apiClient->setAccessToken('some-token'); + $apiClient->get('/path', ['foo' => 'bar']); + } }