소스 검색

Merge pull request #352 from csch/stable

Add .movedTemporarily case (HTTP 307) to HttpResponse
Adam 7 년 전
부모
커밋
febcee7cab
2개의 변경된 파일10개의 추가작업 그리고 1개의 파일을 삭제
  1. 5 1
      Sources/DemoServer.swift
  2. 5 0
      Sources/HttpResponse.swift

+ 5 - 1
Sources/DemoServer.swift

@@ -154,9 +154,13 @@ public func demoServer(_ publicDir: String) -> HttpServer {
         return HttpResponse.raw(200, "OK", ["XXX-Custom-Header": "value"], { try $0.write([UInt8]("test".utf8)) })
     }
     
-    server["/redirect"] = { r in
+    server["/redirect/permanently"] = { r in
         return .movedPermanently("http://www.google.com")
     }
+    
+    server["/redirect/temporarily"] = { r in
+        return .movedTemporarily("http://www.google.com")
+    }
 
     server["/long"] = { r in
         var longResponse = ""

+ 5 - 0
Sources/HttpResponse.swift

@@ -82,6 +82,7 @@ public enum HttpResponse {
     case switchProtocols([String: String], (Socket) -> Void)
     case ok(HttpResponseBody), created, accepted
     case movedPermanently(String)
+    case movedTemporarily(String)
     case badRequest(HttpResponseBody?), unauthorized, forbidden, notFound
     case internalServerError
     case raw(Int, String, [String:String]?, ((HttpResponseBodyWriter) throws -> Void)? )
@@ -93,6 +94,7 @@ public enum HttpResponse {
         case .created                 : return 201
         case .accepted                : return 202
         case .movedPermanently        : return 301
+        case .movedTemporarily        : return 307
         case .badRequest(_)           : return 400
         case .unauthorized            : return 401
         case .forbidden               : return 403
@@ -109,6 +111,7 @@ public enum HttpResponse {
         case .created                  : return "Created"
         case .accepted                 : return "Accepted"
         case .movedPermanently         : return "Moved Permanently"
+        case .movedTemporarily         : return "Moved Temporarily"
         case .badRequest(_)            : return "Bad Request"
         case .unauthorized             : return "Unauthorized"
         case .forbidden                : return "Forbidden"
@@ -133,6 +136,8 @@ public enum HttpResponse {
             }
         case .movedPermanently(let location):
             headers["Location"] = location
+        case .movedTemporarily(let location):
+            headers["Location"] = location
         case .raw(_, _, let rawHeaders, _):
             if let rawHeaders = rawHeaders {
                 for (k, v) in rawHeaders {