Adding parameter and removing unnecessary base64
svn: r11361
This commit is contained in:
parent
5b0da0948a
commit
afe17e511c
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue
Block a user