Browse Source

Added podspec,

Made HttpServer, HttpRequest and HttpResponse public.
Jacek Zapart 11 years ago
parent
commit
aab7fea041
4 changed files with 36 additions and 21 deletions
  1. 8 8
      Common/HttpRequest.swift
  2. 2 2
      Common/HttpResponse.swift
  3. 14 11
      Common/HttpServer.swift
  4. 12 0
      Swifter.podspec

+ 8 - 8
Common/HttpRequest.swift

@@ -6,12 +6,12 @@
 
 import Foundation
 
-struct HttpRequest {    
-    let url: String
-    let urlParams: [(String, String)] // http://stackoverflow.com/questions/1746507/authoritative-position-of-duplicate-http-get-query-keys
-    let method: String
-    let headers: [String: String]
-	let body: String?
-    var capturedUrlGroups: [String]
-    var address: String?
+public struct HttpRequest {
+    public let url: String
+    public let urlParams: [(String, String)] // http://stackoverflow.com/questions/1746507/authoritative-position-of-duplicate-http-get-query-keys
+    public let method: String
+    public let headers: [String: String]
+	public let body: String?
+    public var capturedUrlGroups: [String]
+    public var address: String?
 }

+ 2 - 2
Common/HttpResponse.swift

@@ -6,7 +6,7 @@
 
 import Foundation
 
-enum HttpResponseBody {
+public enum HttpResponseBody {
     
     case JSON(AnyObject)
     case XML(AnyObject)
@@ -51,7 +51,7 @@ enum HttpResponseBody {
     }
 }
 
-enum HttpResponse {
+public enum HttpResponse {
     
     case OK(HttpResponseBody), Created, Accepted
     case MovedPermanently(String)

+ 14 - 11
Common/HttpServer.swift

@@ -6,9 +6,9 @@
 
 import Foundation
 
-class HttpServer
+public class HttpServer
 {
-    typealias Handler = HttpRequest -> HttpResponse
+    public typealias Handler = HttpRequest -> HttpResponse
     
     var handlers: [(expression: NSRegularExpression, handler: Handler)] = []
     var clientSockets: Set<CInt> = []
@@ -18,7 +18,10 @@ class HttpServer
     let matchingOptions = NSMatchingOptions(rawValue: 0)
     let expressionOptions = NSRegularExpressionOptions(rawValue: 0)
     
-    subscript (path: String) -> Handler? {
+    public init(){
+    }
+    
+    public subscript (path: String) -> Handler? {
         get {
             return nil
         }
@@ -34,9 +37,9 @@ class HttpServer
         }
     }
     
-    func routes() -> [String] { return handlers.map { $0.0.pattern } }
+    public func routes() -> [String] { return handlers.map { $0.0.pattern } }
     
-    func start(listenPort: in_port_t = 8080, error: NSErrorPointer = nil) -> Bool {
+    public func start(listenPort: in_port_t = 8080, error: NSErrorPointer = nil) -> Bool {
         stop()
         if let socket = Socket.tcpForListen(listenPort, error: error) {
             self.acceptSocket = socket
@@ -73,13 +76,13 @@ class HttpServer
         return false
     }
     
-    func findHandler(url:String) -> (NSRegularExpression, Handler)? {
+    public func findHandler(url:String) -> (NSRegularExpression, Handler)? {
         return self.handlers.filter {
             $0.0.numberOfMatchesInString(url, options: self.matchingOptions, range: HttpServer.asciiRange(url)) > 0
         }.first
     }
     
-    func captureExpressionGroups(expression: NSRegularExpression, value: String) -> [String] {
+    public func captureExpressionGroups(expression: NSRegularExpression, value: String) -> [String] {
         var capturedGroups = [String]()
         if let result = expression.firstMatchInString(value, options: matchingOptions, range: HttpServer.asciiRange(value)) {
             let nsValue: NSString = value
@@ -92,7 +95,7 @@ class HttpServer
         return capturedGroups
     }
     
-    func stop() {
+    public func stop() {
         Socket.release(acceptSocket)
         acceptSocket = -1
         HttpServer.lock(self.clientSocketsLock) {
@@ -103,17 +106,17 @@ class HttpServer
         }
     }
     
-    class func asciiRange(value: String) -> NSRange {
+    public class func asciiRange(value: String) -> NSRange {
         return NSMakeRange(0, value.lengthOfBytesUsingEncoding(NSASCIIStringEncoding))
     }
     
-    class func lock(handle: AnyObject, closure: () -> ()) {
+    public class func lock(handle: AnyObject, closure: () -> ()) {
         objc_sync_enter(handle)
         closure()
         objc_sync_exit(handle)
     }
     
-    class func respond(socket: CInt, response: HttpResponse, keepAlive: Bool) {
+    public class func respond(socket: CInt, response: HttpResponse, keepAlive: Bool) {
         Socket.writeUTF8(socket, string: "HTTP/1.1 \(response.statusCode()) \(response.reasonPhrase())\r\n")
         if let body = response.body() {
             Socket.writeASCII(socket, string: "Content-Length: \(body.length)\r\n")

+ 12 - 0
Swifter.podspec

@@ -0,0 +1,12 @@
+Pod::Spec.new do |s|
+  s.name             = "Swifter"
+  s.version          = "1.0.0"
+  s.summary          = "Tiny http server engine written in Swift programming language."
+  s.homepage         = "https://github.com/glock45/swifter"
+  s.license          = { :type => 'Copyright', :file => 'LICENSE' }
+  s.author           = { "Damian Kołakowski" => "kolakowski.damian@gmail.com" }
+  s.source           = { :git => "https://github.com/glock45/swifter.git"}
+  s.platform         = :ios
+  s.requires_arc     = true
+  s.source_files     = 'Common/*.{h,m,swift}'
+end