Browse Source

Update Response debugDescription (#2976)

* feat (Response) : update debugDescription

* feat (Response) : update debugDescription of DownloadResponse

* feat (Response) : update

Update according to recommendations

* fix (Response) : fix a typo
rain2540 6 years ago
parent
commit
40cd8f08b9
1 changed files with 28 additions and 21 deletions
  1. 28 21
      Source/Response.swift

+ 28 - 21
Source/Response.swift

@@ -131,15 +131,19 @@ extension DataResponse: CustomStringConvertible, CustomDebugStringConvertible {
     /// The debug textual representation used when written to an output stream, which includes the URL request, the URL
     /// response, the server data, the response serialization result and the timeline.
     public var debugDescription: String {
-        var output: [String] = []
-
-        output.append(request != nil ? "[Request]: \(request!.httpMethod ?? "GET") \(request!)" : "[Request]: nil")
-        output.append(response != nil ? "[Response]: \(response!)" : "[Response]: nil")
-        output.append("[Data]: \(data?.count ?? 0) bytes")
-        output.append("[Result]: \(result.debugDescription)")
-        output.append("[Timeline]: \(timeline.debugDescription)")
-
-        return output.joined(separator: "\n")
+        let requestDescription = request.map { "\($0.httpMethod ?? "GET") \($0)"} ?? "nil"
+        let requestBody = request?.httpBody.map { String(decoding: $0, as: UTF8.self) } ?? "None"
+        let responseDescription = response.map { "\($0)" } ?? "nil"
+        let responseBody = data.map { String(decoding: $0, as: UTF8.self) } ?? "None"
+        
+        return """
+        [Request]: \(requestDescription)
+        [Request Body]: \n\(requestBody)
+        [Response]: \(responseDescription)
+        [Response Body]: \n\(responseBody)
+        [Result]: \(result)
+        [Timeline]: \(timeline.debugDescription)
+        """
     }
 }
 
@@ -383,18 +387,21 @@ extension DownloadResponse: CustomStringConvertible, CustomDebugStringConvertibl
     /// The debug textual representation used when written to an output stream, which includes the URL request, the URL
     /// response, the temporary and destination URLs, the resume data, the response serialization result and the
     /// timeline.
-    public var debugDescription: String {
-        var output: [String] = []
-
-        output.append(request != nil ? "[Request]: \(request!.httpMethod ?? "GET") \(request!)" : "[Request]: nil")
-        output.append(response != nil ? "[Response]: \(response!)" : "[Response]: nil")
-        output.append("[TemporaryURL]: \(temporaryURL?.path ?? "nil")")
-        output.append("[DestinationURL]: \(destinationURL?.path ?? "nil")")
-        output.append("[ResumeData]: \(resumeData?.count ?? 0) bytes")
-        output.append("[Result]: \(result.debugDescription)")
-        output.append("[Timeline]: \(timeline.debugDescription)")
-
-        return output.joined(separator: "\n")
+    public var debugDescription: String {     
+        let requestDescription = request.map { "\($0.httpMethod ?? "GET") \($0)"} ?? "nil"
+        let requestBody = request?.httpBody.map { String(decoding: $0, as: UTF8.self) } ?? "None"
+        let responseDescription = response.map { "\($0)" } ?? "nil"
+        
+        return """
+        [Request]: \(requestDescription)
+        [Request Body]: \n\(requestBody)
+        [Response]: \(responseDescription)
+        [TemporaryURL]: \(temporaryURL?.path ?? "nil")
+        [DestinationURL]: \(destinationURL?.path ?? "nil")
+        [ResumeData]: \(resumeData?.count ?? 0) bytes
+        [Result]: \(result)
+        [Timeline]: \(timeline.debugDescription)
+        """
     }
 }