aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/logging/Headers.kt
blob: a0bbceea1455e3750c78f61bab0dc21a8c9570a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@file:JvmName("Headers")

package org.onap.vid.logging

import org.onap.portalsdk.core.util.SystemProperties
import org.onap.vid.logging.RequestIdHeader.*
import javax.servlet.http.HttpServletRequest

enum class RequestIdHeader(val headerName: String) {

    ONAP_ID("X-ONAP-RequestID"),
    REQUEST_ID("X-RequestID"),
    TRANSACTION_ID("X-TransactionID"),
    ECOMP_ID(SystemProperties.ECOMP_REQUEST_ID),
    ;

    fun stringEquals(header: String) = headerName.equals(header, true)

    fun getHeaderValue(request: HttpServletRequest): String? = request.getHeader(headerName)
}

fun prioritizedRequestIdHeaders() = listOf(
        ONAP_ID,
        REQUEST_ID,
        TRANSACTION_ID,
        ECOMP_ID
)

fun highestPriorityHeader(httpRequest: HttpServletRequest): RequestIdHeader? {
    val headers = httpRequest.headerNames.asSequence().toSet()
    return prioritizedRequestIdHeaders().firstOrNull {
        requestIdHeader -> headers.any { requestIdHeader.stringEquals(it) }
    }
}