Skip to content

Commit

Permalink
add H2HeaderInjector
Browse files Browse the repository at this point in the history
Signed-off-by: Dennis Adjei-Baah <[email protected]>
  • Loading branch information
Dennis Adjei-Baah committed May 23, 2019
1 parent bee6dbb commit 44cf2f1
Showing 1 changed file with 27 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.twitter.finagle.buoyant.h2

import com.twitter.finagle
import com.twitter.finagle._
import com.twitter.util.Future

object H2HeaderInjector {
def module(headerMap: Map[String, String]): Stackable[ServiceFactory[Request, Response]] = {
new finagle.Stack.Module0[ServiceFactory[Request, Response]] {
override def make(next: ServiceFactory[Request, Response]): ServiceFactory[Request, Response] =
new HeaderInjector(headerMap).andThen(next)

override def role: Stack.Role = Stack.Role("H2HeaderInjector")
override def description: String = "Add arbitrary headers to H2 requests"
}
}
}

class HeaderInjector(injectHeaders: Map[String, String]) extends SimpleFilter[Request, Response] {
override def apply(request: Request, service: Service[Request, Response]): Future[Response] = {
val req = request.dup()
injectHeaders.foreach { kvPair =>
req.headers.add(kvPair._1, kvPair._2); ()
}
service(req)
}
}

0 comments on commit 44cf2f1

Please sign in to comment.