Kaynağa Gözat

demo handlers moved to DemoSerever

Damian Kołakowski 11 yıl önce
ebeveyn
işleme
3b2a068e16

+ 54 - 0
Common/DemoServer.swift

@@ -0,0 +1,54 @@
+//
+//  DemoServer.swift
+//  Swifter
+//
+//  Created by Damian Kolakowski on 14/11/14.
+//  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
+//
+
+import Foundation
+
+func demoServer() -> HttpServer {
+    let server = HttpServer()
+    server["/test"] = { request in
+        var headersInfo = ""
+        for (name, value) in request.headers {
+            headersInfo += "\(name) : \(value)<br>"
+        }
+        let response = "<html><body>Url: \(request.url)<br>Method: \(request.method)<br>\(headersInfo)</body></html>"
+        return .OK(.RAW(response))
+    }
+    server["/params/(.+)/(.+)"] = { request in
+        var capturedGroupsIngo = ""
+        for (index, group) in enumerate(request.capturedUrlGroups) {
+            capturedGroupsIngo += "Expression group \(index) : \(group)<br>"
+        }
+        let response = "<html><body>Url: \(request.url)<br>Method: \(request.method)<br>\(capturedGroupsIngo)</body></html>"
+        return .OK(.RAW(response))
+    }
+    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(.RAW(longResponse))
+    }
+    server["/demo"] = { request in
+        return .OK(.RAW("<html><body><center><h2>Hello Swift</h2>" +
+            "<img src=\"https://devimages.apple.com.edgekey.net/swift/images/swift-hero_2x.png\"/><br>" +
+            "</center></body></html>"))
+    }
+    server["/"] = { request in
+        var listPage = "<html><body>Available services:<br><ul>"
+        for item in server.routes() {
+            listPage += "<li><a href=\"\(item)\">\(item)</a></li>"
+        }
+        listPage += "</ul></body></html>"
+        return .OK(.RAW(listPage))
+    }
+    return server
+}

+ 2 - 2
Common/HttpServer.swift

@@ -73,7 +73,7 @@ class HttpServer
                         while let request = parser.nextHttpRequest(socket) {
                             let keepAlive = parser.supportsKeepAlive(request.headers)
                             if let (expression, handler) = self.findHandler(request.url) {
-                                let capturedUrlsGroups = self.captureGroups(expression, value: request.url)
+                                let capturedUrlsGroups = self.captureExpressionGroups(expression, value: request.url)
                                 let updatedRequest = HttpRequest(url: request.url, method: request.method, headers: request.headers, body: request.body, capturedUrlGroups: capturedUrlsGroups)
                                 HttpServer.writeResponse(socket, response: handler(updatedRequest), keepAlive: keepAlive)
                             } else {
@@ -97,7 +97,7 @@ class HttpServer
         }).first
     }
     
-    func captureGroups(expression: NSRegularExpression, value: String) -> [String] {
+    func captureExpressionGroups(expression: NSRegularExpression, value: String) -> [String] {
         var capturedGroups = [String]()
         if let result = expression.firstMatchInString(value, options: matchingOptions, range: NSMakeRange(0, value.lengthOfBytesUsingEncoding(NSASCIIStringEncoding))) {
             let nsValue: NSString = value

+ 6 - 0
Swifter.xcodeproj/project.pbxproj

@@ -28,6 +28,8 @@
 		7CA4815C19A2F6A60030B30D /* HttpRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CA4815A19A2F6A60030B30D /* HttpRequest.swift */; };
 		7CB102DA1A1664B200CBA3B4 /* HttpHandlers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CB102D91A1664B200CBA3B4 /* HttpHandlers.swift */; };
 		7CB102DB1A16657200CBA3B4 /* HttpHandlers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CB102D91A1664B200CBA3B4 /* HttpHandlers.swift */; };
+		7CB102DD1A167FFA00CBA3B4 /* DemoServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CB102DC1A167FFA00CBA3B4 /* DemoServer.swift */; };
+		7CB102DE1A1680EA00CBA3B4 /* DemoServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CB102DC1A167FFA00CBA3B4 /* DemoServer.swift */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXCopyFilesBuildPhase section */
@@ -60,6 +62,7 @@
 		7CA4815719A2EF2B0030B30D /* test.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = test.json; sourceTree = "<group>"; };
 		7CA4815A19A2F6A60030B30D /* HttpRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpRequest.swift; sourceTree = "<group>"; };
 		7CB102D91A1664B200CBA3B4 /* HttpHandlers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpHandlers.swift; sourceTree = "<group>"; };
+		7CB102DC1A167FFA00CBA3B4 /* DemoServer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DemoServer.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -146,6 +149,7 @@
 				7CB102D91A1664B200CBA3B4 /* HttpHandlers.swift */,
 				7CA4814C19A2EED00030B30D /* HttpServer.swift */,
 				7CA4814D19A2EED00030B30D /* Socket.swift */,
+				7CB102DC1A167FFA00CBA3B4 /* DemoServer.swift */,
 			);
 			path = Common;
 			sourceTree = "<group>";
@@ -252,6 +256,7 @@
 				7C6A510E1A149859004924B5 /* ActiveRecord.swift in Sources */,
 				7CA4815019A2EED00030B30D /* HttpResponse.swift in Sources */,
 				7CB102DA1A1664B200CBA3B4 /* HttpHandlers.swift in Sources */,
+				7CB102DD1A167FFA00CBA3B4 /* DemoServer.swift in Sources */,
 				7C839B7619422CFF003A6950 /* ViewController.swift in Sources */,
 				7CA4815419A2EED00030B30D /* Socket.swift in Sources */,
 				7CA4815219A2EED00030B30D /* HttpServer.swift in Sources */,
@@ -266,6 +271,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				7CA4815119A2EED00030B30D /* HttpResponse.swift in Sources */,
+				7CB102DE1A1680EA00CBA3B4 /* DemoServer.swift in Sources */,
 				7CA4814F19A2EED00030B30D /* HttpParser.swift in Sources */,
 				7CA4815519A2EED00030B30D /* Socket.swift in Sources */,
 				7C6A510F1A149859004924B5 /* ActiveRecord.swift in Sources */,

BIN
Swifter.xcodeproj/project.xcworkspace/xcuserdata/damiankolakowski.xcuserdatad/UserInterfaceState.xcuserstate


+ 16 - 0
Swifter.xcodeproj/xcuserdata/damiankolakowski.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -443,5 +443,21 @@
             landmarkType = "5">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Common/DemoServer.swift"
+            timestampString = "437682434.3778"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "43"
+            endingLineNumber = "43"
+            landmarkName = "demoServer()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 1 - 33
Swifter/AppDelegate.swift

@@ -13,44 +13,12 @@ import UIKit
 class AppDelegate: UIResponder, UIApplicationDelegate {
     
     var window: UIWindow?
-    let server: HttpServer = HttpServer()
+    let server = demoServer()
     
     func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
         if let resDir = NSBundle.mainBundle().resourcePath {
             server["/resources/(.+)"] = HttpHandlers.directory(resDir)
         }
-        server["/test"] = { request in
-            var headersInfo = ""
-            for (name, value) in request.headers {
-                headersInfo += "\(name) : \(value)<br>"
-            }
-            let response = "<html><body>Url: \(request.url)<br>Method: \(request.method)<br>\(headersInfo)</body></html>"
-            return .OK(.RAW(response))
-        }
-        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(.RAW(longResponse))
-        }
-        server["/demo"] = { request in
-            return .OK(.RAW("<html><body><center><h2>Hello Swift</h2>" +
-                "<img src=\"https://devimages.apple.com.edgekey.net/swift/images/swift-hero_2x.png\"/><br>" +
-                "<h4>\(UIDevice().name), \(UIDevice().systemVersion)</h4></center></body></html>"))
-        }
-        server["/"] = { request in
-            var listPage = "<html><body>Available services:<br><ul>"
-            for item in self.server.routes() {
-                listPage += "<li><a href=\"\(item)\">\(item)</a></li>"
-            }
-            listPage += "</ul></body></html>"
-            return .OK(.RAW(listPage))
-        }
         var error: NSError?
         if !server.start(error: &error) {
             println("Server start error: \(error)")

+ 1 - 34
SwifterOSX/main.swift

@@ -8,43 +8,10 @@
 
 import Foundation
 
-let server = HttpServer()
+let server = demoServer()
 
 server["/resources/(.+)"] = HttpHandlers.directory("~/")
 
-server["/test"] = { request in
-    var headersInfo = ""
-    for (name, value) in request.headers {
-        headersInfo += "\(name) : \(value)<br>"
-    }
-    let response = "<html><body>Url: \(request.url)<br>Method: \(request.method)<br>\(headersInfo)</body></html>"
-    return .OK(.RAW(response))
-}
-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(.RAW(longResponse))
-}
-server["/demo"] = { request in
-    return .OK(.RAW("<html><body><center><h2>Hello Swift</h2>" +
-        "<img src=\"https://devimages.apple.com.edgekey.net/swift/images/swift-hero_2x.png\"/><br>" +
-        "<h4>\(NSHost.currentHost().localizedName)</h4></center></body></html>"))
-}
-server["/"] = { request in
-    var listPage = "<html><body>Available services:<br><ul>"
-    for item in server.routes() {
-        listPage += "<li><a href=\"\(item)\">\(item)</a></li>"
-    }
-    listPage += "</ul></body></html>"
-    return .OK(.RAW(listPage))
-}
-
 var error: NSError?
 
 if !server.start(error: &error) {