| 
					
				 | 
			
			
				@@ -0,0 +1,46 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Object subclass: #TrivialServer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        instanceVariableNames: 'counter' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        category: 'TrivialServer'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!TrivialServer methodsFor: 'initializing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+initialize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        counter := 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!TrivialServer methodsFor: 'processing'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+process: aRequest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        | hostname httpVersion stream | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	counter := counter + 1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "Calling a method in a js module" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	hostname := {'os.hostname()'}. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "Accessing a property of js HTTP request object" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        httpVersion := {'aRequest.httpVersion'}. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        stream := String new writeStream. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	stream 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		nextPutAll: '<html><p>Request HTTP version: ', httpVersion, '</p>'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		nextPutAll: '<p>OS hostname: ', hostname, '</p>'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		nextPutAll: '<p>Number of requests: ', counter asString, '</p></html>'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	^stream contents 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+start 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        | block | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        block := [:req :res | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           {'res.writeHead(200, {''Content-Type'': ''text/html''});'}. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           {'res.end(self._process_(req));'}]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {'http.createServer(block).listen(1337, ''127.0.0.1'');'}. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {'console.log(''TrivialServer running at http://127.0.0.1:1337/'');'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+!TrivialServer class methodsFor: 'initialization'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+initialize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "We require these Node modules." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{'os = require(''os''), http = require(''http'');'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! ! 
			 |