1
1
(module ewp racket
2
+
2
3
(provide marshal-request parse-request)
3
4
(define (parse-request-line rl)
4
5
(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 )))
6
+ (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
7
)
7
8
(define list-index
8
9
(lambda (e lst)
46
47
(let ([req-split (string-split request "\n " #:trim? #f #:repeat? #f )])
47
48
(let ([req-line (parse-request-line (car req-split))])
48
49
(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 ) )])
50
+ (let ([body-len (list-ref req-line 4 )])
51
+ (let ([header-len (list-ref req-line 3 )])
51
52
(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)))))))))
53
+ (reverse (cddr (reverse req-line)))
54
+ (list
55
+ (substring payload 0 header-len)
56
+ (substring payload header-len (+ header-len body-len)))
57
+ ))))))
60
58
)
61
59
62
60
(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 ) ", " )
61
+ (string-append (arr-merge request " " 0 2 )
66
62
(string-append " "
67
- (string-append (number->string (string-length (list-ref request 6 )))
63
+ (string-append (number->string (string-length (list-ref request 3 )))
68
64
(string-append " "
69
- (string-append (number->string (string-length (list-ref request 7 )))
70
- (string-append (if (list-ref request 5 ) " H " "" )
65
+ (string-append (number->string (string-length (list-ref request 4 )))
71
66
(string-append "\n "
72
- (string-append (list-ref request 6 ) (list-ref request 7 )) )))))))))
73
- )
67
+ (string-append (list-ref request 3 ) (list-ref request 4 )))))))))
68
+
74
69
)
75
70
;(parse-request "EWP 0.2 PING 2 3\n55555")
76
71
;(marshal-request (parse-request "EWP 0.2 PING 2 3\n55555"))
0 commit comments