Ver código fonte

Query params parsing switched to map/slice functions.

Damian Kołakowski 11 anos atrás
pai
commit
dba3a84bad

+ 1 - 1
Common/DemoServer.swift

@@ -13,7 +13,7 @@ func demoServer(publicDir: String?) -> HttpServer {
     if let publicDir = publicDir {
         server["/resources/(.+)"] = HttpHandlers.directory(publicDir)
     }
-    server["/magic"] = { .OK(.HTML("You called: " + $0.url)) }
+    server["/magic"] = { .OK(.HTML("You asked for " + $0.url)) }
     server["/test"] = { request in
         var headersInfo = ""
         for (name, value) in request.headers {

+ 6 - 10
Common/HttpParser.swift

@@ -40,17 +40,13 @@ class HttpParser {
     }
     
     private func extractUrlParams(url: String) -> [(String, String)] {
-        var result = [(String, String)]()
-        let tokens = url.componentsSeparatedByString("?")
-        if tokens.count >= 2 {
-            for pair in tokens[1].componentsSeparatedByString("&") {
-                let keyAndValue = pair.componentsSeparatedByString("=")
-                if keyAndValue.count >= 2 {
-                    result.append((keyAndValue[0], keyAndValue[1]))
-                }
-            }
+        if let query = split(url, { $0 == "?" }).last {
+            return map(split(query, { $0 == "&" }), { (param:String) -> (String, String) in
+                let tokens = split(param, { $0 == "=" })
+                return tokens.count >= 2 ? (tokens.first!, tokens.last!) : ("", "")
+            })
         }
-        return result
+        return []
     }
     
     private func nextBody(socket: CInt, size: Int , error:NSErrorPointer) -> String? {

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


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

@@ -406,11 +406,11 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "Common/DemoServer.swift"
-            timestampString = "438134997.779982"
+            timestampString = "438138106.626601"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "49"
-            endingLineNumber = "49"
+            startingLineNumber = "53"
+            endingLineNumber = "53"
             landmarkName = "demoServer(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -438,11 +438,11 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "Common/DemoServer.swift"
-            timestampString = "438134997.779982"
+            timestampString = "438138106.626601"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "51"
-            endingLineNumber = "51"
+            startingLineNumber = "55"
+            endingLineNumber = "55"
             landmarkName = "demoServer(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -454,11 +454,11 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "Common/DemoServer.swift"
-            timestampString = "438134997.779982"
+            timestampString = "438138106.626601"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "63"
-            endingLineNumber = "63"
+            startingLineNumber = "67"
+            endingLineNumber = "67"
             landmarkName = "demoServer(_:)"
             landmarkType = "7">
          </BreakpointContent>