main.swift 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //
  2. // main.swift
  3. // SwifterOSX
  4. // Copyright (c) 2015 Damian Kołakowski. All rights reserved.
  5. //
  6. import Foundation
  7. import Swifter
  8. let server = try Swifter()
  9. server.get("/") { _, request, responder in
  10. responder(html {
  11. "body" ~ {
  12. "h1" ~ "Hello World !"
  13. }
  14. })
  15. }
  16. server.get("/stream") { _, request, responder in
  17. responder(WebsocketResponse(request) { event in
  18. switch event {
  19. case .text(let value):
  20. print("Got text message: \(value)")
  21. case .binary(let value):
  22. print("Got binary message: \(value)")
  23. case .disconnected(_, _):
  24. print("Peer disconneted")
  25. }
  26. })
  27. }
  28. server.get("/background") { _, _, closure in
  29. if #available(OSXApplicationExtension 10.10, *) {
  30. DispatchQueue.global(qos: .background).async {
  31. // Simulate http request to other service or a database query.
  32. sleep(2)
  33. closure(TextResponse(200, "Waited 2 secs for a response."))
  34. }
  35. } else {
  36. // Fallback on earlier versions
  37. }
  38. }
  39. server.post("/post") { _, request, responder in
  40. let post = request.parseUrlencodedForm()
  41. responder(html(200) {
  42. "body" ~ {
  43. "h4" ~ "You sent: "
  44. "ul" ~ {
  45. post.forEach { item in
  46. "li" ~ "\(item.0) -> \(item.1)"
  47. }
  48. }
  49. }
  50. })
  51. }
  52. while true {
  53. try server.loop()
  54. }