Skip to content

Commit a3e6fa4

Browse files
Minor improvements
1 parent 9406e88 commit a3e6fa4

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

libraries/common/io/requests.effekt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ namespace jsWeb {
316316
}
317317

318318
namespace plain {
319+
/// Encode a request into its byte representation, will always use HTTP/1.1
319320
def constructRequest{ body: => Unit / RequestBuilder }: Unit / emit[Byte] = {
320321
def crlf() = {
321322
do emit('\r'.toInt.toByte)
@@ -452,6 +453,8 @@ namespace plain {
452453
length
453454
}
454455

456+
/// Parse a HTTP response from its byte representation.
457+
/// Does not decode transfer encodings, will return everything as the body until eof (unless stopped first)
455458
def parseResponse[R]{ body: {ResponseReader} => R }: R / { read[Byte], Exception[WrongFormat] } = {
456459
with decodeUTF8
457460
with returning::scanner[Char, R]
@@ -476,16 +479,18 @@ namespace plain {
476479
readIf('\n')
477480
}
478481

482+
def getHeader(key: String) = {
483+
var r = None()
484+
headers.foreach {
485+
case (k, v) and k == key => r = Some(v)
486+
case _ => ()
487+
}
488+
r
489+
}
490+
479491
try body{res} with res: ResponseReader {
480492
def status() = resume(statusCode)
481-
def getHeader(key) = { // TODO should be case-insensitive
482-
var r = None()
483-
headers.foreach {
484-
case (k, v) and k == key => r = Some(v)
485-
case _ => ()
486-
}
487-
resume(r)
488-
}
493+
def getHeader(key) = resume(getHeader(key))
489494
def body() = resume { exhaustively{ do emit(do read[Byte]()) } }
490495
}
491496
}

0 commit comments

Comments
 (0)