Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit 936bc6b

Browse files
author
Paulo Silva
committed
fix: status line parsing using RegEx
1 parent 0c09fee commit 936bc6b

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/parser.coffee

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,37 @@ parseRequest = (requestString) ->
55
parsedRequestLine = parseRequestLine lines.shift()
66
request['method'] = parsedRequestLine['method']
77
request['uri'] = parsedRequestLine['uri']
8-
8+
99
#TODO refactor this part to be tested
1010
headerLines = []
1111
while lines.length > 0
1212
line = lines.shift()
1313
break if line == ""
1414
headerLines.push line
15-
15+
1616
request['headers'] = parseHeaders headerLines
1717
request['body'] = lines.join '\r\n'
18-
18+
1919
request
2020

2121
parseResponse = (responseString) ->
2222
response = {}
2323
lines = responseString.split('\r\n')
24-
24+
2525
parsedStatusLine = parseStatusLine lines.shift()
2626
response['statusCode'] = parsedStatusLine['statusCode']
2727
response['statusMessage'] = parsedStatusLine['statusMessage']
28-
28+
2929
#TODO refactor this part to be tested
3030
headerLines = []
3131
while lines.length > 0
3232
line = lines.shift()
3333
break if line == ""
3434
headerLines.push line
35-
35+
3636
response['headers'] = parseHeaders headerLines
3737
response['body'] = lines.join '\r\n'
38-
38+
3939
response
4040

4141
parseHeaders = (headerLines) ->
@@ -48,15 +48,16 @@ parseHeaders = (headerLines) ->
4848
headers
4949

5050
parseStatusLine = (statusLine) ->
51-
parts = statusLine.split ' '
51+
parts = statusLine.match /^(.+) ([0-9]{3}) (.*)$/
5252
parsed = {}
5353

54-
parsed['protocol'] = parts[0]
55-
parsed['statusCode'] = parts[1]
56-
parsed['statusMessage'] = parts[2]
54+
if parts isnt null
55+
parsed['protocol'] = parts[1]
56+
parsed['statusCode'] = parts[2]
57+
parsed['statusMessage'] = parts[3]
5758

5859
parsed
59-
60+
6061
parseRequestLine = (requestLineString) ->
6162
parts = requestLineString.split(' ')
6263
parsed = {}
@@ -71,4 +72,4 @@ module.exports.parseRequest = parseRequest
7172
module.exports.parseResponse = parseResponse
7273
module.exports.parseRequestLine = parseRequestLine
7374
module.exports.parseStatusLine = parseStatusLine
74-
module.exports.parseHeaders = parseHeaders
75+
module.exports.parseHeaders = parseHeaders

0 commit comments

Comments
 (0)