aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandr <ognelisar@gmail.com>2018-04-10 11:26:44 +0700
committerGitHub <noreply@github.com>2018-04-10 11:26:44 +0700
commit0231e921d110fe27ba8d51809620e7962a9eb867 (patch)
tree3533ce548006a836e947e77aa9890d2da666c2fa
parent1f49149ba768ac86263d11cb18e7a365b0bb0210 (diff)
parentd396c3b6b510c3ed77c17c64df3e58af4146b9a4 (diff)
downloaddriver-core-0231e921d110fe27ba8d51809620e7962a9eb867.tar.gz
driver-core-0231e921d110fe27ba8d51809620e7962a9eb867.tar.bz2
driver-core-0231e921d110fe27ba8d51809620e7962a9eb867.zip
Merge pull request #145 from drivergroup/TM-1431v1.8.17
TM-1431 Fingerprints from PDSUI-2346 should be extracted to the context and saved in the *_history tables
-rw-r--r--src/main/scala/xyz/driver/core/rest/package.scala11
-rw-r--r--src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala7
2 files changed, 14 insertions, 4 deletions
diff --git a/src/main/scala/xyz/driver/core/rest/package.scala b/src/main/scala/xyz/driver/core/rest/package.scala
index e3c0c40..385a313 100644
--- a/src/main/scala/xyz/driver/core/rest/package.scala
+++ b/src/main/scala/xyz/driver/core/rest/package.scala
@@ -66,6 +66,7 @@ object `package` {
val AuthenticationTokenHeader: String = "Authorization"
val PermissionsTokenHeader: String = "Permissions"
val AuthenticationHeaderPrefix: String = "Bearer"
+ val ClientFingerprintHeader: String = "X-Client-Fingerprint"
val TrackingIdHeader: String = "X-Trace"
val StacktraceHeader: String = "X-Stacktrace"
val OriginatingIpHeader: String = "X-Forwarded-For"
@@ -90,12 +91,12 @@ object `package` {
"Content-Length",
"Accept",
"X-Trace",
- "X-Client-Fingerprint",
"Access-Control-Allow-Methods",
"Access-Control-Allow-Origin",
"Access-Control-Allow-Headers",
"Server",
"Date",
+ ContextHeaders.ClientFingerprintHeader,
ContextHeaders.TrackingIdHeader,
ContextHeaders.TraceHeaderName,
ContextHeaders.SpanHeaderName,
@@ -155,6 +156,12 @@ object `package` {
.fold(java.util.UUID.randomUUID.toString)(_.value())
}
+ def extractFingerprintHash(request: HttpRequest): Option[String] = {
+ request.headers
+ .find(_.name === ContextHeaders.ClientFingerprintHeader)
+ .map(_.value())
+ }
+
def extractOriginatingIP(request: HttpRequest, remoteAddress: RemoteAddress): Option[InetAddress] = {
request.headers
.find(_.name === ContextHeaders.OriginatingIpHeader)
@@ -170,7 +177,7 @@ object `package` {
h.name === ContextHeaders.AuthenticationTokenHeader || h.name === ContextHeaders.TrackingIdHeader ||
h.name === ContextHeaders.PermissionsTokenHeader || h.name === ContextHeaders.StacktraceHeader ||
h.name === ContextHeaders.TraceHeaderName || h.name === ContextHeaders.SpanHeaderName ||
- h.name === ContextHeaders.OriginatingIpHeader
+ h.name === ContextHeaders.OriginatingIpHeader || h.name === ContextHeaders.ClientFingerprintHeader
} map { header =>
if (header.name === ContextHeaders.AuthenticationTokenHeader) {
header.name -> header.value.stripPrefix(ContextHeaders.AuthenticationHeaderPrefix).trim
diff --git a/src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala b/src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala
index 5282956..775106e 100644
--- a/src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala
+++ b/src/main/scala/xyz/driver/core/rest/serviceRequestContext.scala
@@ -34,11 +34,14 @@ class ServiceRequestContext(
)
override def hashCode(): Int =
- Seq[Any](trackingId, originatingIp, contextHeaders).foldLeft(31)((result, obj) => 31 * result + obj.hashCode())
+ Seq[Any](trackingId, originatingIp, contextHeaders)
+ .foldLeft(31)((result, obj) => 31 * result + obj.hashCode())
override def equals(obj: Any): Boolean = obj match {
case ctx: ServiceRequestContext =>
- trackingId === ctx.trackingId && originatingIp == originatingIp && contextHeaders === ctx.contextHeaders
+ trackingId === ctx.trackingId &&
+ originatingIp == originatingIp &&
+ contextHeaders === ctx.contextHeaders
case _ => false
}