@@ -28,7 +28,7 @@ final class StreamingSession<ResultType: Codable>: NSObject, Identifiable, URLSe
28
28
return session
29
29
} ( )
30
30
31
- private var prevChunkBuffer = " "
31
+ private var previousChunkBuffer = " "
32
32
33
33
init ( urlRequest: URLRequest ) {
34
34
self . urlRequest = urlRequest
@@ -49,11 +49,20 @@ final class StreamingSession<ResultType: Codable>: NSObject, Identifiable, URLSe
49
49
onProcessingError ? ( self , StreamingError . unknownContent)
50
50
return
51
51
}
52
- let jsonObjects = " \( prevChunkBuffer) \( stringContent) "
52
+ processJSON ( from: stringContent)
53
+ }
54
+
55
+ }
56
+
57
+ extension StreamingSession {
58
+
59
+ private func processJSON( from stringContent: String ) {
60
+ let jsonObjects = " \( previousChunkBuffer) \( stringContent) "
53
61
. components ( separatedBy: " data: " )
54
62
. filter { $0. isEmpty == false }
55
63
. map { $0. trimmingCharacters ( in: . whitespacesAndNewlines) }
56
- prevChunkBuffer = " "
64
+
65
+ previousChunkBuffer = " "
57
66
58
67
guard jsonObjects. isEmpty == false , jsonObjects. first != streamingCompletionMarker else {
59
68
return
@@ -82,13 +91,13 @@ final class StreamingSession<ResultType: Codable>: NSObject, Identifiable, URLSe
82
91
onProcessingError ? ( self , decoded)
83
92
} catch {
84
93
if index == jsonObjects. count - 1 {
85
- // Chunk ends in a partial JSON
86
- prevChunkBuffer = " data: \( jsonContent) "
94
+ previousChunkBuffer = " data: \( jsonContent) " // Chunk ends in a partial JSON
87
95
} else {
88
96
onProcessingError ? ( self , apiError)
89
97
}
90
98
}
91
99
}
92
100
}
93
101
}
102
+
94
103
}
0 commit comments