Skip to content

Commit 0e430f1

Browse files
chore: Publish v5.0.0 (#139)
1 parent ef3531f commit 0e430f1

File tree

70 files changed

+22235
-1448
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+22235
-1448
lines changed

code/src/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Welcome to the rapid-sdk SDK!
2+
3+
## Usage
4+
```xml
5+
<dependency>
6+
<groupId>com.expediagroup</groupId>
7+
<artifactId>rapid-sdk</artifactId>
8+
<version>5.0.0</version>
9+
</dependency>
10+
```
11+
12+
## License
13+
14+
This project is licensed under the Apache License v2.0 - see the [LICENSE](LICENSE) for details.

code/src/main/kotlin/com/expediagroup/sdk/core/client/Client.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,20 @@ import io.ktor.client.engine.HttpClientEngine
5050
import io.ktor.client.engine.okhttp.OkHttp
5151
import io.ktor.client.statement.HttpResponse
5252
import io.ktor.client.statement.request
53+
import okhttp3.Dispatcher
54+
55+
// Create a Dispatcher with limits
56+
val dispatcher =
57+
Dispatcher().apply {
58+
maxRequests = 10000 // Maximum number of concurrent requests
59+
maxRequestsPerHost = 1000
60+
}
5361

5462
val DEFAULT_HTTP_CLIENT_ENGINE: HttpClientEngine =
5563
OkHttp.create {
5664
config {
5765
eventListener(OkHttpEventListener)
66+
dispatcher(dispatcher)
5867
}
5968
}
6069

code/src/main/kotlin/com/expediagroup/sdk/core/client/Environment.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import io.ktor.client.request.HttpRequestBuilder
2222
import io.ktor.http.HttpHeaders
2323

2424
interface EnvironmentProvider {
25-
fun HttpRequestBuilder.appendHeaders(transactionId: TransactionId = TransactionId())
25+
fun HttpRequestBuilder.appendHeaders(extraHeaders: Map<String, String> = mapOf(HeaderKey.TRANSACTION_ID to TransactionId().dequeue().toString()))
2626
}
2727

2828
class DefaultEnvironmentProvider(
@@ -35,11 +35,11 @@ class DefaultEnvironmentProvider(
3535
private val userAgent = "expediagroup-sdk-java-$namespace/${properties["sdk-version"]!!} (Java $javaVersion; $operatingSystemName $operatingSystemVersion)"
3636

3737
@Suppress("MemberVisibilityCanBePrivate")
38-
override fun HttpRequestBuilder.appendHeaders(transactionId: TransactionId) {
38+
override fun HttpRequestBuilder.appendHeaders(extraHeaders: Map<String, String>) {
3939
with(headers) {
4040
append(HttpHeaders.UserAgent, userAgent)
4141
append(HeaderKey.X_SDK_TITLE, properties["sdk-title"]!!)
42-
append(HeaderKey.TRANSACTION_ID, transactionId.dequeue().toString())
42+
extraHeaders.forEach { (key, value) -> append(key, value) }
4343
}
4444
}
4545
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright (C) 2022 Expedia, Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.expediagroup.sdk.core.plugin.logging
17+
18+
import com.ebay.ejmask.core.BaseFilter
19+
20+
internal class ExpediaGroupJsonFieldFilter(maskedFields: Array<String>) : BaseFilter(
21+
ExpediaGroupJsonFieldPatternBuilder::class.java,
22+
*maskedFields
23+
)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* Copyright (C) 2022 Expedia, Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.expediagroup.sdk.core.plugin.logging
17+
18+
import com.ebay.ejmask.extenstion.builder.json.JsonFieldPatternBuilder
19+
import com.expediagroup.sdk.core.constant.LoggingMessage.OMITTED
20+
21+
internal class ExpediaGroupJsonFieldPatternBuilder : JsonFieldPatternBuilder() {
22+
override fun buildReplacement(
23+
visibleCharacters: Int,
24+
vararg fieldNames: String?
25+
): String = "\"$1$2$OMITTED\""
26+
}

code/src/main/kotlin/com/expediagroup/sdk/core/plugin/logging/ExpediaGroupLogger.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import com.expediagroup.sdk.core.constant.LoggingMessage.LOGGING_PREFIX
2121
import org.slf4j.Logger
2222

2323
internal class ExpediaGroupLogger(private val logger: Logger, private val client: Client? = null) : Logger by logger {
24+
private val mask = LogMasker(getMaskedBodyFieldFilters())
25+
2426
override fun info(msg: String) {
2527
if (logger.isInfoEnabled) {
2628
logger.info(decorate(msg))
@@ -39,7 +41,12 @@ internal class ExpediaGroupLogger(private val logger: Logger, private val client
3941
}
4042
}
4143

42-
private fun decorate(msg: String): String = "$LOGGING_PREFIX ${mask(msg, getMaskedBodyFields())}"
44+
private fun decorate(msg: String): String = "$LOGGING_PREFIX ${mask(msg)}"
4345

4446
private fun getMaskedBodyFields(): Set<String> = client?.getLoggingMaskedFieldsProvider()?.getMaskedBodyFields() ?: LogMaskingFields.DEFAULT_MASKED_BODY_FIELDS
47+
48+
private fun getMaskedBodyFieldFilters(): Iterable<ExpediaGroupJsonFieldFilter> =
49+
listOf(
50+
ExpediaGroupJsonFieldFilter(getMaskedBodyFields().toTypedArray())
51+
)
4552
}

code/src/main/kotlin/com/expediagroup/sdk/core/plugin/logging/LogMasker.kt

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,18 @@
1515
*/
1616
package com.expediagroup.sdk.core.plugin.logging
1717

18-
import com.expediagroup.sdk.core.constant.LogMaskingRegex.NUMBER_FIELD_REGEX
19-
import com.expediagroup.sdk.core.constant.LoggingMessage.OMITTED
20-
import com.expediagroup.sdk.core.constant.provider.LogMaskingRegexProvider.getMaskedFieldsRegex
18+
import com.ebay.ejmask.core.BaseFilter
19+
import com.ebay.ejmask.core.EJMask
20+
import com.ebay.ejmask.core.EJMaskInitializer
21+
import com.ebay.ejmask.core.util.LoggerUtil
2122

22-
internal fun mask(
23-
message: String,
24-
maskedBodyFields: Set<String>
25-
): String = masks.fold(message) { acc, mask -> mask.mask(acc, maskedBodyFields) }
23+
internal class LogMasker(
24+
filters: Iterable<BaseFilter>
25+
) : (String) -> String {
26+
init {
27+
LoggerUtil.register { _, _, _ -> /* disable logging */ }
28+
filters.forEach { EJMaskInitializer.addFilter(it) }
29+
}
2630

27-
internal fun interface Mask {
28-
fun getRegex(maskedBodyFields: Set<String>): Regex
29-
30-
fun mask(
31-
string: String,
32-
maskedBodyFields: Set<String>
33-
): String = string.replace(this.getRegex(maskedBodyFields)) { maskSubstring(it.value) }
34-
35-
fun maskSubstring(string: String) = OMITTED
31+
override fun invoke(message: String): String = EJMask.mask(message)
3632
}
37-
38-
internal val masks: List<Mask> =
39-
listOf(
40-
Mask(::getMaskedFieldsRegex),
41-
Mask { NUMBER_FIELD_REGEX }
42-
)

0 commit comments

Comments
 (0)