[Seaside-dev] Re: [Seaside Commits] Seaside 2.9:
Seaside-FileSystem-lr.10.mcz
Julian Fitzell
jfitzell at gmail.com
Thu May 21 02:40:42 UTC 2009
Oops... see you fixed it already.
On Wed, May 20, 2009 at 7:03 PM, Julian Fitzell <jfitzell at gmail.com> wrote:
> This commit seems weird...?
>
> On Wed, May 20, 2009 at 11:42 AM,
> <squeak-dev-noreply at lists.squeakfoundation.org> wrote:
>> Lukas Renggli uploaded a new version of Seaside-FileSystem to project Seaside 2.9:
>> http://www.squeaksource.com/Seaside29/Seaside-FileSystem-lr.10.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Seaside-FileSystem-lr.10
>> Author: lr
>> Time: 20 May 2009, 8:41:57 pm
>> UUID: 66db219a-4325-4372-9701-baec6d271f76
>> Ancestors: Seaside-FileSystem-lr.9
>>
>> - Added WARequestContext>>#respond: and use it whenever possible:
>>
>> self requestContext respond: [ :response |
>> response
>> contentType: WAMimeType textPlain;
>> nextPutAll: 'Hello World' ]
>>
>> - This change reduces the code size (no temps need to be declared anymore) in most cases and simplifies request handling significantly. Credits go to Julian.
>>
>> ==================== Snapshot ====================
>>
>> SystemOrganization addCategory: #'Seaside-FileSystem'!
>>
>> WASystemConfiguration subclass: #WAExternalFileLibraryConfiguration
>> instanceVariableNames: ''
>> classVariableNames: ''
>> poolDictionaries: ''
>> category: 'Seaside-FileSystem'!
>>
>> ----- Method: WAExternalFileLibraryConfiguration>>describeOn: (in category 'attributes') -----
>> describeOn: config
>> (config string: #directory)
>> label: 'Directory';
>> comment: 'The base directory to serve files from.';
>> default: (SpFilename named: 'xxxDoesNotExists') asAbsoluteFilename directory asString. "#asString on SPFilename"
>> (config boolean: #listing)
>> label: 'Allow Listing';
>> comment: 'Enable listing of directory entries.';
>> default: false!
>>
>> ----- Method: WAPackage class>>seasideFileSystem (in category '*seaside-filesystem') -----
>> seasideFileSystem
>> ^ self new
>> name: 'Seaside-FileSystem';
>> description: 'File library that serves files from external directory.';
>> addDependency: 'Seaside-Core';
>> yourself!
>>
>> WAEntryPoint subclass: #WAExternalFileLibrary
>> instanceVariableNames: ''
>> classVariableNames: ''
>> poolDictionaries: ''
>> category: 'Seaside-FileSystem'!
>>
>> ----- Method: WAExternalFileLibrary class>>description (in category 'accessing') -----
>> description
>> ^ 'File Directory'!
>>
>> ----- Method: WAExternalFileLibrary>>asAbsoluteUrl:relativeTo: (in category 'private') -----
>> asAbsoluteUrl: aFileName relativeTo: aRequest
>> ^aRequest url copy
>> addToPath: aFileName;
>> yourself!
>>
>> ----- Method: WAExternalFileLibrary>>contentsOfFile: (in category 'private') -----
>> contentsOfFile: aFilename
>> | stream |
>> stream := aFilename readStream.
>> ^[
>> stream binary.
>> stream upToEnd ]
>> ensure: [ stream close ]!
>>
>> ----- Method: WAExternalFileLibrary>>defaultConfiguration (in category 'configuration') -----
>> defaultConfiguration
>> ^ super defaultConfiguration
>> addParent: WAExternalFileLibraryConfiguration instance;
>> yourself!
>>
>> ----- Method: WAExternalFileLibrary>>directory (in category 'accessing') -----
>> directory
>> | path filename |
>> path := self preferenceAt: #directory.
>> filename := SpFilename named: path.
>> "hack around SPort bugs"
>> ^(path last = filename separator)
>> ifTrue: [ SpFilename named: path allButLast ]
>> ifFalse: [ filename ]!
>>
>> ----- Method: WAExternalFileLibrary>>filenameForRequest: (in category 'private') -----
>> filenameForRequest: aRequest
>> | filename basePathUrl |
>> filename := self directory.
>> basePathUrl := WAUrl new parsePath: self basePath; yourself.
>> (basePathUrl relativeTo: aRequest url) do: [ :each |
>> filename := filename construct: each ].
>> ^filename!
>>
>> ----- Method: WAExternalFileLibrary>>filesIn:do: (in category 'private') -----
>> filesIn: aPath do: aOneArgumentBlock
>> "this can not be done with SPort"
>> (WAPlatform current filesIn: aPath) do: [ :each |
>> aOneArgumentBlock value: (WAPlatform current localNameOf: each) ]!
>>
>> ----- Method: WAExternalFileLibrary>>handleFiltered: (in category 'handling') -----
>> handleFiltered: aRequestContext
>> [ self processContext: aRequestContext ]
>> on: Error
>> do: [ :error |
>> aRequestContext responseGenerator
>> internalError: error;
>> respond ]!
>>
>> ----- Method: WAExternalFileLibrary>>listing (in category 'accessing') -----
>> listing
>> ^ self preferenceAt: #listing!
>>
>> ----- Method: WAExternalFileLibrary>>mimetypeForRequest: (in category 'private') -----
>> mimetypeForRequest: aRequest
>> | path |
>> path := aRequest url path.
>> ^(path isEmpty or: [ (path last includes: $.) not ])
>> ifTrue: [ WAFileLibrary defaultMimeType seasideMimeType ]
>> ifFalse: [
>> | extension |
>> extension := path last copyAfterLast: $..
>> WAFileLibrary mimetypeFor: extension ]!
>>
>> ----- Method: WAExternalFileLibrary>>processContext: (in category 'handling') -----
>> processContext: aRequestContext
>> | filename |
>> filename := self filenameForRequest: aRequestContext request.
>> (self listing and: [ filename isDirectory ])
>> ifTrue: [ self
>> processDirectory: filename asString "#asString on SPFilename"
>> context: aRequestContext ]
>> ifFalse: [ self processFile: filename context: aRequestContext ]!
>>
>> ----- Method: WAExternalFileLibrary>>processDirectory:context: (in category 'handling') -----
>> processDirectory: aString context: aRequestContext
>> | contents |
>> contents := WARenderCanvas builder
>> fullDocument: true;
>> rootBlock: [ :html | html title: aRequestContext request url seasideString ];
>> render: [ :html |
>> html heading
>> level: 1;
>> with: aRequestContext request url.
>> html unorderedList: [
>> self filesIn: aString do: [ :each |
>> html listItem: [
>> html anchor
>> url: (self asAbsoluteUrl: each relativeTo: aRequestContext request);
>> with: each ] ] ] ].
>> aRequestContext respond: [ :response |
>> response
>> contentType: WAMimeType textHtml;
>> nextPutAll: contents ]!
>>
>> ----- Method: WAExternalFileLibrary>>processFile:context: (in category 'handling') -----
>> processFile: aFilename context: aRequestContext
>> aRequestContext respond: [ :response |
>> response
>> document: (self contentsOfFile: aFilename)
>> mimeType: (self mimetypeForRequest: aRequestContext request)
>> fileName: (aRequestContext request url path last) ]!
>>
>>
>> _______________________________________________
>> commits mailing list
>> To unsubscribe, email commits-leave at lists.seaside.st
>> http://lists.seaside.st/listinfo/commits
>>
>
More information about the seaside-dev
mailing list