Skip to content

Commit 245b0ad

Browse files
committed
Added more variability for ENV configuration
1 parent 0a0dcf0 commit 245b0ad

File tree

2 files changed

+102
-25
lines changed

2 files changed

+102
-25
lines changed

src/Config.php

Lines changed: 77 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,19 @@
77

88
class Config
99
{
10-
private const SoftRegisterUriProd = 'https://client-registration.api-gateway.kb.cz/v3/software-statements';
11-
private const SoftRegisterUriSand = 'https://api-gateway.kb.cz/sandbox/client-registration/v3/software-statements';
12-
private const AppRegisterUriProd = 'https://api-gateway.kb.cz/client-registration-ui/v2/saml/register';
13-
private const AppRegisterUriSand = 'https://api-gateway.kb.cz/sandbox/client-registration-ui/v2/saml/register';
14-
private const AuthLoginUriProd = 'https://login.kb.cz/autfe/ssologin';
15-
private const AuthLoginUriSand = 'https://api-gateway.kb.cz/sandbox/oauth2-authorization-ui/v3/';
16-
private const AuthTokenUriProd = 'https://api-gateway.kb.cz/oauth2/v3/access_token';
17-
private const AuthTokenUriSand = 'https://api-gateway.kb.cz/sandbox/oauth2/v3/access_token';
18-
private const AdaaUriProd = 'https://api-gateway.kb.cz/adaa/v2';
19-
private const AdaaUriSand = 'https://api-gateway.kb.cz/sandbox/adaa/v2';
20-
21-
public function __construct(
10+
protected const SoftRegisterUriProd = 'https://client-registration.api-gateway.kb.cz/v3/software-statements';
11+
protected const SoftRegisterUriSand = 'https://api-gateway.kb.cz/sandbox/client-registration/v3/software-statements';
12+
protected const AppRegisterUriProd = 'https://api-gateway.kb.cz/client-registration-ui/v2/saml/register';
13+
protected const AppRegisterUriSand = 'https://api-gateway.kb.cz/sandbox/client-registration-ui/v2/saml/register';
14+
protected const AuthLoginUriProd = 'https://login.kb.cz/autfe/ssologin';
15+
protected const AuthLoginUriSand = 'https://api-gateway.kb.cz/sandbox/oauth2-authorization-ui/v3/';
16+
protected const AuthTokenUriProd = 'https://api-gateway.kb.cz/oauth2/v3/access_token';
17+
protected const AuthTokenUriSand = 'https://api-gateway.kb.cz/sandbox/oauth2/v3/access_token';
18+
protected const AdaaUriProd = 'https://api-gateway.kb.cz/adaa/v2';
19+
protected const AdaaUriSand = 'https://api-gateway.kb.cz/sandbox/adaa/v2';
20+
21+
22+
private function __construct(
2223
public bool $sandbox,
2324
public ?string $certificatePath,
2425
public string $softRegistrationApiKey,
@@ -33,30 +34,83 @@ public function __construct(
3334
public string $authTokenUri,
3435
public string $adaaApiKey,
3536
public string $adaaUri,
36-
) {
37-
}
37+
) {}
3838

3939

40-
public static function createFromEnv(SplFileInfo $filePath): self
40+
public static function createFromDotEnv(SplFileInfo $filePath): self
4141
{
4242
$env = new DotEnv($filePath);
43-
$sandbox = $env->KB_ACCOUNTSAPI_SANDBOX ?? false;
43+
$creator = ($env->KB_ACCOUNTSAPI_SANDBOX ?? false)
44+
? self::createSandbox(...)
45+
: self::createProduction(...);
4446

45-
return new self(
46-
sandbox: $sandbox,
47+
return $creator(
4748
certificatePath: $env->KB_ACCOUNTSAPI_CERTIFICATE_PATH,
4849
softRegistrationApiKey: $env->KB_ACCOUNTSAPI_SOFT_REGISTRATION_API_KEY,
49-
softRegistrationUri: $sandbox ? self::SoftRegisterUriSand : self::SoftRegisterUriProd,
5050
softRegistrationCallbackUri: $env->KB_ACCOUNTSAPI_SOFT_REGISTRATION_CALLBACK_URI,
5151
appRegistrationApiKey: $env->KB_ACCOUNTSAPI_APP_REGISTRATION_API_KEY,
52-
appRegistrationUri: $sandbox ? self::AppRegisterUriSand : self::AppRegisterUriProd,
5352
appRegistrationCallbackUri: $env->KB_ACCOUNTSAPI_APP_REGISTRATION_CALLBACK_URI,
5453
authApiKey: $env->KB_ACCOUNTSAPI_AUTH_API_KEY,
5554
authCallbackUri: $env->KB_ACCOUNTSAPI_AUTH_CALLBACK_URI,
56-
authLoginUri: $sandbox ? self::AuthLoginUriSand : self::AuthLoginUriProd,
57-
authTokenUri: $sandbox ? self::AuthTokenUriSand : self::AuthTokenUriProd,
5855
adaaApiKey: $env->KB_ACCOUNTSAPI_ADAA_API_KEY,
59-
adaaUri: $sandbox ? self::AdaaUriSand : self::AdaaUriProd,
56+
);
57+
}
58+
59+
60+
public static function createSandbox(
61+
?string $certificatePath,
62+
string $softRegistrationApiKey,
63+
string $softRegistrationCallbackUri,
64+
string $appRegistrationApiKey,
65+
string $appRegistrationCallbackUri,
66+
string $authApiKey,
67+
string $authCallbackUri,
68+
string $adaaApiKey,
69+
): self {
70+
return new self(
71+
sandbox: true,
72+
certificatePath: $certificatePath,
73+
softRegistrationApiKey: $softRegistrationApiKey,
74+
softRegistrationUri: self::SoftRegisterUriSand,
75+
softRegistrationCallbackUri: $softRegistrationCallbackUri,
76+
appRegistrationApiKey: $appRegistrationApiKey,
77+
appRegistrationUri: self::AppRegisterUriSand,
78+
appRegistrationCallbackUri: $appRegistrationCallbackUri,
79+
authApiKey: $authApiKey,
80+
authCallbackUri: $authCallbackUri,
81+
authLoginUri: self::AuthLoginUriSand,
82+
authTokenUri: self::AuthTokenUriSand,
83+
adaaApiKey: $adaaApiKey,
84+
adaaUri: self::AdaaUriSand,
85+
);
86+
}
87+
88+
89+
public static function createProduction(
90+
?string $certificatePath,
91+
string $softRegistrationApiKey,
92+
string $softRegistrationCallbackUri,
93+
string $appRegistrationApiKey,
94+
string $appRegistrationCallbackUri,
95+
string $authApiKey,
96+
string $authCallbackUri,
97+
string $adaaApiKey,
98+
): self {
99+
return new self(
100+
sandbox: false,
101+
certificatePath: $certificatePath,
102+
softRegistrationApiKey: $softRegistrationApiKey,
103+
softRegistrationUri: self::SoftRegisterUriProd,
104+
softRegistrationCallbackUri: $softRegistrationCallbackUri,
105+
appRegistrationApiKey: $appRegistrationApiKey,
106+
appRegistrationUri: self::AppRegisterUriProd,
107+
appRegistrationCallbackUri: $appRegistrationCallbackUri,
108+
authApiKey: $authApiKey,
109+
authCallbackUri: $authCallbackUri,
110+
authLoginUri: self::AuthLoginUriProd,
111+
authTokenUri: self::AuthTokenUriProd,
112+
adaaApiKey: $adaaApiKey,
113+
adaaUri: self::AdaaUriProd,
60114
);
61115
}
62116
}

src/KbClient.php

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@
3131
use function base64_decode;
3232
use function base64_encode;
3333
use function compact;
34+
use function getenv;
3435
use function http_build_query;
3536
use function json_decode;
3637
use function json_encode;
3738
use function str_ends_with;
3839
use function str_replace;
3940
use function str_starts_with;
41+
use function strtolower;
4042
use function substr;
4143

4244
class KbClient
@@ -53,9 +55,30 @@ public function __construct(
5355
}
5456

5557

56-
public static function createDefault(string $envFilePath): self
58+
/**
59+
* @param string|null $envFilePath NULL for the path means reading ENV by function getenv()
60+
* @throws KbClientException
61+
*/
62+
public static function createDefault(?string $envFilePath): self
5763
{
58-
$config = Config::createFromEnv(new SplFileInfo($envFilePath));
64+
if (isset($envFilePath)) {
65+
$config = Config::createFromDotEnv(new SplFileInfo($envFilePath));
66+
} else {
67+
$sandbox = getenv('KB_ACCOUNTSAPI_SANDBOX') ?: '';
68+
$sandbox = in_array(strtolower($sandbox), ['1', 'on', 'yes', 'true'], strict: true);
69+
$configCreator = $sandbox ? Config::createSandbox(...) : Config::createProduction(...);
70+
$config = $configCreator(
71+
certificatePath: getenv('KB_ACCOUNTSAPI_CERTIFICATE_PATH'),
72+
softRegistrationApiKey: getenv('KB_ACCOUNTSAPI_SOFT_REGISTRATION_API_KEY'),
73+
softRegistrationCallbackUri: getenv('KB_ACCOUNTSAPI_SOFT_REGISTRATION_CALLBACK_URL'),
74+
appRegistrationApiKey: getenv('KB_ACCOUNTSAPI_APP_REGISTRATION_API_KEY'),
75+
appRegistrationCallbackUri: getenv('KB_ACCOUNTSAPI_APP_REGISTRATION_CALLBACK_URL'),
76+
authApiKey: getenv('KB_ACCOUNTSAPI_AUTH_API_KEY'),
77+
authCallbackUri: getenv('KB_ACCOUNTSAPI_AUTH_CALLBACK_URL'),
78+
adaaApiKey: getenv('KB_ACCOUNTSAPI_ADAA_API_KEY'),
79+
);
80+
}
81+
5982
$clientOptions = [];
6083

6184
if ($config->certificatePath) {

0 commit comments

Comments
 (0)