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