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