post.d 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. module post;
  2. import collie.codec.http;
  3. import collie.codec.http.server;
  4. import collie.utils.vector;
  5. import request;
  6. import std.json;
  7. import std.typecons;
  8. import std.exception;
  9. final class PostHandler : BaseHandler
  10. {
  11. override void onEOM() nothrow
  12. {
  13. collectException({
  14. switch(_header.getPath)
  15. {
  16. case "/json":
  17. json();
  18. break;
  19. case "/plaintext":
  20. plaintext();
  21. break;
  22. default:
  23. index();
  24. break;
  25. }
  26. }());
  27. }
  28. void index()
  29. {
  30. auto build = scoped!ResponseBuilder(_downstream);
  31. build.status(200,HTTPMessage.statusText(200));
  32. build.setBody(cast(ubyte[])"Hello, World!");
  33. build.header(HTTPHeaderCode.CONTENT_TYPE,"text/plain");
  34. build.header(HTTPHeaderCode.DATE, printDate);
  35. build.sendWithEOM();
  36. }
  37. void json()
  38. {
  39. JSONValue js;
  40. js["message"] = "Hello, World!";
  41. auto build = scoped!ResponseBuilder(_downstream);
  42. build.status(200,HTTPMessage.statusText(200));
  43. build.setBody(cast(ubyte[])(js.toString));
  44. build.header(HTTPHeaderCode.CONTENT_TYPE,"application/json");
  45. build.header(HTTPHeaderCode.DATE, printDate);
  46. build.sendWithEOM();
  47. }
  48. void plaintext()
  49. {
  50. auto build = scoped!ResponseBuilder(_downstream);
  51. build.status(200,HTTPMessage.statusText(200));
  52. build.setBody(cast(ubyte[])"Hello, World!");
  53. build.header(HTTPHeaderCode.CONTENT_TYPE,"text/plain");
  54. build.header(HTTPHeaderCode.DATE, printDate);
  55. build.sendWithEOM();
  56. }
  57. }