Adding parameter and removing unnecessary base64

svn: r11361
This commit is contained in:
Jay McCarthy 2008-08-20 21:10:24 +00:00
parent 5b0da0948a
commit afe17e511c

View File

@ -8,20 +8,25 @@
"../private/mod-map.ss")
(provide/contract
[max-url-length (parameter/c number?)]
[url-too-big? (url? . -> . boolean?)]
[stuff-url (serializable? url? . -> . url?)]
[stuffed-url? (url? . -> . boolean?)]
[unstuff-url (url? . -> . serializable?)])
; http://www.boutell.com/newfaq/misc/urllength.html
(define max-url-length
(make-parameter 2048))
(define (url-too-big? uri)
((string-length (url->string uri)) . > . 1024))
((string-length (url->string uri)) . > . (max-url-length)))
;; stuff-url: serial url -> url
;; encode in the url
(require net/base64)
(define (stuff-url c uri)
(let* ([cb (c->bytes c)]
[cb-uri (insert-param uri "c" (bytes->string/utf-8 (base64-encode cb)))])
[cb-uri (insert-param uri "c" (bytes->string/utf-8 cb))])
(if (url-too-big? cb-uri)
(let* ([cc (gzip/bytes cb)]
[cc-uri (insert-param uri "cc" (bytes->string/utf-8 (base64-encode cc)))])
@ -50,7 +55,7 @@
(define (unstuff-url uri)
(cond
[(extract-param uri "c")
=> (compose bytes->c base64-decode string->bytes/utf-8)]
=> (compose bytes->c string->bytes/utf-8)]
[(extract-param uri "cc")
=> (compose bytes->c gunzip/bytes base64-decode string->bytes/utf-8)]
[(extract-param uri "hc")