Skip to content

[Refactor] JudgeStatus 메서드 개선 #620

@L-j-h-c

Description

@L-j-h-c

🛠 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

  • [ ]

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions