Seite 1 von 1

Multipart Parser

Verfasst: Donnerstag 17. Juni 2010, 12:42
von Defnull
Ich hab die letzten zwei Tage einen multipart/form-data Parser von Grund auf neu implementiert, der auch unter Python 3 funktioniert und cgi.FieldStorage() in Bottle ablösen soll. Damit wäre die letzte verbleibende Inkompatibilität zu Python 3 beseitigt (cgi.FieldStorage will unicode haben und verschluckt Newlines) und auch einige andere Dinge besser gelöst als mit cgi.FieldStorage().

Wenn jemand von euch Erfahrung mit kaputten Browsern hat, wäre es nett wenn ihr ein paar Test-Szenarien bei steuern könntet. Die Tests aus werkzeug/test/test_formparser.py und die Bottle-eigenen Tests besteht meine Implementierung bereits.

Ich weiß das:
- setuptools Leerzeilen vor dem ersten Separator ein baut.
- Chrome ab und zu den Content-Type header unterschlägt.
- Internet Explorer den Filename-Parameter des Content-Disposition Headers falsch befüllt.
- manche Browser keine Content-Length angeben.
- der Separator unter Umständen auch innerhalb des Datenbereichs vor kommen kann.
- manche Bibliotheken \n statt \r\n verwenden.

Kennt ihr noch andere Browser-Bugs was das multipart/form-data Format an geht?

Re: Multipart Parser

Verfasst: Donnerstag 17. Juni 2010, 21:23
von Defnull
Der Parser ist ab sofort open source: http://github.com/defnull/multipart

95% Test Coverage und 100% Python3 kompatibel :)

Re: Multipart Parser

Verfasst: Freitag 18. Juni 2010, 08:02
von nemomuk
Vllt. hilft es dir, wenn ich nur 4 von deinen 6 Punkten kenne... ;-)

Re: Multipart Parser

Verfasst: Freitag 18. Juni 2010, 11:58
von Defnull
Meh, ich hab mir das fast schon gedacht. Naja, muss ich halt auf die bug reports warten sobald das ganze in Bottle eingebaut ist ;)