Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: 회원가입 API 수정 (#388) #389

Merged
merged 10 commits into from
Apr 11, 2023
4 changes: 2 additions & 2 deletions NADA-iOS-forRelease/Resouces/Constants/URL.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
23 changes: 13 additions & 10 deletions NADA-iOS-forRelease/Sources/NetworkModel/GenericResponse.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,23 @@
import Foundation

struct GenericResponse<T: Codable>: 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
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,7 @@ struct Token: Codable {
let grantType, accessToken, refreshToken: String
let accessTokenExpiresIn: Int
}

struct AccessToken: Codable {
let accessToken: String
}
12 changes: 6 additions & 6 deletions NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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:
Expand All @@ -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:
Expand All @@ -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:
Expand All @@ -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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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:
Expand All @@ -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:
Expand Down
31 changes: 25 additions & 6 deletions NADA-iOS-forRelease/Sources/NetworkService/User/UserAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ public class UserAPI {
}
}

func userSocialSignUp(request: String, completion: @escaping (NetworkResult<Any>) -> Void) {
userProvider.request(.userSocialSignUp(userID: request)) { (result) in
func userSocialSignUp(socialID: String, socialType: String, completion: @escaping (NetworkResult<Any>) -> 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):
Expand Down Expand Up @@ -78,6 +78,25 @@ public class UserAPI {
}
}

private func judgeUserSocialSignUpStatus(by statusCode: Int, _ data: Data) -> NetworkResult<Any> {
let decoder = JSONDecoder()
guard let decodedData = try? decoder.decode(GenericResponse<AccessToken>.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<Any> {

let decoder = JSONDecoder()
Expand All @@ -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:
Expand Down Expand Up @@ -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:
Expand Down
10 changes: 6 additions & 4 deletions NADA-iOS-forRelease/Sources/NetworkService/User/UserSevice.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand All @@ -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:
Expand All @@ -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)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand All @@ -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)
}
Expand Down Expand Up @@ -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)

Expand All @@ -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):
Expand Down
28 changes: 14 additions & 14 deletions Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
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)
- GoogleUtilities/Environment (7.11.0):
- PromisesObjC (< 3.0, >= 1.2)
Expand Down Expand Up @@ -51,7 +51,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)

Expand Down Expand Up @@ -102,10 +102,10 @@ SPEC REPOS:

SPEC CHECKSUMS:
Alamofire: 4e95d97098eacb88856099c4fc79b526a299e48c
Firebase: f13680471b021937f2230ea8503c7809d8c29806
FirebaseCore: fa80ad16a62d52f67274b5b88304c3a318bbf9a4
FirebaseCoreInternal: c7cd505e2136811096b225ac388d6254a2622362
FirebaseDynamicLinks: 99c501143953e925681a37aade96bb2db34b30ca
Firebase: 0219acf760880eeec8ce479895bd7767466d9f81
FirebaseCore: e317665b9d744727a97e623edbbed009320afdd7
FirebaseCoreInternal: 8845798510aae74703467480f71ac613788d0696
FirebaseDynamicLinks: 16a8fae3697fba66fed7a1d646fe59f30d42aa31
GoogleUtilities: c2bdc4cf2ce786c4d2e6b3bcfd599a25ca78f06f
IQKeyboardManagerSwift: c7955c0bdbf7b2eb29bb7daaa44e3d90f55a9a85
KakaoSDKAuth: 8fca87815de22062a23297983f327613b087b8bb
Expand All @@ -121,10 +121,10 @@ SPEC CHECKSUMS:
RxSwift: 5710a9e6b17f3c3d6e40d6e559b9fa1e813b2ef8
SkeletonView: 5a050f6411e697abd4cda0a8d767013399dccd69
SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25
SwiftLint: 77f7cb2b9bb81ab4a12fcc86448ba3f11afa50c6
SwiftLint: 1b7561918a19e23bfed960e40759086e70f4dba5
Then: 844265ae87834bbe1147d91d5d41a404da2ec27d
VerticalCardSwiper: 68df635b354500f86934ea044ade37a264c044c6

PODFILE CHECKSUM: 5ebc024c28ae32feda47b0ba7819929a4d97ca6c

COCOAPODS: 1.11.3
COCOAPODS: 1.12.0