Class { #name : 'TCServer', #superclass : 'Object', #instVars : [ 'teapotServer', 'messagesQueue' ], #category : 'TinyChat-server', #package : 'TinyChat-server' } { #category : 'initialization' } TCServer class >> startOn: aPortNumber [ ^self new initializePort: aPortNumber; registerRoutes; registerErrorHandlers; yourself ] { #category : 'initialization' } TCServer class >> stopAll [ self allInstancesDo: #stop ] { #category : 'initialization' } TCServer >> addMessage: aRequest [ messagesQueue add: (TCMessage from: (aRequest at: #sender) text: (aRequest at: #text)). ] { #category : 'initialization' } TCServer >> initialize [ super initialize. messagesQueue := TCMessageQueue new ] { #category : 'initialization' } TCServer >> initializePort: anInteger [ teapotServer := Teapot configure: { #defaultOutput -> #text. #port -> anInteger. #debugMode -> true }. teapotServer start ] { #category : 'initialization' } TCServer >> messageCount [ ^ messagesQueue size ] { #category : 'initialization' } TCServer >> messagesFrom: request [ ^ messagesQueue formattedMessagesFrom: (request at: #id) ] { #category : 'initialization' } TCServer >> registerErrorHandlers [ teapotServer exception: KeyNotFound -> (TeaResponse notFound body: 'No such message') ] { #category : 'initialization' } TCServer >> registerRoutes [ teapotServer GET: '/messages/count' -> (Send message: #messageCount to: self); GET: '/messages/' -> (Send message: #messagesFrom: to: self); POST: '/messages/add' -> (Send message: #addMessage: to: self) ] { #category : 'initialization' } TCServer >> stop [ teapotServer stop. messagesQueue reset ]