Swazoo is easy after you grasp a few concepts. Let's start with those concepts:
- Site : Swazoo can serve many sites at once (virtual sites). Class Site is therefore a main class to start configuring your server. It holds an IP, port and hostname of your site.
- SwazooServer singleton: return one and only one server which holds the Sites.
- Resource is an abstract class for all so called web resources. Such resource has its url address and can serve with responding to web requests. Every resource need to #answerTo: aHTTPRequest with aHTTPResponse. Site is a subclass of a Resource. You can subclass it with your own implementation. There is also a CompositeResource, which can hold many subresources. Site is also aCopmpositeResource and therefore you can add your own resources to your site.
- classes HTTPRequest, HTTPResponse should be obvious.
Here is the simplest recipe possible to make your Swazoo site running. "Doit" from a workspace:
site := SwazooSite new name: 'test'. "name is just for convenience"
site host: 'localhost' ip: '127.0.0.1' port: 6666.
SwazooServer singleton addSite: site.
Now you can create your own web resource with url '/helloworld.html' to return a sample Hello World! web page:
1. Make new class MyResource by subclassing SwazooResource,
2. implement (actually override) a method answerTo: aRequest :
| response |
response := Swazoo.HTTPResponse ok.
response entity: '
3. from workspace, make instance of your resource, define its url and add it to your site:
| resource composite |
resource := MyResource new uriPattern: 'helloworld.html'.
composite := CompositeResource new uriPattern: '/'.
composite addResource: resource.
(SwazooServer singleton siteNamed: 'test') addResource: composite.
4. open http://localhost:6666/helloworld.html in your browser.