diff --git a/src/TinyBlog.package/TBWebApp.class/README.md b/src/TinyBlog.package/TBWebApp.class/README.md new file mode 100644 index 0000000..e69de29 diff --git a/src/TinyBlog.package/TBWebApp.class/class/start.st b/src/TinyBlog.package/TBWebApp.class/class/start.st new file mode 100644 index 0000000..04ad1df --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/class/start.st @@ -0,0 +1,3 @@ +starting/stopping +start + Server ifNil: [ Server := self new start ] \ No newline at end of file diff --git a/src/TinyBlog.package/TBWebApp.class/class/stop.st b/src/TinyBlog.package/TBWebApp.class/class/stop.st new file mode 100644 index 0000000..7369173 --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/class/stop.st @@ -0,0 +1,3 @@ +starting/stopping +stop + Server ifNotNil: [ Server stop. Server := nil ] \ No newline at end of file diff --git a/src/TinyBlog.package/TBWebApp.class/instance/allPosts.st b/src/TinyBlog.package/TBWebApp.class/instance/allPosts.st new file mode 100644 index 0000000..174d8af --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/instance/allPosts.st @@ -0,0 +1,3 @@ +actions +allPosts + ^ TBBlog current allVisibleBlogPosts \ No newline at end of file diff --git a/src/TinyBlog.package/TBWebApp.class/instance/errorPage.st b/src/TinyBlog.package/TBWebApp.class/instance/errorPage.st new file mode 100644 index 0000000..bddb1bb --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/instance/errorPage.st @@ -0,0 +1,6 @@ +actions +errorPage + ^ String streamContents: [ :s | + self renderPageHeaderOn: s. + s << '

Oops, an error occurred

'. + self renderPageFooterOn: s ] \ No newline at end of file diff --git a/src/TinyBlog.package/TBWebApp.class/instance/homePage.st b/src/TinyBlog.package/TBWebApp.class/instance/homePage.st new file mode 100644 index 0000000..e6c453d --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/instance/homePage.st @@ -0,0 +1,14 @@ +actions +homePage + ^ String streamContents: [ :s | + self renderPageHeaderOn: s. + s << '

TinyBlog Web App

'. + s << ''. + self renderPageFooterOn: s. + ] \ No newline at end of file diff --git a/src/TinyBlog.package/TBWebApp.class/instance/initialize.st b/src/TinyBlog.package/TBWebApp.class/instance/initialize.st new file mode 100644 index 0000000..25b0a29 --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/instance/initialize.st @@ -0,0 +1,7 @@ +initialization +initialize + super initialize. + teapot := Teapot configure: { + #port -> 8081. + #debugMode -> true + }. \ No newline at end of file diff --git a/src/TinyBlog.package/TBWebApp.class/instance/pageForPostNumber..st b/src/TinyBlog.package/TBWebApp.class/instance/pageForPostNumber..st new file mode 100644 index 0000000..d0db528 --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/instance/pageForPostNumber..st @@ -0,0 +1,10 @@ +starting/stopping +pageForPostNumber: aPostNumber + | currentPost | + currentPost := self allPosts at: aPostNumber ifAbsent: [ ^ self errorPage ]. + ^ String streamContents: [ :s | self renderPageHeaderOn: s. + s << ('

', currentPost title, '

'). + s << ('

', currentPost date mmddyyyy, '

'). + s << ('

Category: ', currentPost category, '

'). + s << ('

', currentPost text, '

'). + self renderPageFooterOn: s ] \ No newline at end of file diff --git a/src/TinyBlog.package/TBWebApp.class/instance/renderPageFooterOn..st b/src/TinyBlog.package/TBWebApp.class/instance/renderPageFooterOn..st new file mode 100644 index 0000000..33e74d1 --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/instance/renderPageFooterOn..st @@ -0,0 +1,3 @@ +actions +renderPageFooterOn: aStream + aStream << '' \ No newline at end of file diff --git a/src/TinyBlog.package/TBWebApp.class/instance/renderPageHeaderOn..st b/src/TinyBlog.package/TBWebApp.class/instance/renderPageHeaderOn..st new file mode 100644 index 0000000..c0fdd14 --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/instance/renderPageHeaderOn..st @@ -0,0 +1,3 @@ +actions +renderPageHeaderOn: aStream + aStream << '' \ No newline at end of file diff --git a/src/TinyBlog.package/TBWebApp.class/instance/start.st b/src/TinyBlog.package/TBWebApp.class/instance/start.st new file mode 100644 index 0000000..e62496f --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/instance/start.st @@ -0,0 +1,6 @@ +starting/stopping +start + teapot + GET: '/' -> [ self homePage ]; + GET: '/posts/' -> [ :request | self pageForPostNumber: (request at: #id) asNumber ]; + start \ No newline at end of file diff --git a/src/TinyBlog.package/TBWebApp.class/instance/stop.st b/src/TinyBlog.package/TBWebApp.class/instance/stop.st new file mode 100644 index 0000000..9bc7c2c --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/instance/stop.st @@ -0,0 +1,3 @@ +starting/stopping +stop + teapot stop \ No newline at end of file diff --git a/src/TinyBlog.package/TBWebApp.class/properties.json b/src/TinyBlog.package/TBWebApp.class/properties.json new file mode 100644 index 0000000..6495ecd --- /dev/null +++ b/src/TinyBlog.package/TBWebApp.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "TinyBlog", + "classinstvars" : [ + ], + "classvars" : [ + "Server" ], + "commentStamp" : "", + "instvars" : [ + "teapot" ], + "name" : "TBWebApp", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" }