diff --git a/Mockingjay/Builders.swift b/Mockingjay/Builders.swift index d390a9b..880a7b0 100644 --- a/Mockingjay/Builders.swift +++ b/Mockingjay/Builders.swift @@ -46,3 +46,26 @@ public func jsonData(_ data: Data, status: Int = 200, headers: [String:String]? return http(status, headers: headers, download: .content(data))(request) } } + +public func content(_ body: String, status: Int = 200, headers: [String:String]? = nil) -> (_ request: URLRequest) -> Response { + return { (request: URLRequest) in + var headers = headers ?? [String:String]() + if headers["Content-Type"] == nil { + headers["Content-Type"] = "text/plain; charset=utf-8" + } + let data: Data = body.data(using: String.Encoding.utf8) ?? Data() + return http(status, headers: headers, download: Download.content(data as Data))(request) + } +} + +public func file(_ file: String, _ type: String = "json", status: Int = 200, headers: [String:String]? = nil) -> (_ request: URLRequest) -> Response { + return { (request: URLRequest) in + let response = HTTPURLResponse(url: request.url!, statusCode: 200, httpVersion: nil, headerFields: nil)! + if let path = Bundle.main.path(forResource: file, ofType: type) { + if let data = NSData(contentsOfFile: path) { + return content(String(data: data as Data, encoding: .utf8) ?? "", status: status, headers: headers)(request) + } + } + return .failure(NSError()) + } +}