22(provide marshal-request parse-request)
33(define (parse-request-line rl )
44 (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 ) )))
66)
77(define list-index
88 (lambda (e lst )
2929 (match (length lst)
3030 [0 " " ]
3131 [1 (car lst)]
32- [_
32+ [ _
3333 (string-append (string-append (car lst) delim) (arr-to-string (cdr lst) delim))]
3434 )
3535)
4646 (let ([req-split (string-split request " \n " #:trim? #f #:repeat? #f )])
4747 (let ([req-line (parse-request-line (car req-split))])
4848 (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 )])
5151 (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+ ))))))
6057)
6158
6259(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 )
6661 (string-append " "
67- (string-append (number->string (string-length (list-ref request 6 )))
62+ (string-append (number->string (string-length (list-ref request 3 )))
6863 (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 )))
7165 (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+
7468)
0 commit comments