diff --git a/Source/Timberjack.swift b/Source/Timberjack.swift index 0917ca8..502c426 100644 --- a/Source/Timberjack.swift +++ b/Source/Timberjack.swift @@ -148,6 +148,11 @@ open class Timberjack: URLProtocol { self.logHeaders(headers as [String : AnyObject]) } } + + if let body = request.body(), + let bodyString = String(data: body, encoding: .utf8) { + print("Body: \(bodyString)") + } } open func logResponse(_ response: URLResponse, data: Data? = nil) { @@ -199,3 +204,39 @@ open class Timberjack: URLProtocol { print("]") } } + +fileprivate extension URLRequest { + + func body() -> Data? { + var data: Data? + + if let body = self.httpBody { + data = body + } else if let stream = self.httpBodyStream { + stream.open() + data = stream.readData() + stream.close() + } + + return data + } +} + +fileprivate extension InputStream { + + func readData() -> Data { + let maxLength = 4096 + + var data = Data() + + var buffer = Array(repeating: 0, count:maxLength) + + var bytesRead = self.read(&buffer, maxLength: maxLength) + while bytesRead > 0 { + data.append(&buffer, count: bytesRead) + bytesRead = self.read(&buffer, maxLength: maxLength) + } + + return data + } +} diff --git a/Tests/TimberjackTests.swift b/Tests/TimberjackTests.swift index 1db2322..a42781d 100644 --- a/Tests/TimberjackTests.swift +++ b/Tests/TimberjackTests.swift @@ -28,7 +28,7 @@ class TimberjackTests: XCTestCase { func testPerformanceExample() { // This is an example of a performance test case. - self.measureBlock() { + self.measure() { // Put the code you want to measure the time of here. } } diff --git a/Timberjack.xcodeproj/project.pbxproj b/Timberjack.xcodeproj/project.pbxproj index 6bc2db1..c2f778e 100644 --- a/Timberjack.xcodeproj/project.pbxproj +++ b/Timberjack.xcodeproj/project.pbxproj @@ -171,6 +171,7 @@ }; A1D265981B9999E3000D8735 = { CreatedOnToolsVersion = 6.4; + LastSwiftMigration = 0830; }; }; }; @@ -378,6 +379,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "co.rockettown.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -389,6 +391,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "co.rockettown.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; }; name = Release; };