[squeak-dev] The Inbox: WebClient-Core-ct.124.mcz
Chris Muller
asqueaker at gmail.com
Mon Aug 31 22:28:58 UTC 2020
I'm not qualified to review the change but good dig! :)
On Sun, Aug 30, 2020 at 6:54 PM <commits at source.squeak.org> wrote:
>
> Christoph Thiede uploaded a new version of WebClient-Core to project The Inbox:
> http://source.squeak.org/inbox/WebClient-Core-ct.124.mcz
>
> ==================== Summary ====================
>
> Name: WebClient-Core-ct.124
> Author: ct
> Time: 31 August 2020, 1:54:11.685896 am
> UUID: b0d7790c-c195-6e4d-ad0f-fce8cf8b3b00
> Ancestors: WebClient-Core-ul.123
>
> Fixes a syntax error in multipart/form-data encoding
>
> Phew! It costed me a few hours to track some higher-level application bug down to this low level code ...
>
> =============== Diff against WebClient-Core-ul.123 ===============
>
> Item was changed:
> ----- Method: WebUtils class>>encodeMultipartForm:boundary: (in category 'decoding') -----
> encodeMultipartForm: fieldMap boundary: boundary
> "Encodes the fieldMap as multipart/form-data.
>
> The fieldMap may contain MIMEDocument instances to indicate the presence
> of a file to upload to the server. If the MIMEDocument is present, its
> content type and file name will be used for the upload.
>
> The fieldMap can be EITHER an array of associations OR a Dictionary of
> key value pairs (the former is useful for providing multiple fields and/or
> specifying the order of fields)."
>
> ^String streamContents:[:stream|
> (fieldMap as: Dictionary) keysAndValuesDo:[:fieldName :fieldValue | | fieldContent |
> "Write multipart boundary and common headers"
> stream nextPutAll: '--', boundary; crlf.
> stream nextPutAll: 'Content-Disposition: form-data; name="', fieldName, '"'.
> "Figure out if this is a file upload"
> (fieldValue isKindOf: MIMEDocument) ifTrue:[
> + stream nextPutAll: '; filename="', fieldValue url pathForFile, '"'; crlf.
> - stream nextPutAll: ' filename="', fieldValue url pathForFile, '"'; crlf.
> stream nextPutAll: 'Content-Type: ', fieldValue contentType.
> fieldContent := (fieldValue content ifNil:[
> (FileStream readOnlyFileNamed: fieldValue url pathForFile) contentsOfEntireFile.
> ]) asString.
> ] ifFalse: [fieldContent := fieldValue].
> stream crlf; crlf.
> stream nextPutAll: fieldContent asString.
> stream crlf.
> ].
> stream nextPutAll: '--', boundary, '--', String crlf.
> ].
> !
>
>
More information about the Squeak-dev
mailing list
|