2
2
(provide marshal-request parse-request)
3
3
(define (parse-request-line rl )
4
4
(let ([arr (string-split rl " " )])
5
- ( append ( append ( reverse ( list-tail ( reverse arr) (- ( length arr) 4 ))) (list (explode (string->list (list-ref arr 4 )) #\, ))) (list-tail arr 5 )))
5
+ ( list ( list-ref arr 0 ) (list-ref arr 1 ) (list-ref arr 2 ) (string->number (list-ref arr 3 )) ( string->number (list-ref arr 4 ) )))
6
6
)
7
7
(define list-index
8
8
(lambda (e lst )
29
29
(match (length lst)
30
30
[0 " " ]
31
31
[1 (car lst)]
32
- [_
32
+ [ _
33
33
(string-append (string-append (car lst) delim) (arr-to-string (cdr lst) delim))]
34
34
)
35
35
)
46
46
(let ([req-split (string-split request " \n " #:trim? #f #:repeat? #f )])
47
47
(let ([req-line (parse-request-line (car req-split))])
48
48
(let ([payload (if (equal? (length req-split) 1 ) " " (arr-to-string (cdr req-split) " \n " )) ])
49
- (let ([body-len (string->number ( list-ref req-line 6 ) )])
50
- (let ([header-len (string->number ( list-ref req-line 5 ) )])
49
+ (let ([body-len (list-ref req-line 4 )])
50
+ (let ([header-len (list-ref req-line 3 )])
51
51
(append
52
- (reverse
53
- (if (equal? 8 (length req-line)) (cdddr (reverse req-line)) (cddr (reverse req-line))))
54
- (list
55
- (and
56
- (equal? 8 (length req-line))
57
- (equal? " H" (list-ref req-line 7 )))
58
- (substring payload 0 header-len)
59
- (substring payload header-len (+ header-len body-len)))))))))
52
+ (reverse (cddr (reverse req-line)))
53
+ (list
54
+ (substring payload 0 header-len)
55
+ (substring payload header-len (+ header-len body-len)))
56
+ ))))))
60
57
)
61
58
62
59
(define (marshal-request request )
63
- (string-append (arr-merge request " " 0 3 )
64
- (string-append " "
65
- (string-append (arr-to-string (list-ref request 4 ) " ," )
60
+ (string-append (arr-merge request " " 0 2 )
66
61
(string-append " "
67
- (string-append (number->string (string-length (list-ref request 6 )))
62
+ (string-append (number->string (string-length (list-ref request 3 )))
68
63
(string-append " "
69
- (string-append (number->string (string-length (list-ref request 7 )))
70
- (string-append (if (list-ref request 5 ) " H" " " )
64
+ (string-append (number->string (string-length (list-ref request 4 )))
71
65
(string-append " \n "
72
- (string-append (list-ref request 6 ) (list-ref request 7 )) )))))))))
73
- )
66
+ (string-append (list-ref request 3 ) (list-ref request 4 )))))))))
67
+
74
68
)
0 commit comments