File tree Expand file tree Collapse file tree 1 file changed +13
-8
lines changed Expand file tree Collapse file tree 1 file changed +13
-8
lines changed Original file line number Diff line number Diff line change @@ -316,6 +316,7 @@ namespace jsWeb {
316
316
}
317
317
318
318
namespace plain {
319
+ /// Encode a request into its byte representation, will always use HTTP/1.1
319
320
def constructRequest{ body: => Unit / RequestBuilder }: Unit / emit[Byte] = {
320
321
def crlf() = {
321
322
do emit('\r'.toInt.toByte)
@@ -452,6 +453,8 @@ namespace plain {
452
453
length
453
454
}
454
455
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)
455
458
def parseResponse[R]{ body: {ResponseReader} => R }: R / { read[Byte], Exception[WrongFormat] } = {
456
459
with decodeUTF8
457
460
with returning::scanner[Char, R]
@@ -476,16 +479,18 @@ namespace plain {
476
479
readIf('\n')
477
480
}
478
481
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
+
479
491
try body{res} with res: ResponseReader {
480
492
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))
489
494
def body() = resume { exhaustively{ do emit(do read[Byte]()) } }
490
495
}
491
496
}
You can’t perform that action at this time.
0 commit comments