HttpServer.swift 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. //
  2. // HttpServer2.swift
  3. // Swifter
  4. //
  5. // Created by Damian Kolakowski on 17/12/15.
  6. // Copyright © 2015 Damian Kołakowski. All rights reserved.
  7. //
  8. import Foundation
  9. public class HttpServer: HttpServerIO {
  10. public static let VERSION = "1.0.6"
  11. private let router = HttpRouter()
  12. public override init() {
  13. self.DELETE = Route(method: "DELETE", router: self.router)
  14. self.UPDATE = Route(method: "UPDATE", router: self.router)
  15. self.HEAD = Route(method: "HEAD", router: self.router)
  16. self.POST = Route(method: "POST", router: self.router)
  17. self.GET = Route(method: "GET", router: self.router)
  18. self.PUT = Route(method: "PUT", router: self.router)
  19. }
  20. public var DELETE, UPDATE, HEAD, POST, GET, PUT : Route;
  21. public var routes: [(method: String?, path: String)] {
  22. return router.routes();
  23. }
  24. public subscript(path: String) -> (HttpRequest -> HttpResponse)? {
  25. set {
  26. if let handler = newValue {
  27. self.router.register(nil, path: path, handler: handler)
  28. } else {
  29. self.router.unregister(nil, path: path)
  30. }
  31. }
  32. get { return nil }
  33. }
  34. public struct Route {
  35. public let method: String
  36. public let router: HttpRouter
  37. public subscript(path: String) -> (HttpRequest -> HttpResponse)? {
  38. set {
  39. if let handler = newValue {
  40. router.register(method, path: path, handler: handler)
  41. } else {
  42. router.unregister(method, path: path)
  43. }
  44. }
  45. get { return nil }
  46. }
  47. }
  48. override public func dispatch(method: String, url: String) -> ([String:String], HttpRequest -> HttpResponse) {
  49. if let handler = router.select(method, url: url) {
  50. return handler
  51. }
  52. return super.dispatch(method, url: url)
  53. }
  54. }