From 63ef436ea15dd93343a2040ffb7c3bb2c9681b87 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Tue, 5 Sep 2017 17:11:59 +0100 Subject: mime: implement encoders. curl_mime_encoder() is operational and documented. curl tool -F option is extended with ";encoder=". curl tool --libcurl option generates calls to curl_mime_encoder(). New encoder tests 648 & 649. Test 1404 extended with an encoder specification. --- tests/data/Makefile.inc | 2 +- tests/data/test1404 | 8 ++++-- tests/data/test648 | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/data/test649 | 72 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 153 insertions(+), 4 deletions(-) create mode 100644 tests/data/test648 create mode 100644 tests/data/test649 (limited to 'tests') diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc index 464faeeaf..d7ea5c951 100644 --- a/tests/data/Makefile.inc +++ b/tests/data/Makefile.inc @@ -78,7 +78,7 @@ test608 test609 test610 test611 test612 test613 test614 test615 test616 \ test617 test618 test619 test620 test621 test622 test623 test624 test625 \ test626 test627 test628 test629 test630 test631 test632 test633 test634 \ test635 test636 test637 test638 test639 test640 test641 test642 \ -test643 test644 test645 test646 test647 \ +test643 test644 test645 test646 test647 test648 test649 \ \ test700 test701 test702 test703 test704 test705 test706 test707 test708 \ test709 test710 test711 test712 test713 test714 test715 \ diff --git a/tests/data/test1404 b/tests/data/test1404 index a3ec66ef7..20dc01333 100644 --- a/tests/data/test1404 +++ b/tests/data/test1404 @@ -27,13 +27,13 @@ Connection: close http ---libcurl for HTTP RFC1867-type formposting - -F with three files, one with explicit type +--libcurl for HTTP RFC1867-type formposting - -F with 3 files, one with explicit type & encoder SSL_CERT_FILE= -http://%HOSTIP:%HTTPPORT/we/want/1404 -F name=value -F 'file=@log/test1404.txt,log/test1404.txt;type=magic/content,log/test1404.txt;headers=X-testheader-1: header 1;headers=X-testheader-2: header 2' --libcurl log/test1404.c +http://%HOSTIP:%HTTPPORT/we/want/1404 -F name=value -F 'file=@log/test1404.txt,log/test1404.txt;type=magic/content;encoder=8bit,log/test1404.txt;headers=X-testheader-1: header 1;headers=X-testheader-2: header 2' --libcurl log/test1404.c # We create this file before the command is invoked! @@ -51,7 +51,7 @@ POST /we/want/1404 HTTP/1.1 User-Agent: curl/7.18.2 (i686-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.7a ipv6 zlib/1.1.4 Host: %HOSTIP:%HTTPPORT Accept: */* -Content-Length: 849 +Content-Length: 882 Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763 ------------------------------9ef8d6205763 @@ -70,6 +70,7 @@ dummy data ------------------------------9ef8d6205763 Content-Disposition: attachment; filename="test1404.txt" Content-Type: magic/content +Content-Transfer-Encoding: 8bit dummy data @@ -131,6 +132,7 @@ int main(int argc, char *argv[]) curl_mime_filedata(part2, "log/test1404.txt"); part2 = curl_mime_addpart(mime2); curl_mime_filedata(part2, "log/test1404.txt"); + curl_mime_encoder(part2, "8bit"); curl_mime_type(part2, "magic/content"); part2 = curl_mime_addpart(mime2); curl_mime_filedata(part2, "log/test1404.txt"); diff --git a/tests/data/test648 b/tests/data/test648 new file mode 100644 index 000000000..cd8f02085 --- /dev/null +++ b/tests/data/test648 @@ -0,0 +1,75 @@ + + + +SMTP +MULTIPART + + + +# +# Server-side + + + +# +# Client-side + + +smtp + + +SMTP multipart with transfer content encoders + + +From: different +To: another + +body + + +smtp://%HOSTIP:%SMTPPORT/648 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the e-mail inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/test648.txt;encoder=base64" -H "From: different" -H "To: another" + + +This is an attached file. + +It may contain any type of data and will be encoded in base64 for transfer. + + + +# +# Verify data after the test has been "shot" + + +s/^--------------------------[a-z0-9]*/------------------------------/ +s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/ + + +EHLO 648 +MAIL FROM: +RCPT TO: +DATA +QUIT + + +Content-Type: multipart/mixed; boundary=---------------------------- +Mime-Version: 1.0 +From: different +To: another + +------------------------------ +Content-Transfer-Encoding: quoted-printable +Content-disposition: "inline" + +This is the e-mail inline text with a very long line containing the special= + character =3D and that should be split by encoder. +------------------------------ +Content-Disposition: attachment; filename="test648.txt" +Content-Transfer-Encoding: base64 + +VGhpcyBpcyBhbiBhdHRhY2hlZCBmaWxlLgoKSXQgbWF5IGNvbnRhaW4gYW55IHR5cGUgb2Yg +ZGF0YSBhbmQgd2lsbCBiZSBlbmNvZGVkIGluIGJhc2U2NCBmb3IgdHJhbnNmZXIuCg== +-------------------------------- +. + + + diff --git a/tests/data/test649 b/tests/data/test649 new file mode 100644 index 000000000..46c01cd00 --- /dev/null +++ b/tests/data/test649 @@ -0,0 +1,72 @@ + + + +SMTP +MULTIPART + + + +# +# Server-side + + + +# +# Client-side + + +smtp + + +SMTP multipart with 7bit encoder error + + +From: different +To: another + +body + + +smtp://%HOSTIP:%SMTPPORT/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/test649.txt;encoder=7bit" -H "From: different" -H "To: another" + + +This is an attached file (in french: pièce jointe). + +It contains at least an 8-bit byte value. + + + +# +# Verify data after the test has been "shot" + + +s/^--------------------------[a-z0-9]*/------------------------------/ +s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/ + + +EHLO 649 +MAIL FROM: +RCPT TO: +DATA + + +Content-Type: multipart/mixed; boundary=---------------------------- +Mime-Version: 1.0 +From: different +To: another + +------------------------------ +Content-Transfer-Encoding: 7bit + +This is valid +------------------------------ +Content-Disposition: attachment; filename="test649.txt" +Content-Transfer-Encoding: 7bit + +This is an attached file (in french: pi + + +26 + + + -- cgit v1.2.3