main.swift 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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("/hello") { _, _, responder in
  17. responder(200)
  18. }
  19. server.get("/stream") { _, request, responder in
  20. responder(WebsocketResponse(request) { event in
  21. switch event {
  22. case .text(let value):
  23. print("Got text message: \(value)")
  24. case .binary(let value):
  25. print("Got binary message: \(value)")
  26. case .disconnected(_, _):
  27. print("Peer disconneted")
  28. }
  29. })
  30. }
  31. server.get("/background") { _, _, closure in
  32. if #available(OSXApplicationExtension 10.10, *) {
  33. DispatchQueue.global(qos: .background).async {
  34. // Simulate http request to other service or a database query.
  35. sleep(2)
  36. closure(TextResponse(200, "Waited 2 secs for a response."))
  37. }
  38. } else {
  39. // Fallback on earlier versions
  40. }
  41. }
  42. server.post("/post") { _, request, responder in
  43. let post = request.parseUrlencodedForm()
  44. responder(html(200) {
  45. "body" ~ {
  46. "h4" ~ "You sent: "
  47. "ul" ~ {
  48. post.forEach { item in
  49. "li" ~ "\(item.0) -> \(item.1)"
  50. }
  51. }
  52. }
  53. })
  54. }
  55. while true {
  56. try server.loop()
  57. }