// // DemoServer.swift // Swifter // Copyright (c) 2014 Damian KoĊ‚akowski. All rights reserved. // import Foundation func demoServer(publicDir: String?) -> HttpServer { let server = HttpServer() if let publicDir = publicDir { server["/resources/(.+)"] = HttpHandlers.directory(publicDir) } server["/files(.+)"] = HttpHandlers.directoryBrowser("~/") server["/magic"] = { .OK(.HTML("You asked for " + $0.url)) } server["/test"] = { request in var headersInfo = "" for (name, value) in request.headers { headersInfo += "\(name) : \(value)
" } var queryParamsInfo = "" for (name, value) in request.urlParams { queryParamsInfo += "\(name) : \(value)
" } return .OK(.HTML("

Address: \(request.address)

Url:

\(request.url)

Method: \(request.method)

Headers:

\(headersInfo)

Query:

\(queryParamsInfo)")) } server["/params/(.+)/(.+)"] = { request in var capturedGroups = "" for (index, group) in request.capturedUrlGroups.enumerate() { capturedGroups += "Expression group \(index) : \(group)
" } return .OK(.HTML("Url: \(request.url)
Method: \(request.method)
\(capturedGroups)")) } server["/json"] = { request in return .OK(.JSON(["posts" : [[ "id" : 1, "message" : "hello world"],[ "id" : 2, "message" : "sample message"]], "new_updates" : false])) } server["/redirect"] = { request in return .MovedPermanently("http://www.google.com") } server["/long"] = { request in var longResponse = "" for k in 0..<1000 { longResponse += "(\(k)),->" } return .OK(.HTML(longResponse)) } server["/demo"] = { request in return .OK(.HTML("

Hello Swift

" + "
" + "
")) } server["/login"] = { request in switch request.method.uppercaseString { case "GET": if let rootDir = publicDir { if let html = NSData(contentsOfFile:"\(rootDir)/login.html") { return .RAW(200, html) } else { return .NotFound } } break; case "POST": if let body = request.body { return .OK(.HTML(body)) } else { return .OK(.HTML("No POST params.")) } default: return .NotFound } return .NotFound } server["/"] = { request in var listPage = "Available services:
" return .OK(.HTML(listPage)) } return server }