all: add webapp
This commit is contained in:
0
src/TinyBlog.package/TBWebApp.class/README.md
Normal file
0
src/TinyBlog.package/TBWebApp.class/README.md
Normal file
3
src/TinyBlog.package/TBWebApp.class/class/start.st
Normal file
3
src/TinyBlog.package/TBWebApp.class/class/start.st
Normal file
@@ -0,0 +1,3 @@
|
||||
starting/stopping
|
||||
start
|
||||
Server ifNil: [ Server := self new start ]
|
3
src/TinyBlog.package/TBWebApp.class/class/stop.st
Normal file
3
src/TinyBlog.package/TBWebApp.class/class/stop.st
Normal file
@@ -0,0 +1,3 @@
|
||||
starting/stopping
|
||||
stop
|
||||
Server ifNotNil: [ Server stop. Server := nil ]
|
3
src/TinyBlog.package/TBWebApp.class/instance/allPosts.st
Normal file
3
src/TinyBlog.package/TBWebApp.class/instance/allPosts.st
Normal file
@@ -0,0 +1,3 @@
|
||||
actions
|
||||
allPosts
|
||||
^ TBBlog current allVisibleBlogPosts
|
@@ -0,0 +1,6 @@
|
||||
actions
|
||||
errorPage
|
||||
^ String streamContents: [ :s |
|
||||
self renderPageHeaderOn: s.
|
||||
s << '<p>Oops, an error occurred</p>'.
|
||||
self renderPageFooterOn: s ]
|
14
src/TinyBlog.package/TBWebApp.class/instance/homePage.st
Normal file
14
src/TinyBlog.package/TBWebApp.class/instance/homePage.st
Normal file
@@ -0,0 +1,14 @@
|
||||
actions
|
||||
homePage
|
||||
^ String streamContents: [ :s |
|
||||
self renderPageHeaderOn: s.
|
||||
s << '<h1>TinyBlog Web App</h1>'.
|
||||
s << '<ul>'.
|
||||
self allPosts withIndexDo: [ :aPost :index |
|
||||
s << '<li>';
|
||||
<< ('<a href="/posts/', index asString, '">');
|
||||
<< aPost title ;
|
||||
<< '</a></li>' ].
|
||||
s << '</ul>'.
|
||||
self renderPageFooterOn: s.
|
||||
]
|
@@ -0,0 +1,7 @@
|
||||
initialization
|
||||
initialize
|
||||
super initialize.
|
||||
teapot := Teapot configure: {
|
||||
#port -> 8081.
|
||||
#debugMode -> true
|
||||
}.
|
@@ -0,0 +1,10 @@
|
||||
starting/stopping
|
||||
pageForPostNumber: aPostNumber
|
||||
| currentPost |
|
||||
currentPost := self allPosts at: aPostNumber ifAbsent: [ ^ self errorPage ].
|
||||
^ String streamContents: [ :s | self renderPageHeaderOn: s.
|
||||
s << ('<h1>', currentPost title, '</h1>').
|
||||
s << ('<h3>', currentPost date mmddyyyy, '</h3>').
|
||||
s << ('<p> Category: ', currentPost category, '</p>').
|
||||
s << ('<p>', currentPost text, '</p>').
|
||||
self renderPageFooterOn: s ]
|
@@ -0,0 +1,3 @@
|
||||
actions
|
||||
renderPageFooterOn: aStream
|
||||
aStream << '</body></html>'
|
@@ -0,0 +1,3 @@
|
||||
actions
|
||||
renderPageHeaderOn: aStream
|
||||
aStream << '<html><body>'
|
6
src/TinyBlog.package/TBWebApp.class/instance/start.st
Normal file
6
src/TinyBlog.package/TBWebApp.class/instance/start.st
Normal file
@@ -0,0 +1,6 @@
|
||||
starting/stopping
|
||||
start
|
||||
teapot
|
||||
GET: '/' -> [ self homePage ];
|
||||
GET: '/posts/<id>' -> [ :request | self pageForPostNumber: (request at: #id) asNumber ];
|
||||
start
|
3
src/TinyBlog.package/TBWebApp.class/instance/stop.st
Normal file
3
src/TinyBlog.package/TBWebApp.class/instance/stop.st
Normal file
@@ -0,0 +1,3 @@
|
||||
starting/stopping
|
||||
stop
|
||||
teapot stop
|
14
src/TinyBlog.package/TBWebApp.class/properties.json
Normal file
14
src/TinyBlog.package/TBWebApp.class/properties.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"category" : "TinyBlog",
|
||||
"classinstvars" : [
|
||||
],
|
||||
"classvars" : [
|
||||
"Server" ],
|
||||
"commentStamp" : "",
|
||||
"instvars" : [
|
||||
"teapot" ],
|
||||
"name" : "TBWebApp",
|
||||
"pools" : [
|
||||
],
|
||||
"super" : "Object",
|
||||
"type" : "normal" }
|
Reference in New Issue
Block a user