This is an automated email from the ASF dual-hosted git repository.
pjfanning pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pekko-grpc.git
The following commit(s) were added to refs/heads/main by this push:
new 10ff8fcf csvparser util for headers (#852)
10ff8fcf is described below
commit 10ff8fcf4ad54791df5d97650a3d80a41bdacaa4
Author: PJ Fanning <[email protected]>
AuthorDate: Thu Aug 20 14:27:59 2026 +0100
csvparser util for headers (#852)
* csvparser util for headers
* Update headers.scala
---
.../apache/pekko/grpc/scaladsl/headers/headers.scala | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/headers/headers.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/headers/headers.scala
index a70437ae..f502ea1a 100644
---
a/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/headers/headers.scala
+++
b/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/headers/headers.scala
@@ -24,6 +24,14 @@ import scala.collection.immutable
import scala.annotation.nowarn
import scala.util.Try
+/**
+ * Simple CSV parser for HTTP header values. Not meant to be a full CSV parser,
+ * just enough to parse the headers we care about.
+ */
+private object SimpleCSVParser {
+ def parse(value: String): Array[String] = value.split(',').map(_.trim)
+}
+
@ApiMayChange
final class `Message-Accept-Encoding`(override val value: String)
extends ModeledCustomHeader[`Message-Accept-Encoding`] {
@@ -32,7 +40,7 @@ final class `Message-Accept-Encoding`(override val value:
String)
@nowarn("msg=the inferred type changes")
override val companion = `Message-Accept-Encoding`
- lazy val values: Array[String] = value.split(',')
+ lazy val values: Array[String] = SimpleCSVParser.parse(value)
}
@ApiMayChange
@@ -44,7 +52,9 @@ object `Message-Accept-Encoding` extends
ModeledCustomHeaderCompanion[`Message-A
Try(new `Message-Accept-Encoding`(value))
def findIn(headers: Iterable[jm.HttpHeader]): Array[String] =
- headers.collectFirst { case h if h.is(name) =>
h.value().split(',').map(_.trim) }.getOrElse(Array.empty)
+ headers.collectFirst {
+ case h if h.is(name) => SimpleCSVParser.parse(h.value())
+ }.getOrElse(Array.empty)
/** Java API */
def findIn(headers: java.lang.Iterable[jm.HttpHeader]): Array[String] = {
@@ -136,10 +146,11 @@ private[grpc] object `Trailer` extends
ModeledCustomHeaderCompanion[`Trailer`] {
override val lowercaseName: String = super.lowercaseName
- override def parse(value: String): Try[`Trailer`] =
Try(`Trailer`(ArraySeq.unsafeWrapArray(value.split(','))))
+ override def parse(value: String): Try[`Trailer`] =
+ Try(`Trailer`(ArraySeq.unsafeWrapArray(SimpleCSVParser.parse(value))))
def findIn(headers: immutable.Seq[HttpHeader]):
Option[immutable.Seq[String]] =
headers.collectFirst {
- case header if header.is(name) =>
ArraySeq.unsafeWrapArray(header.value().split(',').map(_.trim))
+ case header if header.is(name) =>
ArraySeq.unsafeWrapArray(SimpleCSVParser.parse(header.value()))
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]