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']);
+ }
}