[Seaside-dev] Re: [Seaside Commits] Seaside 2.9: Seaside-FileSystem-lr.10.mcz

Lukas Renggli renggli at gmail.com
Thu May 21 06:35:12 UTC 2009


Yeah, the usual thing. Our Monticello mass-commit-script, posted it to
the wrong repository. I moved it manually afterwards.

Lukas

On Thu, May 21, 2009 at 4:40 AM, Julian Fitzell <jfitzell at gmail.com> wrote:
> 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
>>>
>>
> _______________________________________________
> seaside-dev mailing list
> seaside-dev at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>



-- 
Lukas Renggli
http://www.lukas-renggli.ch


More information about the seaside-dev mailing list