Demo.swift 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. //
  2. // DemoServer.swift
  3. // Swifter
  4. //
  5. // Copyright (c) 2014-2016 Damian Kołakowski. All rights reserved.
  6. //
  7. import Foundation
  8. public func demoServer(_ publicDir: String) throws -> Swifter {
  9. print(publicDir)
  10. let server = try Swifter()
  11. // server["/public/:path"] = shareFilesFromDirectory(publicDir)
  12. //
  13. // server["/files/:path"] = directoryBrowser("/")
  14. //
  15. // server["/"] =
  16. // html {
  17. // "body" ~ {
  18. // "ul" ~ {
  19. // for service in server.routes {
  20. // "li" ~ {
  21. // "a(href=\(service))" ~ service
  22. // }
  23. // }
  24. // }
  25. // }
  26. // }
  27. // }
  28. //
  29. // server["/magic"] = html {
  30. // "body" ~ ("You asked for " + $0.path))
  31. // }
  32. //
  33. // server["/test/:param1/:param2"] = { r in
  34. //
  35. // html {
  36. // "body" ~ {
  37. // h3 { inner = "Address: \(r.address)" }
  38. // h3 { inner = "Url: \(r.path)" }
  39. // h3 { inner = "Method: \(r.method)" }
  40. //
  41. // h3 { inner = "Query:" }
  42. //
  43. // table(r.queryParams) { param in
  44. // tr {
  45. // td { inner = param.0 }
  46. // td { inner = param.1 }
  47. // }
  48. // }
  49. //
  50. // h3 { inner = "Headers:" }
  51. //
  52. // table(r.headers) { header in
  53. // tr {
  54. // td { inner = header.0 }
  55. // td { inner = header.1 }
  56. // }
  57. // }
  58. //
  59. // h3 { inner = "Route params:" }
  60. //
  61. // table(r.params) { param in
  62. // tr {
  63. // td { inner = param.0 }
  64. // td { inner = param.1 }
  65. // }
  66. // }
  67. // }
  68. // }
  69. // }(r)
  70. // }
  71. //
  72. // server.GET["/upload"] = scopes {
  73. // html {
  74. // "body" ~ {
  75. // "form(method=POST,action=/upload,enctype=multipart/form-data)" ~ {
  76. //
  77. // "input(name=my_file1,type=file)" ~ ""
  78. // "input(name=my_file2,type=file)" ~ ""
  79. // "input(name=my_file3,type=file)" ~ ""
  80. //
  81. // "button(type=submit)" ~ "Upload"
  82. // }
  83. // }
  84. // }
  85. // }
  86. //
  87. // server.POST["/upload"] = { r in
  88. // var response = ""
  89. // for multipart in r.parseMultiPartFormData() {
  90. // response += "Name: \(multipart.name) File name: \(multipart.fileName) Size: \(multipart.body.count)<br>"
  91. // }
  92. // return HttpResponse.ok(.html(response))
  93. // }
  94. //
  95. // server.GET["/login"] = scopes {
  96. // html {
  97. // head {
  98. // script { src = "http://cdn.staticfile.org/jquery/2.1.4/jquery.min.js" }
  99. // stylesheet { href = "http://cdn.staticfile.org/twitter-bootstrap/3.3.0/css/bootstrap.min.css" }
  100. // }
  101. // body {
  102. // h3 { inner = "Sign In" }
  103. //
  104. // form {
  105. // method = "POST"
  106. // action = "/login"
  107. //
  108. // fieldset {
  109. // input { placeholder = "E-mail"; name = "email"; type = "email"; autofocus = "" }
  110. // input { placeholder = "Password"; name = "password"; type = "password"; autofocus = "" }
  111. // a {
  112. // href = "/login"
  113. // button {
  114. // type = "submit"
  115. // inner = "Login"
  116. // }
  117. // }
  118. // }
  119. //
  120. // }
  121. // javascript {
  122. // src = "http://cdn.staticfile.org/twitter-bootstrap/3.3.0/js/bootstrap.min.js"
  123. // }
  124. // }
  125. // }
  126. // }
  127. //
  128. // server.POST["/login"] = { r in
  129. // let formFields = r.parseUrlencodedForm()
  130. // return HttpResponse.ok(.html(formFields.map({ "\($0.0) = \($0.1)" }).joined(separator: "<br>")))
  131. // }
  132. //
  133. // server["/demo"] = scopes {
  134. // html {
  135. // body {
  136. // center {
  137. // h2 { inner = "Hello Swift" }
  138. // img { src = "https://devimages.apple.com.edgekey.net/swift/images/swift-hero_2x.png" }
  139. // }
  140. // }
  141. // }
  142. // }
  143. //
  144. // server["/raw"] = { r in
  145. // return HttpResponse.raw(200, "OK", ["XXX-Custom-Header": "value"], { try $0.write([UInt8]("test".utf8)) })
  146. // }
  147. //
  148. // server["/redirect"] = { r in
  149. // return .movedPermanently("http://www.google.com")
  150. // }
  151. //
  152. // server["/long"] = { r in
  153. // var longResponse = ""
  154. // for k in 0..<1000 { longResponse += "(\(k)),->" }
  155. // return .ok(.html(longResponse))
  156. // }
  157. //
  158. // server["/wildcard/*/test/*/:param"] = { r in
  159. // return .ok(.html(r.path))
  160. // }
  161. //
  162. // server["/stream"] = { r in
  163. // return HttpResponse.raw(200, "OK", nil, { w in
  164. // for i in 0...100 {
  165. // try w.write([UInt8]("[chunk \(i)]".utf8))
  166. // }
  167. // })
  168. // }
  169. //
  170. // server["/websocket-echo"] = websocket({ (session, text) in
  171. // session.writeText(text)
  172. // }, { (session, binary) in
  173. // session.writeBinary(binary)
  174. // })
  175. //
  176. // server.notFoundHandler = { r in
  177. // return .movedPermanently("https://github.com/404")
  178. // }
  179. //
  180. // server.middleware.append { r in
  181. // print("Middleware: \(r.address) -> \(r.method) -> \(r.path)")
  182. // return nil
  183. // }
  184. return server
  185. }