dont save uploaded variables with no name, swap outputs

db4
Doug Coleman 2009-01-20 15:45:00 -06:00
parent 90a63acf40
commit c7df780c33
2 changed files with 19 additions and 11 deletions

View File

@ -20,10 +20,11 @@ IN: mime.multipart.tests
[ t ] [ [ t ] [
mime-test-stream [ upload-separator parse-multipart ] with-input-stream mime-test-stream [ upload-separator parse-multipart ] with-input-stream
drop "\"up.txt\"" swap key? nip "\"up.txt\"" swap key?
] unit-test ] unit-test
[ t ] [ [ t ] [
mime-test-stream [ upload-separator parse-multipart ] with-input-stream mime-test-stream [ upload-separator parse-multipart ] with-input-stream
nip "\"text1\"" swap key? drop "\"text1\"" swap key?
] unit-test ] unit-test

View File

@ -33,8 +33,8 @@ ERROR: bad-header bytes ;
: mime-write ( sequence -- ) : mime-write ( sequence -- )
>byte-array write ; >byte-array write ;
: parse-headers ( string -- sequence ) : parse-headers ( string -- hashtable )
string-lines harvest [ parse-header-line ] map ; string-lines harvest [ parse-header-line ] map >hashtable ;
ERROR: end-of-stream multipart ; ERROR: end-of-stream multipart ;
@ -73,11 +73,14 @@ ERROR: end-of-stream multipart ;
"\r\n\r\n" dump-string dup "--\r" = [ "\r\n\r\n" dump-string dup "--\r" = [
drop drop
] [ ] [
parse-headers >hashtable >>header parse-headers >>header
] if ; ] if ;
: empty-name? ( string -- ? )
{ "''" "\"\"" "" f } member? ;
: save-uploaded-file ( multipart -- ) : save-uploaded-file ( multipart -- )
dup filename>> empty? [ dup filename>> empty-name? [
drop drop
] [ ] [
[ [ header>> ] [ filename>> ] [ temp-file>> ] tri mime-file boa ] [ [ header>> ] [ filename>> ] [ temp-file>> ] tri mime-file boa ]
@ -86,9 +89,13 @@ ERROR: end-of-stream multipart ;
] if ; ] if ;
: save-form-variable ( multipart -- ) : save-form-variable ( multipart -- )
dup name>> empty-name? [
drop
] [
[ [ header>> ] [ name>> ] [ name-content>> ] tri mime-variable boa ] [ [ header>> ] [ name>> ] [ name-content>> ] tri mime-variable boa ]
[ name>> ] [ name>> ]
[ form-variables>> set-at ] tri ; [ form-variables>> set-at ] tri
] if ;
: dump-mime-file ( multipart filename -- multipart ) : dump-mime-file ( multipart filename -- multipart )
binary <file-writer> [ binary <file-writer> [
@ -145,6 +152,6 @@ ERROR: no-content-disposition multipart ;
read-header read-header
dup end-of-stream?>> [ process-header parse-multipart-loop ] unless ; dup end-of-stream?>> [ process-header parse-multipart-loop ] unless ;
: parse-multipart ( sep -- uploaded-files form-variables ) : parse-multipart ( separator -- form-variables uploaded-files )
<multipart> parse-beginning parse-multipart-loop <multipart> parse-beginning parse-multipart-loop
[ uploaded-files>> ] [ form-variables>> ] bi ; [ form-variables>> ] [ uploaded-files>> ] bi ;