diff --git a/NADA-iOS-forRelease/Resouces/Constants/URL.swift b/NADA-iOS-forRelease/Resouces/Constants/URL.swift index ebf2a300..5df5d567 100644 --- a/NADA-iOS-forRelease/Resouces/Constants/URL.swift +++ b/NADA-iOS-forRelease/Resouces/Constants/URL.swift @@ -9,8 +9,8 @@ import Foundation extension Const { struct URL { -// static let baseURL = "https://nada-server.o-r.kr" - static let baseURL = "http://3.34.197.90" +// static let baseURL = "http://3.34.197.90" + static let baseURL = "http://3.35.107.3:8080/api/v1" static let policyURL = "https://nadaitzme.notion.site/NADA-8385054bc2e44762a62f590534b2a24d" static let serviceURL = "https://nadaitzme.notion.site/NADA-58544bc9f0a1493c94f223cab3a440d0" static let moyaURL = "https://github.com/Moya/Moya" diff --git a/NADA-iOS-forRelease/Sources/NetworkModel/GenericResponse.swift b/NADA-iOS-forRelease/Sources/NetworkModel/GenericResponse.swift index 9c7ce12f..59d491ea 100644 --- a/NADA-iOS-forRelease/Sources/NetworkModel/GenericResponse.swift +++ b/NADA-iOS-forRelease/Sources/NetworkModel/GenericResponse.swift @@ -8,20 +8,23 @@ import Foundation struct GenericResponse: Codable { - let msg: String - let timestamp: String + let error: NetworkError? + let status: Int let data: T? enum CodingKeys: String, CodingKey { - case msg - case timestamp - case data + case error + case status + case data = "result" } +} + +struct NetworkError: Codable { + let code: String + let message: String - init(from decoder: Decoder) throws { - let values = try decoder.container(keyedBy: CodingKeys.self) - msg = (try? values.decode(String.self, forKey: .msg)) ?? "" - timestamp = (try? values.decode(String.self, forKey: .timestamp)) ?? "" - data = (try? values.decode(T.self, forKey: .data)) ?? nil + enum CodingKeys: String, CodingKey { + case code + case message } } diff --git a/NADA-iOS-forRelease/Sources/NetworkModel/User/UserWithTokenRequest.swift b/NADA-iOS-forRelease/Sources/NetworkModel/User/UserWithTokenRequest.swift index e33482ce..269eaa68 100644 --- a/NADA-iOS-forRelease/Sources/NetworkModel/User/UserWithTokenRequest.swift +++ b/NADA-iOS-forRelease/Sources/NetworkModel/User/UserWithTokenRequest.swift @@ -28,3 +28,7 @@ struct Token: Codable { let grantType, accessToken, refreshToken: String let accessTokenExpiresIn: Int } + +struct AccessToken: Codable { + let accessToken: String +} diff --git a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift index a312aec5..f0c67dc5 100644 --- a/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift +++ b/NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift @@ -121,7 +121,7 @@ public class CardAPI { case 200: return .success(decodedData.data ?? "None-Data") case 400..<500: - return .requestErr(decodedData.msg) + return .requestErr(decodedData.error?.message ?? "error message") case 500: return .serverErr default: @@ -141,7 +141,7 @@ public class CardAPI { case 200: return .success(decodedData.data ?? "None-Data") case 400..<500: - return .requestErr(decodedData.msg) + return .requestErr(decodedData.error?.message ?? "error message") case 500: return .serverErr default: @@ -161,7 +161,7 @@ public class CardAPI { case 200: return .success(decodedData.data ?? "None-Data") case 400..<500: - return .requestErr(decodedData.msg) + return .requestErr(decodedData.error?.message ?? "error message") case 500: return .serverErr default: @@ -181,7 +181,7 @@ public class CardAPI { case 201: return .success(decodedData.data ?? "None-Data") case 400..<500: - return .requestErr(decodedData.msg) + return .requestErr(decodedData.error?.message ?? "error message") case 500: return .serverErr default: @@ -196,9 +196,9 @@ public class CardAPI { switch statusCode { case 200: - return .success(decodedData.msg) + return .success("") case 400..<500: - return .requestErr(decodedData.msg) + return .requestErr(decodedData.error?.message ?? "error message") case 500: return .serverErr default: diff --git a/NADA-iOS-forRelease/Sources/NetworkService/Group/GroupAPI.swift b/NADA-iOS-forRelease/Sources/NetworkService/Group/GroupAPI.swift index 0a51b19f..da927c75 100644 --- a/NADA-iOS-forRelease/Sources/NetworkService/Group/GroupAPI.swift +++ b/NADA-iOS-forRelease/Sources/NetworkService/Group/GroupAPI.swift @@ -171,7 +171,7 @@ public class GroupAPI { case 200: return .success(decodedData.data ?? "None-Data") case 400..<500: - return .requestErr(decodedData.msg) + return .requestErr(decodedData.error?.message ?? "error message") case 500: return .serverErr default: @@ -191,7 +191,7 @@ public class GroupAPI { case 200: return .success(decodedData.data ?? "None-Data") case 400..<500: - return .requestErr(decodedData.msg) + return .requestErr(decodedData.error?.message ?? "error message") case 500: return .serverErr default: @@ -207,9 +207,9 @@ public class GroupAPI { switch statusCode { case 200: - return .success(decodedData.msg) + return .success("success") case 400..<500: - return .requestErr(decodedData.msg) + return .requestErr(decodedData.error?.message ?? "error message") case 500: return .serverErr default: diff --git a/NADA-iOS-forRelease/Sources/NetworkService/User/UserAPI.swift b/NADA-iOS-forRelease/Sources/NetworkService/User/UserAPI.swift index c53a3a6a..ee2558f0 100644 --- a/NADA-iOS-forRelease/Sources/NetworkService/User/UserAPI.swift +++ b/NADA-iOS-forRelease/Sources/NetworkService/User/UserAPI.swift @@ -31,13 +31,13 @@ public class UserAPI { } } - func userSocialSignUp(request: String, completion: @escaping (NetworkResult) -> Void) { - userProvider.request(.userSocialSignUp(userID: request)) { (result) in + func userSocialSignUp(socialID: String, socialType: String, completion: @escaping (NetworkResult) -> Void) { + userProvider.request(.userSocialSignUp(socialID: socialID, socialType: socialType)) { result in switch result { case .success(let response): let statusCode = response.statusCode let data = response.data - let networkResult = self.judgeUserTokenFetchStatus(by: statusCode, data) + let networkResult = self.judgeUserSocialSignUpStatus(by: statusCode, data) completion(networkResult) case .failure(let err): @@ -78,6 +78,25 @@ public class UserAPI { } } + private func judgeUserSocialSignUpStatus(by statusCode: Int, _ data: Data) -> NetworkResult { + let decoder = JSONDecoder() + guard let decodedData = try? decoder.decode(GenericResponse.self, from: data) + else { + return .pathErr + } + + switch statusCode { + case 200: + return .success(decodedData.data ?? "None-Data") + case 400..<500: + return .requestErr(decodedData.error?.message ?? "error message") + case 500: + return .serverErr + default: + return .networkFail + } + } + private func judgeUserTokenFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { let decoder = JSONDecoder() @@ -90,7 +109,7 @@ public class UserAPI { case 200: return .success(decodedData.data ?? "None-Data") case 400..<500: - return .requestErr(decodedData.msg) + return .requestErr(decodedData.error?.message ?? "error message") case 500: return .serverErr default: @@ -125,9 +144,9 @@ public class UserAPI { switch statusCode { case 200: - return .success(decodedData.msg) + return .success("success") case 400..<500: - return .requestErr(decodedData.msg) + return .requestErr(decodedData.error?.message ?? "error message") case 500: return .serverErr default: diff --git a/NADA-iOS-forRelease/Sources/NetworkService/User/UserSevice.swift b/NADA-iOS-forRelease/Sources/NetworkService/User/UserSevice.swift index b85f1eb7..3b532395 100644 --- a/NADA-iOS-forRelease/Sources/NetworkService/User/UserSevice.swift +++ b/NADA-iOS-forRelease/Sources/NetworkService/User/UserSevice.swift @@ -10,7 +10,7 @@ import Moya enum UserSevice { case userDelete(token: String) - case userSocialSignUp(userID: String) + case userSocialSignUp(socialID: String, socialType: String) case userLogout(token: String) case userTokenReissue(request: UserReissueToken) } @@ -26,7 +26,7 @@ extension UserSevice: TargetType { case .userDelete: return "/user" case .userSocialSignUp: - return "auth/login" + return "/auth/signup" case .userLogout: return "auth/logout" case .userTokenReissue: @@ -51,8 +51,10 @@ extension UserSevice: TargetType { switch self { case .userDelete, .userLogout: return .requestPlain - case .userSocialSignUp(let userID): - return .requestParameters(parameters: ["userId": userID], encoding: JSONEncoding.default) + case .userSocialSignUp(let socialID, let socialType): + return .requestParameters(parameters: ["socialId": socialID, + "socialType": socialType], + encoding: JSONEncoding.default) case .userTokenReissue(let request): return .requestJSONEncodable(request) } diff --git a/NADA-iOS-forRelease/Sources/NetworkService/Util/UtilAPI.swift b/NADA-iOS-forRelease/Sources/NetworkService/Util/UtilAPI.swift index 91fc4e9a..39caa19e 100644 --- a/NADA-iOS-forRelease/Sources/NetworkService/Util/UtilAPI.swift +++ b/NADA-iOS-forRelease/Sources/NetworkService/Util/UtilAPI.swift @@ -41,7 +41,7 @@ public class UtilAPI { case 200: return .success(decodedData.data ?? "None-Data") case 400..<500: - return .requestErr(decodedData.msg) + return .requestErr(decodedData.error?.message ?? "error message") case 500: return .serverErr default: diff --git a/NADA-iOS-forRelease/Sources/ViewControllers/Login/LoginViewController.swift b/NADA-iOS-forRelease/Sources/ViewControllers/Login/LoginViewController.swift index 43891c68..a71c6d2c 100644 --- a/NADA-iOS-forRelease/Sources/ViewControllers/Login/LoginViewController.swift +++ b/NADA-iOS-forRelease/Sources/ViewControllers/Login/LoginViewController.swift @@ -113,7 +113,7 @@ extension LoginViewController { print(error) } else { if let userID = user?.kakaoAccount?.email { - self.postUserSignUpWithAPI(request: userID) + self.postUserSignUpWithAPI(socialID: userID, socialType: "KAKAO") UserDefaults.standard.set(false, forKey: Const.UserDefaultsKey.isAppleLogin) UserDefaults.standard.set(true, forKey: Const.UserDefaultsKey.isKakaoLogin) } @@ -136,7 +136,7 @@ extension LoginViewController { print(error) } else { if let userID = user?.kakaoAccount?.email { - self.postUserSignUpWithAPI(request: userID) + self.postUserSignUpWithAPI(socialID: userID, socialType: "KAKAO") UserDefaults.standard.set(false, forKey: Const.UserDefaultsKey.isAppleLogin) UserDefaults.standard.set(true, forKey: Const.UserDefaultsKey.isKakaoLogin) } @@ -172,7 +172,7 @@ extension LoginViewController: ASAuthorizationControllerDelegate, ASAuthorizatio case let appleIDCredential as ASAuthorizationAppleIDCredential: let userIdentifier = appleIDCredential.user - postUserSignUpWithAPI(request: userIdentifier) + postUserSignUpWithAPI(socialID: userIdentifier, socialType: "APPLE") UserDefaults.standard.set(true, forKey: Const.UserDefaultsKey.isAppleLogin) UserDefaults.standard.set(false, forKey: Const.UserDefaultsKey.isKakaoLogin) @@ -189,19 +189,15 @@ extension LoginViewController: ASAuthorizationControllerDelegate, ASAuthorizatio // MARK: - Network extension LoginViewController { - func postUserSignUpWithAPI(request: String) { - UserAPI.shared.userSocialSignUp(request: request) { response in + func postUserSignUpWithAPI(socialID: String, socialType: String) { + UserAPI.shared.userSocialSignUp(socialID: socialID, socialType: socialType) { response in switch response { case .success(let loginData): print("postUserSignUpWithAPI - success") - if let userData = loginData as? UserWithTokenRequest { - UserDefaults.standard.set(userData.user.userID, forKey: Const.UserDefaultsKey.userID) - - // TODO: - KeyChain 적용 - UserDefaults.standard.set(userData.user.token.accessToken, forKey: Const.UserDefaultsKey.accessToken) - UserDefaults.standard.set(userData.user.token.refreshToken, forKey: Const.UserDefaultsKey.refreshToken) - // KeyChain.create(key: Const.KeyChainKey.accessToken, token: userData.user.token.accessToken) - // KeyChain.create(key: Const.KeyChainKey.refreshToken, token: userData.user.token.refreshToken) + if let userData = loginData as? AccessToken { + UserDefaults.standard.set(socialID, forKey: Const.UserDefaultsKey.userID) + UserDefaults.standard.set(userData.accessToken, forKey: Const.UserDefaultsKey.accessToken) +// UserDefaults.standard.set(userData.user.token.refreshToken, forKey: Const.UserDefaultsKey.refreshToken) self.presentToMain() } case .requestErr(let message): diff --git a/Podfile.lock b/Podfile.lock index dd865ff6..40f9f602 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,24 +1,24 @@ PODS: - Alamofire (5.6.4) - - Firebase/CoreOnly (10.6.0): - - FirebaseCore (= 10.6.0) - - Firebase/DynamicLinks (10.6.0): + - Firebase/CoreOnly (10.7.0): + - FirebaseCore (= 10.7.0) + - Firebase/DynamicLinks (10.7.0): - Firebase/CoreOnly - - FirebaseDynamicLinks (~> 10.6.0) - - FirebaseCore (10.6.0): + - FirebaseDynamicLinks (~> 10.7.0) + - FirebaseCore (10.7.0): - FirebaseCoreInternal (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/Logger (~> 7.8) - - FirebaseCoreInternal (10.6.0): + - FirebaseCoreInternal (10.7.0): - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseDynamicLinks (10.6.0): + - FirebaseDynamicLinks (10.7.0): - FirebaseCore (~> 10.0) - FlexLayout (1.3.30) - - GoogleUtilities/Environment (7.11.0): + - GoogleUtilities/Environment (7.11.1): - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.11.0): + - GoogleUtilities/Logger (7.11.1): - GoogleUtilities/Environment - - "GoogleUtilities/NSData+zlib (7.11.0)" + - "GoogleUtilities/NSData+zlib (7.11.1)" - IQKeyboardManagerSwift (6.5.11) - KakaoSDKAuth (2.14.0): - KakaoSDKCommon (= 2.14.0) @@ -53,7 +53,7 @@ PODS: - RxSwift (6.5.0) - SkeletonView (1.30.4) - SnapKit (5.6.0) - - SwiftLint (0.50.3) + - SwiftLint (0.51.0) - Then (3.0.0) - VerticalCardSwiper (2.3.1) @@ -108,12 +108,12 @@ SPEC REPOS: SPEC CHECKSUMS: Alamofire: 4e95d97098eacb88856099c4fc79b526a299e48c - Firebase: f13680471b021937f2230ea8503c7809d8c29806 - FirebaseCore: fa80ad16a62d52f67274b5b88304c3a318bbf9a4 - FirebaseCoreInternal: c7cd505e2136811096b225ac388d6254a2622362 - FirebaseDynamicLinks: 99c501143953e925681a37aade96bb2db34b30ca + Firebase: 0219acf760880eeec8ce479895bd7767466d9f81 + FirebaseCore: e317665b9d744727a97e623edbbed009320afdd7 + FirebaseCoreInternal: 8845798510aae74703467480f71ac613788d0696 + FirebaseDynamicLinks: 16a8fae3697fba66fed7a1d646fe59f30d42aa31 FlexLayout: 6651ad721f521c29d50bc724788488c84e0bc32a - GoogleUtilities: c2bdc4cf2ce786c4d2e6b3bcfd599a25ca78f06f + GoogleUtilities: 9aa0ad5a7bc171f8bae016300bfcfa3fb8425749 IQKeyboardManagerSwift: c7955c0bdbf7b2eb29bb7daaa44e3d90f55a9a85 KakaoSDKAuth: 8fca87815de22062a23297983f327613b087b8bb KakaoSDKCommon: 0ce638f7a2e49704943c0b74a087a9f8067bba1c @@ -129,7 +129,7 @@ SPEC CHECKSUMS: RxSwift: 5710a9e6b17f3c3d6e40d6e559b9fa1e813b2ef8 SkeletonView: 5a050f6411e697abd4cda0a8d767013399dccd69 SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25 - SwiftLint: 77f7cb2b9bb81ab4a12fcc86448ba3f11afa50c6 + SwiftLint: 1b7561918a19e23bfed960e40759086e70f4dba5 Then: 844265ae87834bbe1147d91d5d41a404da2ec27d VerticalCardSwiper: 68df635b354500f86934ea044ade37a264c044c6