-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
🛠 Issue
이번에 4차과제를 하면서 반복되는 judgeStatus 메서드를 하나로 통일할 수 있도록 아래와 같이 만들어봤는데 어떻게 생각하시나용?
@hyun99999 @yangsubinn
func myRoomCertiChangeFetch(roomID: Int, lastID: Int, size: Int, completion: @escaping (NetworkResult<Any>) -> Void) {
userProvider.request(.myRoomCertiChangeFetch(roomID: roomID, lastID: lastID, size: size)) { (result) in
switch result {
case .success(let response):
let statusCode = response.statusCode
let data = response.data
let networkResult = self.judeStatus(by: statusCode, data, type: MyRoomCertification.self)
completion(networkResult)
case .failure(let err):
print(err)
}
}
}
private func judgeStatus<T: Codable>(by statusCode: Int, _ data: Data, type: T.Type) -> NetworkResult<Any> {
let decoder = JSONDecoder()
guard let decodedData = try? decoder.decode(GenericResponse<T>.self, from: data)
else { return .pathErr }
switch statusCode {
case 200:
return .success(decodedData.data ?? "None-Data")
case 400..<500:
return .requestErr(decodedData.message)
case 500:
return .serverErr
default:
return .networkFail
}
}
📝 To-do
- [ ]
hyun99999
Metadata
Metadata
Assignees
Labels
No labels