Skip to content
This repository was archived by the owner on Sep 11, 2022. It is now read-only.

Commit 6a9bf25

Browse files
committed
although it's unusual to see 200 without any response, it's still possible to see those kinds of result. this will prevent from crashing due to force unwrapping of the data!
1 parent 15ebb5b commit 6a9bf25

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

Sources/RxRetroSwift/Services/RequestCaller.swift

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,12 @@ public class RequestCaller{
3838
let statusCode = httpResponse.statusCode
3939

4040
do {
41+
let _data = data ?? Data()
4142
if (200...399).contains(statusCode) {
42-
let objs = try _self.decoder.decode(ItemModel.self, from: data!)
43+
let objs = try _self.decoder.decode(ItemModel.self, from: _data)
4344
observer.onNext(Result.successful(objs))
4445
} else {
45-
var error = try _self.decoder.decode(DecodableErrorModel.self, from: data!)
46+
var error = try _self.decoder.decode(DecodableErrorModel.self, from: _data)
4647
error.errorCode = statusCode
4748
observer.onNext(Result.failure(error))
4849
}
@@ -71,16 +72,16 @@ public class RequestCaller{
7172

7273
let task = _self.urlSession
7374
.dataTask(with: request) { (data, response, error) in
74-
75+
let _data = data ?? Data()
7576
if let httpResponse = response as? HTTPURLResponse{
7677
let statusCode = httpResponse.statusCode
7778

7879
do {
7980
if (200...399).contains(statusCode) {
80-
let plainResponse = RawResponse(statusCode: statusCode, data: data)
81+
let plainResponse = RawResponse(statusCode: statusCode, data: _data)
8182
observer.onNext(Result.successful(plainResponse))
8283
} else {
83-
var error = try _self.decoder.decode(DecodableErrorModel.self, from: data!)
84+
var error = try _self.decoder.decode(DecodableErrorModel.self, from: _data)
8485
error.errorCode = statusCode
8586
observer.onNext(Result.failure(error))
8687
}

0 commit comments

Comments
 (0)