Zinc server with static and non-static files

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Zinc server with static and non-static files

Pharo Smalltalk Users mailing list
Hi Guys,
Is it possible a Zinc server returns static files within a specific url path
(like the ZnStaticFileServerDelegate) and also returns other logics as shown
with map:#otherPath to: MyWebapp new ?
TIA
Davide



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Zinc server with static and non-static files

NorbertHartl
There is ZnPrefixMappingDelegate you can use.

server
   delegate: (ZnPrefixMappingDelegate
      map: 'static' to: staticFileDelegate; 
      map: 'app' to: myApp).

There is also ZnStaticFileDecoratorDelegate if you want to mimick another typical setup where all urls that resolve to a file get served from disk and any other will be forwarded to you app.

server
   delegate: (ZnStaticFileDecoratorDelegate
      decorate: myApp
      servingFilesFrom: 'static/').

Hope this helps!

Norbert


Am 28.03.2020 um 01:34 schrieb Davide Varvello via Pharo-users <[hidden email]>:


Von: Davide Varvello <[hidden email]>
Betreff: Zinc server with static and non-static files
Datum: 28. März 2020 um 01:34:13 MEZ


Hi Guys,
Is it possible a Zinc server returns static files within a specific url path
(like the ZnStaticFileServerDelegate) and also returns other logics as shown
with map:#otherPath to: MyWebapp new ?
TIA
Davide



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html




Reply | Threaded
Open this post in threaded view
|

Re: Zinc server with static and non-static files

Pharo Smalltalk Users mailing list
Hi Norbert,
Thank you very much for the suggestion!!
Davide


NorbertHartl wrote

> There is ZnPrefixMappingDelegate you can use.
>
> server
>    delegate: (ZnPrefixMappingDelegate
>       map: 'static' to: staticFileDelegate;
>       map: 'app' to: myApp).
>
> There is also ZnStaticFileDecoratorDelegate if you want to mimick another
> typical setup where all urls that resolve to a file get served from disk
> and any other will be forwarded to you app.
>
> server
>    delegate: (ZnStaticFileDecoratorDelegate
>       decorate: myApp
>       servingFilesFrom: 'static/').
>
> Hope this helps!
>
> Norbert
>
>
>> Am 28.03.2020 um 01:34 schrieb Davide Varvello via Pharo-users &lt;

> pharo-users@.pharo

> &gt;:
>>
>>
>> Von: Davide Varvello &lt;

> varvello@

> &gt;
>> Betreff: Zinc server with static and non-static files
>> Datum: 28. März 2020 um 01:34:13 MEZ
>> An:

> pharo-users@.pharo

>>
>>
>> Hi Guys,
>> Is it possible a Zinc server returns static files within a specific url
>> path
>> (like the ZnStaticFileServerDelegate) and also returns other logics as
>> shown
>> with map:#otherPath to: MyWebapp new ?
>> TIA
>> Davide
>>
>>
>>
>> --
>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>
>>
>>





--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Zinc server with static and non-static files

Sven Van Caekenberghe-2
In reply to this post by NorbertHartl
Hi Davide,

What Norbert says is all correct and useful. Go read the code of the classes he mentions.

I wanted to add, that fundamentally, all this (dispatching/configuring), is not difficult to understand or to follow.

Even with the aptly named ZnDefaultServerDelegate you can already do a lot, including what you asked for. Consider part of the startup file of http://zn.stfx.eu which serves its own website, together with all the default builtin responses.

So the following are all possible:

- http://zn.stfx.eu
- http://zn.stfx.eu/zn/index.html
- http://zn.stfx.eu/xn/small.html
- http://zn.stfx.eu/welcome
- http://zn.stfx.eu/dw-bench
- ...
- http://zn.stfx.eu/help

(the last one lists all configured prefixes).

(ZnServer defaultOn: 8180)
  logToTranscript;
  logLevel: 1;
  start.

(staticFileServerDelegate := ZnStaticFileServerDelegate new)
  prefixFromString: 'zn';
  directory: '/home/stfx/zn' asFileReference.

ZnServer default delegate prefixMap
  at: 'zn'
  put: [ :request | staticFileServerDelegate handleRequest: request ];
  at: 'redirect-to-zn'
  put: [ :request | ZnResponse redirect: '/zn/index.html' ];
  at: '/'
  put: 'redirect-to-zn'.

(#map:to: is newer/better)

When using a block as a handler, you can literally do anything.

HTH,

Sven

> On 28 Mar 2020, at 08:54, Norbert Hartl <[hidden email]> wrote:
>
> There is ZnPrefixMappingDelegate you can use.
>
> server
>    delegate: (ZnPrefixMappingDelegate
>       map: 'static' to: staticFileDelegate;
>       map: 'app' to: myApp).
>
> There is also ZnStaticFileDecoratorDelegate if you want to mimick another typical setup where all urls that resolve to a file get served from disk and any other will be forwarded to you app.
>
> server
>    delegate: (ZnStaticFileDecoratorDelegate
>       decorate: myApp
>       servingFilesFrom: 'static/').
>
> Hope this helps!
>
> Norbert
>
>
>> Am 28.03.2020 um 01:34 schrieb Davide Varvello via Pharo-users <[hidden email]>:
>>
>>
>> Von: Davide Varvello <[hidden email]>
>> Betreff: Zinc server with static and non-static files
>> Datum: 28. März 2020 um 01:34:13 MEZ
>> An: [hidden email]
>>
>>
>> Hi Guys,
>> Is it possible a Zinc server returns static files within a specific url path
>> (like the ZnStaticFileServerDelegate) and also returns other logics as shown
>> with map:#otherPath to: MyWebapp new ?
>> TIA
>> Davide
>>
>>
>>
>> --
>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>
>>
>>
>


Reply | Threaded
Open this post in threaded view
|

Re: Zinc server with static and non-static files

Pharo Smalltalk Users mailing list
Thanks Sven, crystal clear!
Davide


Sven Van Caekenberghe-2 wrote

> Hi Davide,
>
> What Norbert says is all correct and useful. Go read the code of the
> classes he mentions.
>
> I wanted to add, that fundamentally, all this (dispatching/configuring),
> is not difficult to understand or to follow.
>
> Even with the aptly named ZnDefaultServerDelegate you can already do a
> lot, including what you asked for. Consider part of the startup file of
> http://zn.stfx.eu which serves its own website, together with all the
> default builtin responses.
>
> So the following are all possible:
>
> - http://zn.stfx.eu
> - http://zn.stfx.eu/zn/index.html
> - http://zn.stfx.eu/xn/small.html
> - http://zn.stfx.eu/welcome
> - http://zn.stfx.eu/dw-bench
> - ...
> - http://zn.stfx.eu/help
>
> (the last one lists all configured prefixes).
>
> (ZnServer defaultOn: 8180)
>   logToTranscript;
>   logLevel: 1;
>   start.
>
> (staticFileServerDelegate := ZnStaticFileServerDelegate new)
>   prefixFromString: 'zn';
>   directory: '/home/stfx/zn' asFileReference.
>
> ZnServer default delegate prefixMap
>   at: 'zn'
>   put: [ :request | staticFileServerDelegate handleRequest: request ];
>   at: 'redirect-to-zn'
>   put: [ :request | ZnResponse redirect: '/zn/index.html' ];
>   at: '/'
>   put: 'redirect-to-zn'.
>
> (#map:to: is newer/better)
>
> When using a block as a handler, you can literally do anything.
>
> HTH,
>
> Sven
>
>> On 28 Mar 2020, at 08:54, Norbert Hartl &lt;

> norbert@

> &gt; wrote:
>>
>> There is ZnPrefixMappingDelegate you can use.
>>
>> server
>>    delegate: (ZnPrefixMappingDelegate
>>       map: 'static' to: staticFileDelegate;
>>       map: 'app' to: myApp).
>>
>> There is also ZnStaticFileDecoratorDelegate if you want to mimick another
>> typical setup where all urls that resolve to a file get served from disk
>> and any other will be forwarded to you app.
>>
>> server
>>    delegate: (ZnStaticFileDecoratorDelegate
>>       decorate: myApp
>>       servingFilesFrom: 'static/').
>>
>> Hope this helps!
>>
>> Norbert
>>
>>
>>> Am 28.03.2020 um 01:34 schrieb Davide Varvello via Pharo-users &lt;

> pharo-users@.pharo

> &gt;:
>>>
>>>
>>> Von: Davide Varvello &lt;

> varvello@

> &gt;
>>> Betreff: Zinc server with static and non-static files
>>> Datum: 28. März 2020 um 01:34:13 MEZ
>>> An:

> pharo-users@.pharo

>>>
>>>
>>> Hi Guys,
>>> Is it possible a Zinc server returns static files within a specific url
>>> path
>>> (like the ZnStaticFileServerDelegate) and also returns other logics as
>>> shown
>>> with map:#otherPath to: MyWebapp new ?
>>> TIA
>>> Davide
>>>
>>>
>>>
>>> --
>>> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
>>>
>>>
>>>
>>





--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html