Skip to content

Commit 41b06d2

Browse files
PIMOB-4287: fix ci/cd + build prefix url from constants
1 parent 19a922e commit 41b06d2

File tree

6 files changed

+55
-41
lines changed

6 files changed

+55
-41
lines changed

.github/workflows/gradle-task.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ jobs:
4343
~/.gradle/caches
4444
~/.gradle/wrapper
4545
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
46+
47+
- name: Create local.properties
48+
run: |
49+
touch local.properties
50+
echo "sandbox.components.public_key=${{ secrets.COMPONENTS_SANDBOX_PUBLIC_KEY }}" >> local.properties
51+
echo "sandbox.components.secret_key=${{ secrets.COMPONENTS_SANDBOX_SECRET_KEY }}" >> local.properties
52+
4653
- name: Run ${{ inputs.task }} with Gradle
4754
run: ./gradlew :${{ inputs.module }}:${{ inputs.task }}
4855

checkout/src/main/java/com/checkout/CheckoutApiServiceFactory.kt

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -63,33 +63,31 @@ public object CheckoutApiServiceFactory {
6363
publicKey: String,
6464
environment: Environment,
6565
baseUrlPrefix: String?,
66-
): TokenRepository {
67-
return TokenRepositoryImpl(
68-
networkApiClient = provideNetworkApiClient(publicKey, environment.toBaseUrl(baseUrlPrefix)),
69-
cardToTokenRequestMapper = CardToTokenRequestMapper(),
70-
cvvToTokenNetworkRequestMapper = CVVToTokenNetworkRequestMapper(),
71-
cardTokenizationNetworkDataMapper = CardTokenizationNetworkDataMapper(),
72-
validateTokenizationDataUseCase = ValidateTokenizationDataUseCase(
73-
CardValidatorFactory.createInternal(),
74-
AddressValidator(),
75-
PhoneValidator(),
76-
AddressToAddressValidationRequestDataMapper(),
77-
),
78-
validateCVVTokenizationDataUseCase = ValidateCVVTokenizationDataUseCase(
79-
CVVComponentValidatorFactory.create(),
80-
),
81-
logger = TokenizationEventLogger(EventLoggerProvider.provide()),
82-
publicKey = publicKey,
83-
cvvTokenizationNetworkDataMapper = CVVTokenizationNetworkDataMapper(),
84-
riskSdkUseCase = RiskSdkUseCase(
85-
environment,
86-
context,
87-
publicKey,
88-
riskSDKFramesOptions,
89-
RiskInstanceProvider,
90-
),
91-
)
92-
}
66+
): TokenRepository = TokenRepositoryImpl(
67+
networkApiClient = provideNetworkApiClient(publicKey, environment.toBaseUrl(baseUrlPrefix)),
68+
cardToTokenRequestMapper = CardToTokenRequestMapper(),
69+
cvvToTokenNetworkRequestMapper = CVVToTokenNetworkRequestMapper(),
70+
cardTokenizationNetworkDataMapper = CardTokenizationNetworkDataMapper(),
71+
validateTokenizationDataUseCase = ValidateTokenizationDataUseCase(
72+
CardValidatorFactory.createInternal(),
73+
AddressValidator(),
74+
PhoneValidator(),
75+
AddressToAddressValidationRequestDataMapper(),
76+
),
77+
validateCVVTokenizationDataUseCase = ValidateCVVTokenizationDataUseCase(
78+
CVVComponentValidatorFactory.create(),
79+
),
80+
logger = TokenizationEventLogger(EventLoggerProvider.provide()),
81+
publicKey = publicKey,
82+
cvvTokenizationNetworkDataMapper = CVVTokenizationNetworkDataMapper(),
83+
riskSdkUseCase = RiskSdkUseCase(
84+
environment,
85+
context,
86+
publicKey,
87+
riskSDKFramesOptions,
88+
RiskInstanceProvider,
89+
),
90+
)
9391

9492
private fun provideNetworkApiClient(
9593
publicKey: String,

checkout/src/main/java/com/checkout/base/util/CommonConstants.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,8 @@ internal const val ZIP_LENGTH = 50
1414
*/
1515
internal const val PHONE_MIN_LENGTH = 6
1616
internal const val PHONE_MAX_LENGTH = 25
17+
18+
/**
19+
* Constants for environments
20+
*/
21+
internal const val HTTPS_PROTOCOL: String = "https://"

checkout/src/main/java/com/checkout/base/util/EnvironmentConstants.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@ package com.checkout.base.util
33
internal object EnvironmentConstants {
44
internal const val SANDBOX_SERVER_URL = "https://api.sandbox.checkout.com/tokens"
55
internal const val PRODUCTION_SERVER_URL = "https://api.checkout.com/tokens"
6+
internal const val PRODUCTION_LOGGING = "production"
7+
internal const val SANDBOX_LOGGING = "sandbox"
68
}
Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
11
package com.checkout.logging.utils
22

33
import com.checkout.base.model.Environment
4+
import com.checkout.base.util.EnvironmentConstants.PRODUCTION_LOGGING
45
import com.checkout.base.util.EnvironmentConstants.PRODUCTION_SERVER_URL
6+
import com.checkout.base.util.EnvironmentConstants.SANDBOX_LOGGING
57
import com.checkout.base.util.EnvironmentConstants.SANDBOX_SERVER_URL
8+
import com.checkout.base.util.HTTPS_PROTOCOL
69

710
internal fun Environment.toBaseUrl(baseUrlPrefix: String? = null) = when (this) {
8-
Environment.PRODUCTION -> baseUrlPrefix?.baseUrlPrefixValidator()?.let {
9-
"https://$baseUrlPrefix.api.checkout.com/tokens"
10-
} ?: PRODUCTION_SERVER_URL
11-
Environment.SANDBOX -> baseUrlPrefix?.baseUrlPrefixValidator()?.let {
12-
"https://$baseUrlPrefix.api.sandbox.checkout.com/tokens"
13-
} ?: SANDBOX_SERVER_URL
11+
Environment.PRODUCTION -> PRODUCTION_SERVER_URL.applyPrefix(baseUrlPrefix)
12+
Environment.SANDBOX -> SANDBOX_SERVER_URL.applyPrefix(baseUrlPrefix)
1413
}
1514
internal fun Environment.toLoggingEnvironment() = when (this) {
1615
Environment.PRODUCTION -> com.checkout.eventlogger.Environment.PRODUCTION
1716
Environment.SANDBOX -> com.checkout.eventlogger.Environment.SANDBOX
1817
}
1918

2019
internal fun Environment.toLoggingName() = when (this) {
21-
Environment.PRODUCTION ->
22-
"production"
23-
Environment.SANDBOX ->
24-
"sandbox"
20+
Environment.PRODUCTION -> PRODUCTION_LOGGING
21+
Environment.SANDBOX -> SANDBOX_LOGGING
22+
}
23+
24+
private fun String.applyPrefix(prefix: String?): String {
25+
val validatedPrefix = prefix?.baseUrlPrefixValidator() ?: return this
26+
return this.replace(HTTPS_PROTOCOL, "$HTTPS_PROTOCOL$validatedPrefix.")
2527
}
2628

2729
private fun String?.baseUrlPrefixValidator() = this
28-
?.takeIf {
29-
prefix ->
30-
prefix.all { char -> char.isLetterOrDigit() } && prefix.isNotEmpty()
30+
?.takeIf { prefix ->
31+
prefix.all { char -> char in 'a'..'z' || char in 'A'..'Z' || char in '0'..'9' } && prefix.isNotEmpty()
3132
}

example_app_frames/src/main/java/com/checkout/example/frames/ui/screen/HomeScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import androidx.compose.ui.unit.dp
3636
import androidx.navigation.NavController
3737
import com.checkout.CheckoutApiServiceFactory
3838
import com.checkout.base.model.Environment
39+
import com.checkout.example.frames.BuildConfig
3940
import com.checkout.example.frames.R
4041
import com.checkout.example.frames.navigation.Screen
4142
import com.checkout.example.frames.ui.component.ButtonComponent
@@ -221,7 +222,7 @@ fun invokeCheckoutSDKToGenerateTokenForGooglePay(context: Context) {
221222
* Creating instance of CheckoutApiClient
222223
*/
223224
val checkoutApiClient = CheckoutApiServiceFactory.create(
224-
"pk_test_6e40a700-d563-43cd-89d0-f9bb17d35e73",
225+
BuildConfig.SANDBOX_PUBLIC_KEY,
225226
Environment.SANDBOX,
226227
context,
227228
REGIONAL_SUBDOMAIN,

0 commit comments

Comments
 (0)