diff options
Diffstat (limited to 'src/guff/handlers/test-blog.cr')
-rw-r--r-- | src/guff/handlers/test-blog.cr | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/guff/handlers/test-blog.cr b/src/guff/handlers/test-blog.cr new file mode 100644 index 0000000..61f8241 --- /dev/null +++ b/src/guff/handlers/test-blog.cr @@ -0,0 +1,45 @@ +require "../handler" +require "../views/html/test-blog" + +class Guff::Handlers::TestBlogHandler < Guff::Handler + def call(context : HTTP::Server::Context) + case (context.request.path || "") as String + when /^\/test\/blog\/?$/ + draw_page(context) + when /^\/test\/blog\/set_state$/ + set_state(context) + when /^\/test\/blog\/add_post$/ + add_post(context) + else + call_next(context) + end + end + + private def draw_page(context) + TestBlogHTMLView.run(@models, context) + end + + private def add_post(context) + params = HTTP::Params.parse(context.request.body as String) + + @models.post.add_post( + name: params["name"].to_s, + slug: params["slug"].to_s, + body: params["body"].to_s, + tags: ["_blog"] + (params["tags"] || "").to_s.split(" "), + ) + + redirect(context, "/test/blog") + end + + private def set_state(context) + params = HTTP::Params.parse(context.request.body as String) + + @models.post.update_post( + post_id: params["post_id"].to_i, + state: params["state"].to_s, + ) + + redirect(context, "/test/blog") + end +end |