Marcel Taeumel uploaded a new version of Network to project The Trunk: http://source.squeak.org/trunk/Network-mt.266.mcz
==================== Summary ====================
Name: Network-mt.266 Author: mt Time: 22 March 2023, 1:46:39.906694 pm UUID: f8c804a7-ba44-f84b-a8a6-78aa4e311004 Ancestors: Network-mt.265
Complement System-mt.1391
=============== Diff against Network-mt.265 ===============
Item was changed: SystemOrganization addCategory: #'Network-UUID'! SystemOrganization addCategory: #'Network-Url'! SystemOrganization addCategory: #'Network-URI'! SystemOrganization addCategory: #'Network-RemoteDirectory'! SystemOrganization addCategory: #'Network-Protocols'! SystemOrganization addCategory: #'Network-Exceptions'! SystemOrganization addCategory: #'Network-MailSending'! SystemOrganization addCategory: #'Network-Kernel'! SystemOrganization addCategory: #'Network-RFC822'! + SystemOrganization addCategory: #'Network-MIME'!
Item was changed: Object subclass: #MIMEDocument instanceVariableNames: 'mainType subType content fields url parts' classVariableNames: 'MIMEdatabase' poolDictionaries: '' + category: 'Network-MIME'! - category: 'Network-Url'!
!MIMEDocument commentStamp: 'pre 7/6/2017 13:58' prior: 0! a MIME object, along with its type and the URL it was found at (if any)
Design decisions: - The API for using the content of the MIME object inside Squeak returns Strings in Squeak encoding. The serializing methods return the content serialized according to the content-type and content-transfer-encoding --pre!
Item was changed: Object subclass: #MIMEHeaderValue instanceVariableNames: 'mainValue parameters' classVariableNames: '' poolDictionaries: '' + category: 'Network-MIME'! - category: 'Network-Url'!
!MIMEHeaderValue commentStamp: '<historical>' prior: 0! I contain the value portion of a MIME-compatible header.
I must be only initialized with the value and not the field name. E.g. in processing Subject: This is the subject the MIMEHeaderValue should be given only 'This is the subject'
For traditional non-MIME headers, the complete value returned for mainValue and paramaters returns an empty collection.
For MIME headers, both mainValue and parameters are used.!
Item was changed: MIMEDocument subclass: #MIMELocalFileDocument instanceVariableNames: 'contentStream' classVariableNames: '' poolDictionaries: '' + category: 'Network-MIME'! - category: 'Network-Url'!
!MIMELocalFileDocument commentStamp: '<historical>' prior: 0! For local files, we do not read the entire contents unless we absolutely have to.!
Item was added: + Object subclass: #MIMEType + instanceVariableNames: 'main sub parameters' + classVariableNames: 'DefaultSuffixes StandardMIMEMappings' + poolDictionaries: '' + category: 'Network-MIME'!
Item was added: + ----- Method: MIMEType class>>contentTypeMultipart (in category 'instance creation') ----- + contentTypeMultipart + ^self main: 'multipart' sub: 'form-data'!
Item was added: + ----- Method: MIMEType class>>contentTypeURLEncoded (in category 'instance creation') ----- + contentTypeURLEncoded + ^self main: 'application' sub: 'x-www-form-urlencoded'!
Item was added: + ----- Method: MIMEType class>>defaultHTML (in category 'instance creation') ----- + defaultHTML + ^self main: 'text' sub: 'html'!
Item was added: + ----- Method: MIMEType class>>defaultStream (in category 'instance creation') ----- + defaultStream + ^self main: 'application' sub: 'octet-stream'!
Item was added: + ----- Method: MIMEType class>>defaultSuffixes (in category 'class initialization') ----- + defaultSuffixes + "MIMEType defaultSuffixes" + + ^DefaultSuffixes ifNil: [DefaultSuffixes := self initializeDefaultSuffixes]!
Item was added: + ----- Method: MIMEType class>>defaultText (in category 'instance creation') ----- + defaultText + ^self main: 'text' sub: 'plain'!
Item was added: + ----- Method: MIMEType class>>forExtension: (in category 'instance creation') ----- + forExtension: fileExtension + | mime | + SmalltalkImage current platformName = 'Mac OS' + ifTrue: + [mime := Smalltalk at: #MIMETypeMacResolver ifPresent: [:c | c getMIMETypeForFilename: 'a.',fileExtension]]. + mime ifNotNil: [^mime]. + ^(self mimeMappings at: fileExtension asLowercase ifAbsent: [^nil]) first!
Item was added: + ----- Method: MIMEType class>>forFileName: (in category 'instance creation') ----- + forFileName: fileName + | ext type | + ext := FileDirectory extensionFor: fileName. + (ext = '' and: [SmalltalkImage current platformName = 'Mac OS']) + ifTrue: [type := (FileDirectory default getMacFileTypeAndCreator: fileName) at: 1. + ^self forExtension: type]. + ^self forExtension: (FileDirectory extensionFor: fileName)!
Item was added: + ----- Method: MIMEType class>>fromMIMEString: (in category 'instance creation') ----- + fromMIMEString: mimeString + | idx main rest sub parameters | + idx := mimeString indexOf: $/. + idx = 0 + ifTrue: [self error: 'Illegal mime type string "' , mimeString , '".']. + main := mimeString copyFrom: 1 to: idx-1. + rest := mimeString copyFrom: idx+1 to: mimeString size. + idx := mimeString indexOf: $;. + idx = 0 + ifTrue: [sub := rest] + ifFalse: [ + sub := rest copyFrom: 1 to: idx. + parameters := rest copyFrom: idx+1 to: rest size]. + ^self + main: main + sub: sub + parameters: parameters + !
Item was added: + ----- Method: MIMEType class>>huntForDashAndRemove: (in category 'accessing') ----- + huntForDashAndRemove: aString + | n | + (n := aString lastIndexOf: $-) > 0 ifTrue: [^aString copyFrom: n+1 to: aString size]. + ^aString + !
Item was added: + ----- Method: MIMEType class>>initialize (in category 'class initialization') ----- + initialize + "MIMEType initialize" + + self initializeStandardMIMETypes. + FileDirectory initializeStandardMIMETypes.!
Item was added: + ----- Method: MIMEType class>>initializeDefaultSubTypeSuffixes (in category 'class initialization') ----- + initializeDefaultSubTypeSuffixes + "MIMEType initializeDefaultSubTypeSuffixes" + + | defaultSuffixes | + defaultSuffixes := Dictionary new: 43. + defaultSuffixes + at: 'jpeg' put: 'jpg'; + yourself. + ^defaultSuffixes!
Item was added: + ----- Method: MIMEType class>>initializeDefaultSuffixes (in category 'class initialization') ----- + initializeDefaultSuffixes + "MIMEType initializeDefaultSubTypeSuffixes" + "DefaultSuffixes := nil" + + | defaultSuffixes | + defaultSuffixes := Dictionary new: 43. + defaultSuffixes + at: 'image/jpeg' put: 'jpg'; + at: 'audio/x-mpeg' put: 'mp3'; + at: 'video/x-mpeg' put: 'mpg'; + at: 'image/png' put: 'png'; + at: 'text/xml' put: 'xml'; + yourself. + ^defaultSuffixes!
Item was added: + ----- Method: MIMEType class>>initializeStandardMIMETypes (in category 'class initialization') ----- + initializeStandardMIMETypes + "MIMEType initializeStandardMIMETypes" + + StandardMIMEMappings := Dictionary new. + self standardMIMETypes keysAndValuesDo:[:extension :mimeStrings | + StandardMIMEMappings + at: extension asString asLowercase + put: (mimeStrings collect: [:mimeString | MIMEType fromMIMEString: mimeString]). + ].!
Item was added: + ----- Method: MIMEType class>>main:sub: (in category 'instance creation') ----- + main: mainType sub: subType + ^self new + main: mainType; + sub: subType!
Item was added: + ----- Method: MIMEType class>>main:sub:parameters: (in category 'instance creation') ----- + main: mainType sub: subType parameters: parameters + ^self new + main: mainType; + sub: subType; + parameters: parameters!
Item was added: + ----- Method: MIMEType class>>mimeMappings (in category 'accessing') ----- + mimeMappings + ^StandardMIMEMappings!
Item was added: + ----- Method: MIMEType class>>simpleSuffixForMimeType: (in category 'accessing') ----- + simpleSuffixForMimeType: mimeType + ^(self defaultSuffixes at: mimeType ifAbsent: [self huntForDashAndRemove: mimeType sub]) asSymbol!
Item was added: + ----- Method: MIMEType class>>standardMIMETypes (in category 'class initialization') ----- + standardMIMETypes + "MIMEType standardMIMETypes" + "We had to split this method because of the 256 literal limit in methods." + | mimeTypes | + mimeTypes := self standardMIMETypes2. + mimeTypes + at: 'adr' put: #('application/x-msaddr'); + at: 'jpe' put: #('image/jpeg'); + at: 'ttf' put: #('application/x-truetypefont'); + at: 'wiz' put: #('application/msword'); + at: 'xml' put: #('text/xml' 'text/html'); + at: 'ppz' put: #('application/vnd.ms-powerpoint'); + at: 'rpm' put: #('audio/x-pn-realaudio-plugin'); + at: 'rgb' put: #('image/x-rgb'); + at: 'mid' put: #('audio/midi' 'audio/x-midi'); + at: 'pnm' put: #('image/x-portable-anymap'); + at: 'bcpio' put: #('application/x-bcpio'); + at: 'pot' put: #('application/vnd.ms-powerpoint'); + at: 'o' put: #('application/octet-stream'); + at: 'vgp' put: #('video/x-videogram-plugin'); + at: 'ua' put: #('text/plain'); + at: 'zpa' put: #('application/pcphoto'); + at: 'pdf' put: #('application/pdf'); + at: 'class' put: #('application/octet-stream'); + at: 'ra' put: #('audio/x-realaudio'); + at: 'ips' put: #('application/ips'); + at: 'uu' put: #('application/octet-stream'); + at: 'sh' put: #('application/x-sh'); + at: 'ebk' put: #('application/x-expandedbook'); + at: 'pbm' put: #('image/x-portable-bitmap'); + at: 'ram' put: #('audio/x-pn-realaudio'); + at: 'tsv' put: #('text/tab-separated-values'); + at: 'dvi' put: #('application/x-dvi'); + at: 'lha' put: #('application/octet-stream'); + at: 'gif' put: #('image/gif'); + at: 'aif' put: #('audio/x-aiff'); + at: 'etx' put: #('text/x-setext'); + at: 'jfif-tbnl' put: #('image/jpeg'); + at: 'pps' put: #('application/vnd.ms-powerpoint'); + at: 'mp3' put: #('audio/mpeg' 'audio/x-mpeg'); + at: 'pgr' put: #('text/parsnegar-document'); + at: 'con' put: #('application/x-connector'); + at: 'viv' put: #('video/vnd.vivo'); + at: 'latex' put: #('application/x-latex'); + at: 'h' put: #('text/plain'); + at: 'ms' put: #('application/x-troff-ms'); + at: 'zip' put: #('application/zip'); + at: 'axs' put: #('application/olescript'); + at: 'gtar' put: #('application/x-gtar'); + at: 'fhc' put: #('image/x-freehand'); + at: 'asf' put: #('video/x-ms-asf'); + at: 'm3u' put: #('audio/x-mpeg'); + at: 'ai' put: #('application/postscript'); + at: 'movie' put: #('video/x-sgi-movie' 'video/x-sgi.movie'); + at: 'exe' put: #('application/octet-stream'); + at: 'htm' put: #('text/html' 'text/plain'); + at: 'a' put: #('application/octet-stream'); + at: 'mv' put: #('video/x-sgi-movie'); + at: 'fh4' put: #('image/x-freehand'); + at: 'avi' put: #('video/avi'); + at: 'tiff' put: #('image/tiff'); + at: 'mpga' put: #('audio/mpeg'); + at: 'mov' put: #('video/mov'); + at: 'html' put: #('text/html' 'text/plain'); + at: 'hqx' put: #('application/mac-binhex40' 'application/octet-stream'); + at: 'ras' put: #('image/x-cmu-rast'); + at: 'arc' put: #('application/octet-stream'); + at: 'dump' put: #('application/octet-stream'); + at: 'jfif' put: #('image/jpeg'); + at: 'dus' put: #('audio/x-dspeech'); + at: 'me' put: #('application/x-troff-me'); + at: 'mime' put: #('message/rfc822'); + at: 'gtaru' put: #('application/x-gtar'); + at: 'cdf' put: #('application/x-netcdf'); + at: 'xpm' put: #('image/x-xpixmap'); + at: 'jpg' put: #('image/jpeg'); + at: 'dot' put: #('application/msword'); + at: 'css' put: #('text/css' 'text/x-css'); + at: 'chat' put: #('application/x-chat'); + at: 'gz' put: #('application/gzip'); + at: 'mp2' put: #('audio/mpeg'); + at: 'cpt' put: #('application/mac-compactpro'); + at: 'wlt' put: #('application/x-mswallet'); + at: 'text' put: #('text/plain'); + at: 'wsrc' put: #('application/x-wais-source'); + at: 'xwd' put: #('image/x-xwindowdump'); + at: 'rm' put: #('audio/x-pn-realaudio'); + at: 'wrl' put: #('model/vrml'); + at: 'doc' put: #('application/ms-word-document' 'application/msword'); + at: 'ustar' put: #('audio/basic'); + at: 'js' put: #('application/x-javascript'); + at: 'rtx' put: #('application/rtf'); + at: 'aam' put: #('application/x-authorware-map'); + at: 'oda' put: #('application/oda'); + at: 'ppa' put: #('application/vnd.ms-powerpoint'); + at: 'xbm' put: #('image/x-xbitmap'); + at: 'cpio' put: #('application/x-cpio'); + at: 'sv4crc' put: #('application/x-sv4crc'); + at: 'mpg' put: #('video/mpg' 'video/mpeg' 'video/x-mpeg'); + at: 't' put: #('application/x-troff'); + at: 'txt' put: #('text/plain'); + at: 'sit' put: #('application/x-stuffit'); + at: 'wid' put: #('application/x-DemoShield'); + at: 'swf' put: #('application/x-shockwave-flash'); + at: 'lzh' put: #('application/octet-stream'); + at: 'au' put: #('audio/basic'); + at: 'java' put: #('text/plain'); + at: 'mpeg' put: #('video/mpeg' 'video/x-mpeg'); + at: 'qt' put: #('video/quicktime'); + at: 'pgm' put: #('image/x-portable-graymap'); + at: 'hdf' put: #('application/x-hdf'); + at: 'c' put: #('text/plain'); + at: 'cpp' put: #('text/plain'); + at: 'vgx' put: #('video/x-videogram'); + at: 'aifc' put: #('audio/x-aiff'); + at: 'tex' put: #('application/x.tex'); + at: 'wav' put: #('audio/wav' 'audio/x-wav'); + at: 'ivr' put: #('i-world/i-vrml'); + at: 'saveme' put: #('application/octet-stream'); + at: 'csh' put: #('application/x-csh'); + at: 'aas' put: #('application/x-authorware-map'); + at: 'tar' put: #('application/x-tar'); + at: 'vivo' put: #('video/vnd.vivo'); + yourself. + ^mimeTypes!
Item was added: + ----- Method: MIMEType class>>standardMIMETypes2 (in category 'class initialization') ----- + standardMIMETypes2 + "MIMEType standardMimeTypes2" + "We had to split this method because of the 256 literal limit in methods." + | mimeTypes | + mimeTypes := Dictionary new: 100. + mimeTypes + at: 'nc' put: #('application/x-netcdf'); + at: 'shar' put: #('application/x-shar'); + at: 'pgp' put: #('application/x-pgp-plugin'); + at: 'texi' put: #('application/x-texinfo'); + at: 'z' put: #('application/x-compress'); + at: 'aiff' put: #('audio/aiff' 'audio/x-aiff'); + at: 'bin' put: #('application/octet-stream'); + at: 'pwz' put: #('application/vnd.ms-powerpoint'); + at: 'rtc' put: #('application/rtc'); + at: 'asx' put: #('video/x-ms-asf'); + at: 'ief' put: #('image/ief'); + at: 'ps' put: #('application/postscript'); + at: 'xls' put: #('application/vnd.ms-excel'); + at: 'vrml' put: #('model/vrml'); + at: 'jpeg' put: #('image/jpeg'); + at: 'dwg' put: #('image/vnd'); + at: 'dms' put: #('application/octet-stream'); + at: 'tif' put: #('image/tiff'); + at: 'roff' put: #('application/x-troff'); + at: 'midi' put: #('audio/midi'); + at: 'eps' put: #('application/postscript'); + at: 'man' put: #('application/x-troff-man'); + at: 'sv4cpio' put: #('application/x-sv4cpio'); + at: 'tr' put: #('application/x-troff'); + at: 'dxf' put: #('image/vnd'); + at: 'rtf' put: #('text/rtf' 'application/rtf'); + at: 'frl' put: #('application/freeloader'); + at: 'xlb' put: #('application/vnd.ms-excel'); + at: 'pl' put: #('text/plain'); + at: 'snd' put: #('audio/basic'); + at: 'texinfo' put: #('application/x-texinfo'); + at: 'tbk' put: #('application/toolbook'); + at: 'ppm' put: #('image/x-portable-pixmap'); + at: 'cht' put: #('audio/x-dspeech'); + at: 'bmp' put: #('image/bmp'); + at: 'vgm' put: #('video/x-videogram'); + at: 'fh5' put: #('image/x-freehand'); + at: 'src' put: #('application/x-wais-source'); + at: 'm4' put: #('audio/x-mp4-audio'); + at: 'm4b' put: #('audio/x-quicktime-protected-b'); + at: 'm4p' put: #('audio/x-quicktime-protected'); + at: 'mp4v' put: #('video/x-mp4-video'); + at: 'm4v' put: #('video/x-mp4-video'); + at: 'mp4' put: #('video/x-mp4-video'); + at: 'wma' put: #('audio/x-ms-wma'); + at: 'wmv' put: #('video/x-ms-wmv'); + at: 'wm' put: #('video/x-ms-wm'); + at: 'png' put: #('image/png'); + yourself. + ^mimeTypes + !
Item was added: + ----- Method: MIMEType class>>suffixForMimeType: (in category 'accessing') ----- + suffixForMimeType: mimeType + ^self defaultSuffixes at: mimeType ifAbsent: [mimeType sub]!
Item was added: + ----- Method: MIMEType>>= (in category 'comparing') ----- + = anotherObject + anotherObject class == self class + ifFalse: [^false]. + ^self main = anotherObject main + and: [self sub = anotherObject sub]!
Item was added: + ----- Method: MIMEType>>asMIMEType (in category 'converting') ----- + asMIMEType + ^self!
Item was added: + ----- Method: MIMEType>>beginsWith: (in category 'comparing') ----- + beginsWith: aString + ^self printString beginsWith: aString!
Item was added: + ----- Method: MIMEType>>hash (in category 'comparing') ----- + hash + ^self main hash bitXor: self sub hash!
Item was added: + ----- Method: MIMEType>>main (in category 'accessing') ----- + main + ^main!
Item was added: + ----- Method: MIMEType>>main: (in category 'accessing') ----- + main: mainType + main := mainType!
Item was added: + ----- Method: MIMEType>>parameters: (in category 'accessing') ----- + parameters: params + parameters := params!
Item was added: + ----- Method: MIMEType>>printOn: (in category 'printing') ----- + printOn: stream + stream + nextPutAll: main; nextPut: $/ ; nextPutAll: sub!
Item was added: + ----- Method: MIMEType>>sub (in category 'accessing') ----- + sub + ^sub!
Item was added: + ----- Method: MIMEType>>sub: (in category 'accessing') ----- + sub: subType + sub := subType!
Item was added: + ----- Method: String>>asMIMEType (in category '*network-mime') ----- + asMIMEType + ^MIMEType fromMIMEString: self!
packages@lists.squeakfoundation.org