From 8c0fe352a5c0117d2b3968d7a6b69aa940b0df5e Mon Sep 17 00:00:00 2001 From: jeongdung-eo Date: Sun, 10 Mar 2024 21:51:14 +0900 Subject: [PATCH 1/9] =?UTF-8?q?[Feat]=20#239=20-=20BaseAPI=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iOS-NOTTODO/Network/API/BaseAPI.swift | 69 +++++++++++++++++++ .../Recommend/RecommendActionService.swift | 53 -------------- 2 files changed, 69 insertions(+), 53 deletions(-) create mode 100644 iOS-NOTTODO/iOS-NOTTODO/Network/API/BaseAPI.swift delete mode 100644 iOS-NOTTODO/iOS-NOTTODO/Network/Service/Recommend/RecommendActionService.swift diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/API/BaseAPI.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/API/BaseAPI.swift new file mode 100644 index 00000000..2e717c66 --- /dev/null +++ b/iOS-NOTTODO/iOS-NOTTODO/Network/API/BaseAPI.swift @@ -0,0 +1,69 @@ +// +// BaseAPI.swift +// iOS-NOTTODO +// +// Created by JEONGEUN KIM on 3/10/24. +// + +import Foundation + +import Moya + +enum BaseDomain { + case auth + case mission + case recommend +} + +extension BaseDomain { + + var url: String { + switch self { + case .auth: + return "/auth" + case .mission: + return "/mission" + case .recommend: + return "/recommend" + } + } +} + +protocol BaseService: TargetType { + var domain: BaseDomain { get } + var urlPath: String { get } + var headerType: HeaderType { get } +} + +extension BaseService { + var baseURL: URL { + return URL(string: Bundle.main.baseURL)! + } + + var path: String { + return domain.url + urlPath + } + + var validationType: ValidationType { + return .successCodes + } + + var headers: [String: String]? { + return headerType.value + } +} + +public enum HeaderType { + case json + case jsonWithToken + + public var value: [String: String] { + switch self { + case .json: + return ["Content-Type": "application/json"] + case .jsonWithToken: + return ["Content-Type": "application/json", + "Authorization": "\(KeychainUtil.getAccessToken())"] + } + } +} diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Recommend/RecommendActionService.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Recommend/RecommendActionService.swift deleted file mode 100644 index 31115cf8..00000000 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Recommend/RecommendActionService.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// RecommendActionService.swift -// iOS-NOTTODO -// -// Created by 김민서 on 2023/05/21. -// - -import Foundation - -import Moya - -enum RecommendActionService { - case recommendAction(id: Int) -} - -extension RecommendActionService: TargetType { - var baseURL: URL { - return URL(string: Bundle.main.baseURL)! - } - - var path: String { - switch self { - case .recommendAction(id: let id): - return URLConstant.recommendAction + "/\(id)" + "/action" - } - } - - var method: Moya.Method { - switch self { - case .recommendAction: - return .get - } - } - - var validationType: ValidationType { - return .successCodes - } - - var task: Moya.Task { - switch self { - case .recommendAction: - return .requestPlain - } - } - - var headers: [String: String]? { - switch self { - case .recommendAction: - return ["Content-Type": "application/json", - "Authorization": "\(KeychainUtil.getAccessToken())"] - } - } -} From 3bc545dd35f7fdfd8196c929501bd67166d6d20b Mon Sep 17 00:00:00 2001 From: jeongdung-eo Date: Sun, 10 Mar 2024 21:51:32 +0900 Subject: [PATCH 2/9] =?UTF-8?q?[Fix]=20#239=20-=20LoginType=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS-NOTTODO/iOS-NOTTODO/Global/Enum/DefaultKeys.swift | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/iOS-NOTTODO/iOS-NOTTODO/Global/Enum/DefaultKeys.swift b/iOS-NOTTODO/iOS-NOTTODO/Global/Enum/DefaultKeys.swift index 48159cdd..cf55ac74 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Global/Enum/DefaultKeys.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Global/Enum/DefaultKeys.swift @@ -7,15 +7,8 @@ import Foundation -enum LoginType { - case Kakao, Apple - - var social: String { - switch self { - case .Kakao: return "KAKAO" - case .Apple: return "APPLE" - } - } +enum LoginType: String, Codable, CaseIterable { + case KAKAO, APPLE } struct DefaultKeys { From f475740fdb534aa8843c06e5bc9920294c21b0fb Mon Sep 17 00:00:00 2001 From: jeongdung-eo Date: Sun, 10 Mar 2024 21:51:52 +0900 Subject: [PATCH 3/9] =?UTF-8?q?[Fix]=20#239=20-=20URL=20=EB=A6=AC=ED=84=B0?= =?UTF-8?q?=EB=9F=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Network/Base/URLConstant.swift | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/Base/URLConstant.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/Base/URLConstant.swift index 90604876..a48b56ee 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/Base/URLConstant.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Network/Base/URLConstant.swift @@ -11,30 +11,27 @@ struct URLConstant { // MARK: - Auth - static let auth = "/auth/login" - static let authLogout = "/auth/logout" - static let authWithdrawal = "/auth/withdrawal" - // MARK: - Achieve - - static let achieveCalendar = "/mission/month" - static let achieveDetail = "/mission" + static let auth = "/login" + static let authLogout = "/logout" + static let authWithdrawal = "/withdrawal" // MARK: - Recommend - static let recommend = "/recommend/mission" + static let recommend = "/mission" + static let recommendAction = "" + static let recommendSituation = "/situation" - // MARK: - RecommendAction + // MARK: - Achieve - static let recommendAction = "/recommend" + static let achieveCalendar = "/month" // MARK: - Home - static let dailyMission = "/mission/daily" - static let missionWeekly = "/mission/week" - static let mission = "/mission" + static let dailyMission = "/daily" + static let missionWeekly = "/week" + static let mission = "" // MARK: - AddMission - static let recommendSituation = "/recommend/situation" - static let recentMission = "mission/recent" + static let recentMission = "/recent" } From 2708e797e0b39b1fac677d530ea477879c5b010d Mon Sep 17 00:00:00 2001 From: jeongdung-eo Date: Sun, 10 Mar 2024 21:52:37 +0900 Subject: [PATCH 4/9] =?UTF-8?q?[Feat]=20#239=20-=20Mission=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Network/API/Mission/MissionAPI.swift | 240 ++++++++++++++++++ .../HomeSevice.swift => MissionService.swift} | 86 ++++--- 2 files changed, 297 insertions(+), 29 deletions(-) create mode 100644 iOS-NOTTODO/iOS-NOTTODO/Network/API/Mission/MissionAPI.swift rename iOS-NOTTODO/iOS-NOTTODO/Network/Service/{Home/HomeSevice.swift => MissionService.swift} (50%) diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Mission/MissionAPI.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/API/Mission/MissionAPI.swift new file mode 100644 index 00000000..3bd46b1a --- /dev/null +++ b/iOS-NOTTODO/iOS-NOTTODO/Network/API/Mission/MissionAPI.swift @@ -0,0 +1,240 @@ +// +// MissionAPI.swift +// iOS-NOTTODO +// +// Created by JEONGEUN KIM on 2023/05/20. +// + +import Foundation + +import Moya + +typealias DailyMissionData = GeneralArrayResponse +typealias WeekMissionData = GeneralArrayResponse +typealias DetailMissionData = GeneralResponse +typealias AchieveCalendarData = GeneralArrayResponse +typealias RecentMissionData = GeneralArrayResponse +typealias UpdateMissionData = GeneralResponse +typealias AddMissionData = GeneralResponse +typealias AddAnotherDay = GeneralResponse +typealias UpdateMissionStatus = GeneralResponse + +protocol MissionAPIType { + func getDailyMission(date: String, completion: @escaping (DailyMissionData?) -> Void) + func getWeeklyMissoin(startDate: String, completion: @escaping (WeekMissionData?) -> Void) + func getDetailMission(id: Int, completion: @escaping (DetailMissionData?) -> Void) + func particularMissionDates(id: Int, completion: @escaping (GeneralArrayResponse) -> Void) + func getAchieveCalendar(month: String, completion: @escaping (AchieveCalendarData?) -> Void) + func getRecentMission(completion: @escaping (RecentMissionData?) -> Void) + func deleteMission(id: Int, completion: @escaping (GeneralResponse?) -> Void) + func patchUpdateMissionStatus(id: Int, status: String, completion: @escaping (UpdateMissionStatus?) -> Void) + func postAnotherDay(id: Int, dates: [String], completion: @escaping (AddAnotherDay?) -> Void) + func postAddMission(request: AddMissionRequest,completion: @escaping(AddMissionData?) -> Void) + func putUpdateMission(request: UpdateMissionRequest, completion: @escaping(UpdateMissionData?) -> Void) +} + +final class MissionAPI: MissionAPIType { + + static let shared: MissionAPI = MissionAPI() + + var provider = MoyaProvider(session: Session(interceptor: AuthInterceptor.shared), plugins: [MoyaLoggingPlugin()]) + + private init() {} + + + func getDailyMission(date: String, completion: @escaping (DailyMissionData?) -> Void) { + provider.request(.dailyMission(date: date)) { result in + switch result { + case .success(let response): + do { + let reponse = try response.map(DailyMissionData?.self) + completion(reponse) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } + + func getWeeklyMissoin(startDate: String, completion: @escaping (WeekMissionData?) -> Void) { + provider.request(.missionWeekly(startDate: startDate)) { result in + switch result { + case .success(let response): + do { + let response = try response.map(WeekMissionData?.self) + completion(response) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } + + func getDetailMission(id: Int, completion: @escaping (DetailMissionData?) -> Void) { + provider.request(.detailMission(id: id)) { result in + switch result { + case .success(let response): + do { + let response = try response.map(DetailMissionData?.self) + + completion(response) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } + + func getAchieveCalendar(month: String, completion: @escaping (AchieveCalendarData?) -> Void) { + provider.request(.achieveCalendar(month: month)) { result in + switch result { + case .success(let response): + do { + let response = try response.map(AchieveCalendarData?.self) + completion(response) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } + + func getRecentMission(completion: @escaping (RecentMissionData?) -> Void) { + provider.request(.recentMission) { result in + switch result { + case .success(let response): + do { + let response = try response.map(RecentMissionData?.self) + completion(response) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } + + func particularMissionDates(id: Int, completion: @escaping (GeneralArrayResponse) -> Void) { + provider.request(.particularMission(id: id)) { response in + switch response { + case let .success(response): + do { + let response = try response.map(GeneralArrayResponse.self) + completion(response) + } catch let err { + print(err.localizedDescription, 500) + } + case let .failure(err): + print(err) + } + } + } + + // MARK: - Delete + + func deleteMission(id: Int, completion: @escaping (GeneralResponse?) -> Void) { + provider.request(.deleteMission(id: id)) { result in + switch result { + case let .success(response): + do { + let response = try response.map(GeneralResponse.self) + completion(response) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } + + // MARK: - Patch + + func patchUpdateMissionStatus(id: Int, status: String, completion: @escaping (UpdateMissionStatus?) -> Void) { + provider.request(.updateMissionStatus(id: id, status: status)) { result in + switch result { + case .success(let response): + do { + let response = try response.map(UpdateMissionStatus?.self) + completion(response) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } + + // MARK: - Post + + func postAnotherDay(id: Int, dates: [String], completion: @escaping (AddAnotherDay?) -> Void) { + provider.request(.addAnotherDay(id: id, dates: dates)) { result in + switch result { + case .success(let response): + do { + let response = try response.map(AddAnotherDay?.self) + completion(response) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } + + func postAddMission(request: AddMissionRequest, + completion: @escaping(AddMissionData?) -> Void) { + provider.request(.addMission(request: request)) { result in + switch result { + case .success(let response): + do { + let response = try response.map(AddMissionData?.self) + completion(response) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } + + // MARK: PUT + + func putUpdateMission(request: UpdateMissionRequest, completion: @escaping(UpdateMissionData?) -> Void) { + provider.request(.updateMission(request: request)) { result in + switch result { + case .success(let response): + do { + let response = try response.map(UpdateMissionData?.self) + completion(response) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } +} diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Home/HomeSevice.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/Service/MissionService.swift similarity index 50% rename from iOS-NOTTODO/iOS-NOTTODO/Network/Service/Home/HomeSevice.swift rename to iOS-NOTTODO/iOS-NOTTODO/Network/Service/MissionService.swift index 107856b9..9b5d749b 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Home/HomeSevice.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Network/Service/MissionService.swift @@ -1,77 +1,105 @@ // -// HomeSevice.swift +// MissionService.swift // iOS-NOTTODO // -// Created by JEONGEUN KIM on 2023/05/20. +// Created by 강윤서 on 2023/06/07. // import Foundation import Moya -enum HomeService { +struct AddMissionRequest: Codable { + let title: String + let situation: String + let actions: [String]? + let goal: String? + let dates: [String] +} + +struct UpdateMissionRequest: Codable { + let id: Int + let title: String + let situation: String + let actions: [String]? + let goal: String? +} + +enum MissionService { + case addMission(request: AddMissionRequest) + case updateMission(request: UpdateMissionRequest) + case recentMission case dailyMission(date: String) case updateMissionStatus(id: Int, status: String) case deleteMission(id: Int) case addAnotherDay(id: Int, dates: [String]) case missionWeekly(startDate: String) - case dailyDetailMission(id: Int) - case particularMission(id: Int) - + case detailMission(id: Int) //case achieveDetail(missionId: Int ) + case particularMission(id: Int) //case missionDates(id: Int) + case achieveCalendar(month: String) } -extension HomeService: TargetType { - var baseURL: URL { - return URL(string: Bundle.main.baseURL)! +extension MissionService: BaseService { + var domain: BaseDomain { + return .mission } - var path: String { + var urlPath: String { switch self { + case .addMission: + return URLConstant.mission + case .recentMission: + return URLConstant.recentMission case .dailyMission(let date): return URLConstant.dailyMission + "/\(date)" case .updateMissionStatus(let id, _): return URLConstant.mission + "/\(id)" + "/check" - case .deleteMission(let id), .addAnotherDay(let id, _), .dailyDetailMission(let id): - return URLConstant.mission + "/\(id)" case .missionWeekly(let startDate): return URLConstant.missionWeekly + "/\(startDate)" case .particularMission(let id): return URLConstant.mission + "/\(id)/dates" + case .achieveCalendar(let month): + return URLConstant.achieveCalendar + "/\(month)" + case .deleteMission(let id), .addAnotherDay(let id, _), .detailMission(let id): + return URLConstant.mission + "/\(id)" + case .updateMission(let data): + return URLConstant.mission + "/\(data.id)" } } + var headerType: HeaderType { + return .jsonWithToken + } + var method: Moya.Method { switch self { - case .dailyMission, .missionWeekly, .dailyDetailMission, .particularMission: - return .get - case .updateMissionStatus: - return .patch + case .addMission, .addAnotherDay: + return .post + case .updateMission: + return .put case .deleteMission: return .delete - case .addAnotherDay: - return .post + case .updateMissionStatus: + return .patch + default: + return .get } } - var validationType: ValidationType { - return .successCodes - } - var task: Moya.Task { switch self { - case .dailyMission, .deleteMission, .missionWeekly, .dailyDetailMission, .particularMission: - return .requestPlain + case .addMission(let data): + return .requestJSONEncodable(data) + case .updateMission(let data): + return .requestJSONEncodable(data) case .updateMissionStatus(_, let status): return .requestParameters(parameters: ["completionStatus": status], encoding: JSONEncoding.default) case .addAnotherDay(_, let dates): return .requestParameters(parameters: ["dates": dates], encoding: JSONEncoding.default) + default: + return .requestPlain } } - - var headers: [String: String]? { - return ["Content-Type": "application/json", - "Authorization": "\(KeychainUtil.getAccessToken())"] - } } From 006d67f7a2fbb06031f648399f596b0573991a4d Mon Sep 17 00:00:00 2001 From: jeongdung-eo Date: Sun, 10 Mar 2024 21:53:42 +0900 Subject: [PATCH 5/9] =?UTF-8?q?[Fix]=20#239=20-=20Recommend=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20API=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Network/API/Recommend/RecommendAPI.swift | 62 ++++++++++++++++--- .../API/Recommend/RecommendActionAPI.swift | 41 ------------ .../Service/Recommend/RecommendService.swift | 36 +++++------ 3 files changed, 68 insertions(+), 71 deletions(-) delete mode 100644 iOS-NOTTODO/iOS-NOTTODO/Network/API/Recommend/RecommendActionAPI.swift diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Recommend/RecommendAPI.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/API/Recommend/RecommendAPI.swift index acbfc412..37aa506d 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Recommend/RecommendAPI.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Network/API/Recommend/RecommendAPI.swift @@ -9,26 +9,68 @@ import Foundation import Moya -final class RecommendAPI { +typealias RecommendData = GeneralArrayResponse +typealias ActionData = GeneralResponse +typealias SituationData = GeneralArrayResponse + +protocol RecommendAPIType { + func getRecommend(completion: @escaping (RecommendData?) -> Void) + func getRecommendAction(index: Int, completion: @escaping (ActionData?) -> Void) + func getRecommendSituation(completion: @escaping (SituationData?) -> Void) +} + +final class RecommendAPI: RecommendAPIType { static let shared: RecommendAPI = RecommendAPI() - private let recommendProvider = MoyaProvider(session: Session(interceptor: AuthInterceptor.shared), plugins: [MoyaLoggingPlugin()]) + private let provider = MoyaProvider(session: Session(interceptor: AuthInterceptor.shared), plugins: [MoyaLoggingPlugin()]) - private init() { } + private init() {} + + // MARK: - GET - public private(set) var recommendData: GeneralArrayResponse? + func getRecommend(completion: @escaping (RecommendData?) -> Void) { + provider.request(.recommend) { result in + switch result { + case .success(let response): + do { + let response = try response.map(RecommendData?.self) + completion(response) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } - // MARK: - GET + func getRecommendAction(index: Int, completion: @escaping (GeneralResponse?) -> Void) { + provider.request(.action(id: index)) { result in + switch result { + case .success(let response): + do { + let reponse = try response.map(ActionData?.self) + completion(reponse) + } catch let err { + print(err.localizedDescription, 500) + } + case .failure(let err): + print(err.localizedDescription) + completion(nil) + } + } + } - func getRecommend(completion: @escaping (GeneralArrayResponse?) -> Void) { - recommendProvider.request(.recommend) { result in + func getRecommendSituation(completion: @escaping (SituationData?) -> Void) { + provider.request(.situdation) { result in switch result { case .success(let response): do { - self.recommendData = try response.map(GeneralArrayResponse?.self) - guard let recommendData = self.recommendData else { return } - completion(recommendData) + let response = try + response.map(SituationData?.self) + completion(response) } catch let err { print(err.localizedDescription, 500) } diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Recommend/RecommendActionAPI.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/API/Recommend/RecommendActionAPI.swift deleted file mode 100644 index 7f0ced3b..00000000 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Recommend/RecommendActionAPI.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// RecommendActionAPI.swift -// iOS-NOTTODO -// -// Created by 김민서 on 2023/05/21. -// - -import Foundation - -import Moya - -final class RecommendActionAPI { - - static let shared: RecommendActionAPI = RecommendActionAPI() - - private let recommendActionProvider = MoyaProvider(session: Session(interceptor: AuthInterceptor.shared), plugins: [MoyaLoggingPlugin()]) - - private init() { } - - public private(set) var recommendActionData: GeneralResponse? - - // MARK: - GET - - func getRecommendAction(index: Int, completion: @escaping (GeneralResponse?) -> Void) { - recommendActionProvider.request(.recommendAction(id: index)) { result in - switch result { - case .success(let response): - do { - self.recommendActionData = try response.map(GeneralResponse?.self) - guard let recommendActionData = self.recommendActionData else { return } - completion(recommendActionData) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } -} diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Recommend/RecommendService.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Recommend/RecommendService.swift index 10f037e6..b92eab39 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Recommend/RecommendService.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Recommend/RecommendService.swift @@ -11,25 +11,32 @@ import Moya enum RecommendService { case recommend + case action(id: Int) + case situdation } -extension RecommendService: TargetType { - var baseURL: URL { - return URL(string: Bundle.main.baseURL)! +extension RecommendService: BaseService { + var domain: BaseDomain { + return .recommend } - var path: String { + var urlPath: String { switch self { case .recommend: return URLConstant.recommend + case .action(id: let id): + return URLConstant.recommendAction + "/\(id)" + "/action" + case .situdation: + return URLConstant.recommendSituation } } + var headerType: HeaderType { + return .jsonWithToken + } + var method: Moya.Method { - switch self { - case .recommend: - return .get - } + return .get } var validationType: ValidationType { @@ -37,17 +44,6 @@ extension RecommendService: TargetType { } var task: Moya.Task { - switch self { - case .recommend: - return .requestPlain - } - } - - var headers: [String: String]? { - switch self { - case .recommend: - return ["Content-Type": "application/json", - "Authorization": "\(KeychainUtil.getAccessToken())"] - } + .requestPlain } } From 75d9d398b4cb60ae9cc9ce9d0d519799a3647816 Mon Sep 17 00:00:00 2001 From: jeongdung-eo Date: Sun, 10 Mar 2024 21:54:47 +0900 Subject: [PATCH 6/9] =?UTF-8?q?[Fix]=20#239=20-=20Auth=EA=B4=80=EB=A0=A8?= =?UTF-8?q?=20API=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Network/API/Auth/AuthAPI.swift | 32 ++++++---- .../Network/Service/Auth/AuthService.swift | 60 +++++++++---------- 2 files changed, 50 insertions(+), 42 deletions(-) diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Auth/AuthAPI.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/API/Auth/AuthAPI.swift index e9289aa4..3044e321 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Auth/AuthAPI.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Network/API/Auth/AuthAPI.swift @@ -9,7 +9,17 @@ import Foundation import Moya -final class AuthAPI { +typealias AuthData = GeneralResponse +typealias EmptyData = GeneralResponse + +protocol AuthAPIType { + func postKakaoAuth(social: LoginType, request: AuthRequest, completion: @escaping (AuthData?) -> Void) + func postAppleAuth(social: LoginType, request: AuthRequest, completion: @escaping (AuthData?) -> Void) + func deleteAuth(completion: @escaping (EmptyData?) -> Void) + func withdrawalAuth(completion: @escaping (EmptyData?) -> Void) +} + +final class AuthAPI: AuthAPIType { static let shared: AuthAPI = AuthAPI() @@ -19,13 +29,13 @@ final class AuthAPI { // MARK: - POST - func postKakaoAuth(social: String, socialToken: String, fcmToken: String, completion: @escaping (GeneralResponse?) -> Void) { - authProvider.request(.kakaoAuth(social: social, socialToken: socialToken, fcmToken: fcmToken)) { result in + func postKakaoAuth(social: LoginType, request: AuthRequest, completion: @escaping (AuthData?) -> Void) { + authProvider.request(.kakaoAuth(social: social, request: request)) { result in switch result { case .success(let response): do { - guard let authData = try response.map(GeneralResponse?.self) else { return } - completion(authData) + let response = try response.map(AuthData?.self) + completion(response) } catch let err { print(err.localizedDescription, 500) } @@ -36,13 +46,13 @@ final class AuthAPI { } } - func postAppleAuth(social: String, socialToken: String, fcmToken: String, name: String, completion: @escaping (GeneralResponse?) -> Void) { - authProvider.request(.appleAuth(social: social, socialToken: socialToken, fcmToken: fcmToken, name: name)) { result in + func postAppleAuth(social: LoginType, request: AuthRequest, completion: @escaping (AuthData?) -> Void) { + authProvider.request(.appleAuth(social: social, request: request)) { result in switch result { case .success(let response): do { - guard let authData = try response.map(GeneralResponse?.self) else { return } - completion(authData) + let response = try response.map(AuthData?.self) + completion(response) } catch let err { print(err.localizedDescription, 500) } @@ -55,7 +65,7 @@ final class AuthAPI { // MARK: - Delete - func deleteAuth(completion: @escaping (GeneralResponse?) -> Void) { + func deleteAuth(completion: @escaping (EmptyData?) -> Void) { authProvider.request(.logout) { _ in completion(nil) } @@ -63,7 +73,7 @@ final class AuthAPI { // MARK: - Withdrawal - func withdrawalAuth(completion: @escaping (GeneralResponse?) -> Void) { + func withdrawalAuth(completion: @escaping (EmptyData?) -> Void) { authProvider.request(.withdrawal) { _ in completion(nil) } diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Auth/AuthService.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Auth/AuthService.swift index 7d670375..999d074a 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Auth/AuthService.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Auth/AuthService.swift @@ -9,22 +9,28 @@ import Foundation import Moya +struct AuthRequest: Codable { + let socialToken: String + let fcmToken: String + var name: String? +} + enum AuthService { - case kakaoAuth(social: String, socialToken: String, fcmToken: String) - case appleAuth(social: String, socialToken: String, fcmToken: String, name: String) + case kakaoAuth(social: LoginType, request: AuthRequest) + case appleAuth(social: LoginType, request: AuthRequest) case logout case withdrawal } -extension AuthService: TargetType { - var baseURL: URL { - return URL(string: Bundle.main.baseURL)! +extension AuthService: BaseService { + var domain: BaseDomain { + return .auth } - var path: String { + var urlPath: String { switch self { - case .kakaoAuth(let social, _, _), .appleAuth(let social, _, _, _): - return URLConstant.auth + "/\(social)" + case .kakaoAuth(let social, _), .appleAuth(let social, _): + return URLConstant.auth + "/\(social.rawValue)" case .logout: return URLConstant.authLogout case .withdrawal: @@ -32,41 +38,33 @@ extension AuthService: TargetType { } } - var method: Moya.Method { + var headerType: HeaderType { + switch self { case .kakaoAuth, .appleAuth: - return .post - case .logout: - return .delete - case .withdrawal: - return .delete + return .json + case .logout, .withdrawal: + return .jsonWithToken } } - var validationType: ValidationType { - return .successCodes - } - - var task: Moya.Task { + var method: Moya.Method { switch self { - case .kakaoAuth(_, let socialToken, let fcmToken): - return .requestParameters(parameters: ["socialToken": socialToken, "fcmToken": fcmToken], - encoding: JSONEncoding.default) - case .appleAuth(_, let socialToken, let fcmToken, let name): - return .requestParameters(parameters: ["socialToken": socialToken, "fcmToken": fcmToken, "name": name], - encoding: JSONEncoding.default) + case .kakaoAuth, .appleAuth: + return .post case .logout, .withdrawal: - return .requestPlain + return .delete } } - var headers: [String: String]? { + var task: Moya.Task { switch self { - case .kakaoAuth, .appleAuth: - return NetworkConstant.noTokenHeader + case .kakaoAuth(_, let data): + return .requestJSONEncodable(data) + case .appleAuth(_, let data): + return .requestJSONEncodable(data) case .logout, .withdrawal: - return ["Content-Type": "application/json", - "Authorization": "\(KeychainUtil.getAccessToken())"] + return .requestPlain } } } From e227d1f73c846ddbf84de39d26e73f2aacd095b7 Mon Sep 17 00:00:00 2001 From: jeongdung-eo Date: Sun, 10 Mar 2024 21:55:08 +0900 Subject: [PATCH 7/9] =?UTF-8?q?[Del]=20#239=20-=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iOS-NOTTODO.xcodeproj/project.pbxproj | 106 +++--------- .../Network/API/Achieve/AchieveAPI.swift | 59 ------- .../API/AddMission/AddMissionAPI.swift | 124 -------------- .../Network/API/Home/HomeAPI.swift | 158 ------------------ .../Service/Achieve/AchieveService.swift | 56 ------- .../AddMission/AddMissionService.swift | 79 --------- 6 files changed, 27 insertions(+), 555 deletions(-) delete mode 100644 iOS-NOTTODO/iOS-NOTTODO/Network/API/Achieve/AchieveAPI.swift delete mode 100644 iOS-NOTTODO/iOS-NOTTODO/Network/API/AddMission/AddMissionAPI.swift delete mode 100644 iOS-NOTTODO/iOS-NOTTODO/Network/API/Home/HomeAPI.swift delete mode 100644 iOS-NOTTODO/iOS-NOTTODO/Network/Service/Achieve/AchieveService.swift delete mode 100644 iOS-NOTTODO/iOS-NOTTODO/Network/Service/AddMission/AddMissionService.swift diff --git a/iOS-NOTTODO/iOS-NOTTODO.xcodeproj/project.pbxproj b/iOS-NOTTODO/iOS-NOTTODO.xcodeproj/project.pbxproj index 8d31be38..a4f643fd 100644 --- a/iOS-NOTTODO/iOS-NOTTODO.xcodeproj/project.pbxproj +++ b/iOS-NOTTODO/iOS-NOTTODO.xcodeproj/project.pbxproj @@ -17,8 +17,6 @@ 0930D37329B4FCAE0000C4AE /* StatisticsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0930D37229B4FCAE0000C4AE /* StatisticsView.swift */; }; 0930DE6229B80550007958DE /* MissionDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0930DE6129B80550007958DE /* MissionDetailViewController.swift */; }; 093DB0372A146BF900ECA5F6 /* MyInfoURL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 093DB0362A146BF900ECA5F6 /* MyInfoURL.swift */; }; - 093DB0392A15F6CE00ECA5F6 /* AchieveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 093DB0382A15F6CE00ECA5F6 /* AchieveAPI.swift */; }; - 093DB03B2A15F6E700ECA5F6 /* AchieveService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 093DB03A2A15F6E700ECA5F6 /* AchieveService.swift */; }; 093DB03D2A15FC7800ECA5F6 /* AchieveCalendarResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 093DB03C2A15FC7800ECA5F6 /* AchieveCalendarResponseDTO.swift */; }; 093DB03F2A15FCC100ECA5F6 /* MissionDetailResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 093DB03E2A15FCC100ECA5F6 /* MissionDetailResponseDTO.swift */; }; 0943A9F52A531D0000614761 /* Amplitude in Frameworks */ = {isa = PBXBuildFile; productRef = 0943A9F42A531D0000614761 /* Amplitude */; }; @@ -36,6 +34,7 @@ 0982DE5429ADCCE000D933D2 /* HomeEmptyCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0982DE5329ADCCE000D933D2 /* HomeEmptyCollectionViewCell.swift */; }; 0982DE5829AE40FB00D933D2 /* UITabBar+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0982DE5729AE40FB00D933D2 /* UITabBar+.swift */; }; 0982DE5A29AE5E6000D933D2 /* CompositionalLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0982DE5929AE5E6000D933D2 /* CompositionalLayout.swift */; }; + 0987C8402B9DD4DC007EE8DE /* MissionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0987C83F2B9DD242007EE8DE /* MissionService.swift */; }; 098BFD5929B7999E008E80F9 /* MyProfileCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098BFD5829B7999E008E80F9 /* MyProfileCollectionViewCell.swift */; }; 098BFD5B29B79B6A008E80F9 /* MyInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098BFD5A29B79B6A008E80F9 /* MyInfoModel.swift */; }; 098BFD5D29B79CE3008E80F9 /* InfoCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098BFD5C29B79CE3008E80F9 /* InfoCollectionViewCell.swift */; }; @@ -45,12 +44,13 @@ 099FC98929B3233D005B37E6 /* CalendarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099FC98829B3233D005B37E6 /* CalendarView.swift */; }; 09A1465F2A192C4900DDC308 /* WeekMissionResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A1465E2A192C4900DDC308 /* WeekMissionResponseDTO.swift */; }; 09A146652A1964B500DDC308 /* AddAnotherDayResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A146642A19649A00DDC308 /* AddAnotherDayResponseDTO.swift */; }; + 09A8E48C2B9DBE5C00C0F48F /* API_KEY.plist in Resources */ = {isa = PBXBuildFile; fileRef = 09A8E48B2B9DBE5C00C0F48F /* API_KEY.plist */; }; + 09A8E48E2B9DBEC700C0F48F /* BaseAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09A8E48D2B9DBEC700C0F48F /* BaseAPI.swift */; }; 09C8602D2AB14B4800C4F4B1 /* FSCalendar in Frameworks */ = {isa = PBXBuildFile; productRef = 09C8602C2AB14B4800C4F4B1 /* FSCalendar */; }; 09CF56022B09E98A00526C8C /* DetailAchieveHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CF56012B09E98A00526C8C /* DetailAchieveHeaderView.swift */; }; 09CF56042B09F23800526C8C /* HomeDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CF56032B09F23800526C8C /* HomeDataSource.swift */; }; 09DCCD1F2A18ED76003DCF8A /* DailyMissionResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DCCD1E2A18ED76003DCF8A /* DailyMissionResponseDTO.swift */; }; - 09DCCD212A18EF43003DCF8A /* HomeSevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DCCD202A18EF43003DCF8A /* HomeSevice.swift */; }; - 09DCCD232A18EFB0003DCF8A /* HomeAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DCCD222A18EFB0003DCF8A /* HomeAPI.swift */; }; + 09DCCD232A18EFB0003DCF8A /* MissionAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DCCD222A18EFB0003DCF8A /* MissionAPI.swift */; }; 09ED941B2B2ABAB7001864EF /* CommonNotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09ED941A2B2ABAB7001864EF /* CommonNotificationViewController.swift */; }; 09F6718029CAD76C00708725 /* SecondOnboardingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F6717F29CAD76C00708725 /* SecondOnboardingViewController.swift */; }; 09F6718229CAD86100708725 /* OnboardingCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F6718129CAD86100708725 /* OnboardingCollectionViewCell.swift */; }; @@ -63,7 +63,6 @@ 09F6719029CB6AB400708725 /* OnboardingFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F6718F29CB6AB400708725 /* OnboardingFooterView.swift */; }; 09F6719529CBFCD200708725 /* GradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F6719429CBFCD200708725 /* GradientView.swift */; }; 09F6719729CC81B500708725 /* DetailAchievementCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F6719629CC81B500708725 /* DetailAchievementCollectionViewCell.swift */; }; - 155E45532B5BB8AC008628E7 /* API_KEY.plist in Resources */ = {isa = PBXBuildFile; fileRef = 155E45522B5BB8AC008628E7 /* API_KEY.plist */; }; 155E45662B5FF089008628E7 /* FirebaseRemoteConfig in Frameworks */ = {isa = PBXBuildFile; productRef = 155E45652B5FF089008628E7 /* FirebaseRemoteConfig */; }; 155E45692B5FF2EE008628E7 /* FirebaseUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 155E45682B5FF2EE008628E7 /* FirebaseUtil.swift */; }; 155E456D2B62B1A1008628E7 /* UpdateCheckViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 155E456C2B62B1A1008628E7 /* UpdateCheckViewController.swift */; }; @@ -119,9 +118,7 @@ 3B710A5C2A62D4AB00E95620 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 3B710A5B2A62D4AB00E95620 /* Settings.bundle */; }; 3B80B5D52B7F304D00697250 /* adjust+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B80B5D42B7F304D00697250 /* adjust+.swift */; }; 3B80B5D72B7F30E200697250 /* Numbers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B80B5D62B7F30E200697250 /* Numbers.swift */; }; - 3B892AB82A2FBBAD00A316BC /* AddMissionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B892AB72A2FBBAD00A316BC /* AddMissionService.swift */; }; 3B892ABB2A2FBD4C00A316BC /* RecommendSituationResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B892ABA2A2FBD4C00A316BC /* RecommendSituationResponseDTO.swift */; }; - 3B892ABE2A2FBDDE00A316BC /* AddMissionAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B892ABD2A2FBDDE00A316BC /* AddMissionAPI.swift */; }; 3B9532F42A284CC1006510F8 /* ModalProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B9532F32A284CC1006510F8 /* ModalProtocol.swift */; }; 3BBB6C8F2A1E7BEA00B8745A /* CollectionViewLeftAlignLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BBB6C8E2A1E7BEA00B8745A /* CollectionViewLeftAlignLayout.swift */; }; 3BC19A9329CA1CA800C02803 /* UICollectionViewCell+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BC19A9229CA1CA800C02803 /* UICollectionViewCell+.swift */; }; @@ -151,9 +148,7 @@ 6CA208272A18FFCF001C4247 /* RecommendResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CA208262A18FFCF001C4247 /* RecommendResponseDTO.swift */; }; 6CA208292A191185001C4247 /* UIImageView+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CA208282A191185001C4247 /* UIImageView+.swift */; }; 6CA2082C2A19122A001C4247 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 6CA2082B2A19122A001C4247 /* Kingfisher */; }; - 6CA2082E2A1924CC001C4247 /* RecommendActionAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CA2082D2A1924CC001C4247 /* RecommendActionAPI.swift */; }; 6CA208302A1925EE001C4247 /* RecommendActionResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CA2082F2A1925EE001C4247 /* RecommendActionResponseDTO.swift */; }; - 6CA208322A192601001C4247 /* RecommendActionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CA208312A192601001C4247 /* RecommendActionService.swift */; }; 6CA208342A1956ED001C4247 /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CA208332A1956ED001C4247 /* AuthService.swift */; }; 6CA208362A1957CA001C4247 /* AuthAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CA208352A1957CA001C4247 /* AuthAPI.swift */; }; 6CA2083A2A195906001C4247 /* AuthResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CA208392A195906001C4247 /* AuthResponseDTO.swift */; }; @@ -187,8 +182,6 @@ 0930D37229B4FCAE0000C4AE /* StatisticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsView.swift; sourceTree = ""; }; 0930DE6129B80550007958DE /* MissionDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MissionDetailViewController.swift; sourceTree = ""; }; 093DB0362A146BF900ECA5F6 /* MyInfoURL.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyInfoURL.swift; sourceTree = ""; }; - 093DB0382A15F6CE00ECA5F6 /* AchieveAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AchieveAPI.swift; sourceTree = ""; }; - 093DB03A2A15F6E700ECA5F6 /* AchieveService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AchieveService.swift; sourceTree = ""; }; 093DB03C2A15FC7800ECA5F6 /* AchieveCalendarResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AchieveCalendarResponseDTO.swift; sourceTree = ""; }; 093DB03E2A15FCC100ECA5F6 /* MissionDetailResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MissionDetailResponseDTO.swift; sourceTree = ""; }; 0943A9F82A53239200614761 /* Bundle+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+.swift"; sourceTree = ""; }; @@ -205,6 +198,7 @@ 0982DE5329ADCCE000D933D2 /* HomeEmptyCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeEmptyCollectionViewCell.swift; sourceTree = ""; }; 0982DE5729AE40FB00D933D2 /* UITabBar+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITabBar+.swift"; sourceTree = ""; }; 0982DE5929AE5E6000D933D2 /* CompositionalLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompositionalLayout.swift; sourceTree = ""; }; + 0987C83F2B9DD242007EE8DE /* MissionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MissionService.swift; sourceTree = ""; }; 098BFD5829B7999E008E80F9 /* MyProfileCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyProfileCollectionViewCell.swift; sourceTree = ""; }; 098BFD5A29B79B6A008E80F9 /* MyInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyInfoModel.swift; sourceTree = ""; }; 098BFD5C29B79CE3008E80F9 /* InfoCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoCollectionViewCell.swift; sourceTree = ""; }; @@ -214,11 +208,12 @@ 099FC98829B3233D005B37E6 /* CalendarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarView.swift; sourceTree = ""; }; 09A1465E2A192C4900DDC308 /* WeekMissionResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeekMissionResponseDTO.swift; sourceTree = ""; }; 09A146642A19649A00DDC308 /* AddAnotherDayResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddAnotherDayResponseDTO.swift; sourceTree = ""; }; + 09A8E48B2B9DBE5C00C0F48F /* API_KEY.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = API_KEY.plist; path = ../../../../Desktop/API_KEY.plist; sourceTree = ""; }; + 09A8E48D2B9DBEC700C0F48F /* BaseAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseAPI.swift; sourceTree = ""; }; 09CF56012B09E98A00526C8C /* DetailAchieveHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailAchieveHeaderView.swift; sourceTree = ""; }; 09CF56032B09F23800526C8C /* HomeDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeDataSource.swift; sourceTree = ""; }; 09DCCD1E2A18ED76003DCF8A /* DailyMissionResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyMissionResponseDTO.swift; sourceTree = ""; }; - 09DCCD202A18EF43003DCF8A /* HomeSevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeSevice.swift; sourceTree = ""; }; - 09DCCD222A18EFB0003DCF8A /* HomeAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeAPI.swift; sourceTree = ""; }; + 09DCCD222A18EFB0003DCF8A /* MissionAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MissionAPI.swift; sourceTree = ""; }; 09ED941A2B2ABAB7001864EF /* CommonNotificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonNotificationViewController.swift; sourceTree = ""; }; 09F6717F29CAD76C00708725 /* SecondOnboardingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondOnboardingViewController.swift; sourceTree = ""; }; 09F6718129CAD86100708725 /* OnboardingCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingCollectionViewCell.swift; sourceTree = ""; }; @@ -231,7 +226,6 @@ 09F6718F29CB6AB400708725 /* OnboardingFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingFooterView.swift; sourceTree = ""; }; 09F6719429CBFCD200708725 /* GradientView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientView.swift; sourceTree = ""; }; 09F6719629CC81B500708725 /* DetailAchievementCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailAchievementCollectionViewCell.swift; sourceTree = ""; }; - 155E45522B5BB8AC008628E7 /* API_KEY.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = API_KEY.plist; sourceTree = ""; }; 155E45682B5FF2EE008628E7 /* FirebaseUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseUtil.swift; sourceTree = ""; }; 155E456C2B62B1A1008628E7 /* UpdateCheckViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateCheckViewController.swift; sourceTree = ""; }; 3B027A74299C31B500BEB65C /* iOS-NOTTODO.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "iOS-NOTTODO.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -284,9 +278,7 @@ 3B710A5B2A62D4AB00E95620 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 3B80B5D42B7F304D00697250 /* adjust+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "adjust+.swift"; sourceTree = ""; }; 3B80B5D62B7F30E200697250 /* Numbers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Numbers.swift; sourceTree = ""; }; - 3B892AB72A2FBBAD00A316BC /* AddMissionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddMissionService.swift; sourceTree = ""; }; 3B892ABA2A2FBD4C00A316BC /* RecommendSituationResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendSituationResponseDTO.swift; sourceTree = ""; }; - 3B892ABD2A2FBDDE00A316BC /* AddMissionAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddMissionAPI.swift; sourceTree = ""; }; 3B9532F32A284CC1006510F8 /* ModalProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalProtocol.swift; sourceTree = ""; }; 3BBB6C8E2A1E7BEA00B8745A /* CollectionViewLeftAlignLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectionViewLeftAlignLayout.swift; sourceTree = ""; }; 3BC19A9229CA1CA800C02803 /* UICollectionViewCell+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UICollectionViewCell+.swift"; sourceTree = ""; }; @@ -306,9 +298,7 @@ 6CA208242A18FEEA001C4247 /* RecommendService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendService.swift; sourceTree = ""; }; 6CA208262A18FFCF001C4247 /* RecommendResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendResponseDTO.swift; sourceTree = ""; }; 6CA208282A191185001C4247 /* UIImageView+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImageView+.swift"; sourceTree = ""; }; - 6CA2082D2A1924CC001C4247 /* RecommendActionAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendActionAPI.swift; sourceTree = ""; }; 6CA2082F2A1925EE001C4247 /* RecommendActionResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendActionResponseDTO.swift; sourceTree = ""; }; - 6CA208312A192601001C4247 /* RecommendActionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendActionService.swift; sourceTree = ""; }; 6CA208332A1956ED001C4247 /* AuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthService.swift; sourceTree = ""; }; 6CA208352A1957CA001C4247 /* AuthAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthAPI.swift; sourceTree = ""; }; 6CA208392A195906001C4247 /* AuthResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthResponseDTO.swift; sourceTree = ""; }; @@ -399,11 +389,10 @@ 093DB02B2A14687300ECA5F6 /* API */ = { isa = PBXGroup; children = ( - 3B892ABC2A2FBDC800A316BC /* AddMission */, + 09A8E48D2B9DBEC700C0F48F /* BaseAPI.swift */, 3B892AB52A2FB69200A316BC /* Auth */, 3B892AB22A2FB67000A316BC /* Recommend */, - 09A363D02A45F085003F8DB5 /* Achieve */, - 09A363D12A45F08B003F8DB5 /* Home */, + 09A363D12A45F08B003F8DB5 /* Mission */, ); path = API; sourceTree = ""; @@ -423,11 +412,9 @@ 093DB0312A1468F100ECA5F6 /* Service */ = { isa = PBXGroup; children = ( - 3B892AB62A2FBB9B00A316BC /* AddMission */, + 0987C83E2B9DD234007EE8DE /* MissionService */, 3B892AB32A2FB67B00A316BC /* Auth */, 3B892AB02A2FB63E00A316BC /* Recommend */, - 09A363CC2A45F050003F8DB5 /* Home */, - 09A363CD2A45F05B003F8DB5 /* Achieve */, ); path = Service; sourceTree = ""; @@ -443,6 +430,14 @@ path = Enum; sourceTree = ""; }; + 0987C83E2B9DD234007EE8DE /* MissionService */ = { + isa = PBXGroup; + children = ( + 0987C83F2B9DD242007EE8DE /* MissionService.swift */, + ); + name = MissionService; + sourceTree = ""; + }; 098BFD6029B80137008E80F9 /* Cell */ = { isa = PBXGroup; children = ( @@ -493,22 +488,6 @@ path = Cells; sourceTree = ""; }; - 09A363CC2A45F050003F8DB5 /* Home */ = { - isa = PBXGroup; - children = ( - 09DCCD202A18EF43003DCF8A /* HomeSevice.swift */, - ); - path = Home; - sourceTree = ""; - }; - 09A363CD2A45F05B003F8DB5 /* Achieve */ = { - isa = PBXGroup; - children = ( - 093DB03A2A15F6E700ECA5F6 /* AchieveService.swift */, - ); - path = Achieve; - sourceTree = ""; - }; 09A363CE2A45F06C003F8DB5 /* Home */ = { isa = PBXGroup; children = ( @@ -528,20 +507,12 @@ path = Achieve; sourceTree = ""; }; - 09A363D02A45F085003F8DB5 /* Achieve */ = { - isa = PBXGroup; - children = ( - 093DB0382A15F6CE00ECA5F6 /* AchieveAPI.swift */, - ); - path = Achieve; - sourceTree = ""; - }; - 09A363D12A45F08B003F8DB5 /* Home */ = { + 09A363D12A45F08B003F8DB5 /* Mission */ = { isa = PBXGroup; children = ( - 09DCCD222A18EFB0003DCF8A /* HomeAPI.swift */, + 09DCCD222A18EFB0003DCF8A /* MissionAPI.swift */, ); - path = Home; + path = Mission; sourceTree = ""; }; 09F6717E29CAD68100708725 /* Onboarding */ = { @@ -817,7 +788,7 @@ 3B027AA6299C359900BEB65C /* Resource */ = { isa = PBXGroup; children = ( - 155E45522B5BB8AC008628E7 /* API_KEY.plist */, + 09A8E48B2B9DBE5C00C0F48F /* API_KEY.plist */, 3B3EF2F72AF35C90001F79BC /* GoogleService-Info.plist */, 3B027A85299C31B600BEB65C /* Info.plist */, 3B027AAA299C35D000BEB65C /* Assets */, @@ -953,7 +924,6 @@ isa = PBXGroup; children = ( 6CA208242A18FEEA001C4247 /* RecommendService.swift */, - 6CA208312A192601001C4247 /* RecommendActionService.swift */, ); path = Recommend; sourceTree = ""; @@ -971,7 +941,6 @@ isa = PBXGroup; children = ( 6CA208222A18FE78001C4247 /* RecommendAPI.swift */, - 6CA2082D2A1924CC001C4247 /* RecommendActionAPI.swift */, ); path = Recommend; sourceTree = ""; @@ -1000,14 +969,6 @@ path = Auth; sourceTree = ""; }; - 3B892AB62A2FBB9B00A316BC /* AddMission */ = { - isa = PBXGroup; - children = ( - 3B892AB72A2FBBAD00A316BC /* AddMissionService.swift */, - ); - path = AddMission; - sourceTree = ""; - }; 3B892AB92A2FBD3500A316BC /* AddMission */ = { isa = PBXGroup; children = ( @@ -1019,14 +980,6 @@ path = AddMission; sourceTree = ""; }; - 3B892ABC2A2FBDC800A316BC /* AddMission */ = { - isa = PBXGroup; - children = ( - 3B892ABD2A2FBDDE00A316BC /* AddMissionAPI.swift */, - ); - path = AddMission; - sourceTree = ""; - }; 3B9532F22A284CAD006510F8 /* Protocol */ = { isa = PBXGroup; children = ( @@ -1281,7 +1234,7 @@ 3B710A5C2A62D4AB00E95620 /* Settings.bundle in Resources */, 3B027A84299C31B600BEB65C /* LaunchScreen.storyboard in Resources */, 6CC54C1A2A28C3AE00AAD76D /* value.json in Resources */, - 155E45532B5BB8AC008628E7 /* API_KEY.plist in Resources */, + 09A8E48C2B9DBE5C00C0F48F /* API_KEY.plist in Resources */, 3B3EF2F82AF35C90001F79BC /* GoogleService-Info.plist in Resources */, 6C049A312A595C670085E40B /* logo.mp4 in Resources */, 3B027A81299C31B600BEB65C /* Assets.xcassets in Resources */, @@ -1325,10 +1278,7 @@ 3B14A14129A6FDA900F92897 /* UILabel+.swift in Sources */, 09A146652A1964B500DDC308 /* AddAnotherDayResponseDTO.swift in Sources */, 3B027A7C299C31B500BEB65C /* AuthViewController.swift in Sources */, - 09DCCD212A18EF43003DCF8A /* HomeSevice.swift in Sources */, 6C16016229C59EFD005AE3F5 /* MyInfoAccountModel.swift in Sources */, - 093DB0392A15F6CE00ECA5F6 /* AchieveAPI.swift in Sources */, - 093DB03B2A15F6E700ECA5F6 /* AchieveService.swift in Sources */, 3B027A92299C33FE00BEB65C /* UIColor+.swift in Sources */, 092C09B52A484DD900E9B06B /* HomeDeleteViewController.swift in Sources */, 3B027AA4299C357000BEB65C /* MyInfoViewController.swift in Sources */, @@ -1375,6 +1325,7 @@ 3B14A13B29A694C000F92897 /* UITextView+.swift in Sources */, 093DB0372A146BF900ECA5F6 /* MyInfoURL.swift in Sources */, 098BFD5F29B7AECF008E80F9 /* MyInfoHeaderView.swift in Sources */, + 09A8E48E2B9DBEC700C0F48F /* BaseAPI.swift in Sources */, 3B482FA7299EB8FD00BCF424 /* UIViewController+.swift in Sources */, 0960C0D42A38BC6500A3D8DB /* KeychainUtil.swift in Sources */, 3B03D0D82B0F5EF300302872 /* CGSize+.swift in Sources */, @@ -1390,7 +1341,7 @@ 3B482FA5299EAB8800BCF424 /* TabBarController.swift in Sources */, 6CF4705D29A68F5C008D145C /* NetworkLoggerPlugin.swift in Sources */, 09F6718A29CB4A3F00708725 /* FourthOnboardingViewController.swift in Sources */, - 09DCCD232A18EFB0003DCF8A /* HomeAPI.swift in Sources */, + 09DCCD232A18EFB0003DCF8A /* MissionAPI.swift in Sources */, 09582B4829BDA7F600EF3207 /* DetailStackView.swift in Sources */, 09F6718429CADB1100708725 /* OnboardingModel.swift in Sources */, 3B027A7A299C31B500BEB65C /* SceneDelegate.swift in Sources */, @@ -1398,7 +1349,6 @@ 09582B5129C0BC3600EF3207 /* DetailAchievementViewController.swift in Sources */, 0982DE5829AE40FB00D933D2 /* UITabBar+.swift in Sources */, 3BC1A27929C9BE6C0088376B /* AddMissionFooterCollectionReusableView.swift in Sources */, - 6CA2082E2A1924CC001C4247 /* RecommendActionAPI.swift in Sources */, 6C16015829C40112005AE3F5 /* AuthButtonView.swift in Sources */, 3BC19A9329CA1CA800C02803 /* UICollectionViewCell+.swift in Sources */, 093DB03D2A15FC7800ECA5F6 /* AchieveCalendarResponseDTO.swift in Sources */, @@ -1407,7 +1357,6 @@ 3BC1A27229C9AF310088376B /* MissionHistoryModels.swift in Sources */, 6CD4F8BA29AA493600CCC740 /* RecommendActionHeaderView.swift in Sources */, 0930DE6229B80550007958DE /* MissionDetailViewController.swift in Sources */, - 6CA208322A192601001C4247 /* RecommendActionService.swift in Sources */, 3B14A13F29A6FCB300F92897 /* UIStackView+.swift in Sources */, 6CD4F8BC29AA494300CCC740 /* RecommendActionFooterView.swift in Sources */, 6CD4F8BE29AA495900CCC740 /* RecommendActionCollectionViewCell.swift in Sources */, @@ -1422,8 +1371,8 @@ 6C16015C29C56DBA005AE3F5 /* MyInfoAccountViewController.swift in Sources */, 6CF4706129A69096008D145C /* NetworkConstant.swift in Sources */, 09F6718E29CB612B00708725 /* FifthOnboardingViewController.swift in Sources */, + 0987C8402B9DD4DC007EE8DE /* MissionService.swift in Sources */, 6CD4F8C229AA5AF200CCC740 /* UIButton+.swift in Sources */, - 3B892AB82A2FBBAD00A316BC /* AddMissionService.swift in Sources */, 6CA208362A1957CA001C4247 /* AuthAPI.swift in Sources */, 6CF4706529A690E5008D145C /* NetworkBase.swift in Sources */, 099FC98129B3094F005B37E6 /* WeekMonthFSCalendar.swift in Sources */, @@ -1445,7 +1394,6 @@ 09F6718029CAD76C00708725 /* SecondOnboardingViewController.swift in Sources */, 098BFD5D29B79CE3008E80F9 /* InfoCollectionViewCell.swift in Sources */, 3B0CBA222A45FC170004F2DB /* UpdateMissionResponseDTO.swift in Sources */, - 3B892ABE2A2FBDDE00A316BC /* AddMissionAPI.swift in Sources */, 092C09B72A48596500E9B06B /* DeleteModalView.swift in Sources */, 155E45692B5FF2EE008628E7 /* FirebaseUtil.swift in Sources */, 6CF4706329A690CD008D145C /* NetworkResult.swift in Sources */, diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Achieve/AchieveAPI.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/API/Achieve/AchieveAPI.swift deleted file mode 100644 index 3dfe7b08..00000000 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Achieve/AchieveAPI.swift +++ /dev/null @@ -1,59 +0,0 @@ -// -// AchieveAPI.swift -// iOS-NOTTODO -// -// Created by JEONGEUN KIM on 2023/05/18. -// - -import Foundation - -import Moya - -final class AchieveAPI { - - static let shared: AchieveAPI = AchieveAPI() - - private let achieveProvider = MoyaProvider(session: Session(interceptor: AuthInterceptor.shared), plugins: [MoyaLoggingPlugin()]) - - private init() { } - - public private(set) var missionDetailData: GeneralResponse? - public private(set) var achieveCalendarData: GeneralArrayResponse? - - // MARK: - GET - - func getMissionDetail(missionId: Int, completion: @escaping (NetworkResult) -> Void) { - achieveProvider.request(.achieveDetail(missionId: missionId)) { response in - switch response { - case let .success(response): - let statusCode = response.statusCode - let data = response.data - let networkResult = NetworkBase.judgeStatus(by: statusCode, data, - [MissionDetailResponseDTO].self) - completion(networkResult) - case let .failure(err): - print(err.localizedDescription) - } - } - } - - // MARK: - GET - - func getAchieveCalendar(month: String, completion: @escaping (GeneralArrayResponse?) -> Void) { - achieveProvider.request(.achieveCalendar(month: month)) { result in - switch result { - case .success(let response): - do { - self.achieveCalendarData = try response.map(GeneralArrayResponse?.self) - guard let achieveCalendarData = self.achieveCalendarData else { return completion(nil) } - completion(achieveCalendarData) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } -} diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/API/AddMission/AddMissionAPI.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/API/AddMission/AddMissionAPI.swift deleted file mode 100644 index d2529488..00000000 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/API/AddMission/AddMissionAPI.swift +++ /dev/null @@ -1,124 +0,0 @@ -// -// AddMissionAPI.swift -// iOS-NOTTODO -// -// Created by 강윤서 on 2023/06/07. -// - -import Foundation - -import Moya - -final class AddMissionAPI { - - static let shared: AddMissionAPI = AddMissionAPI() - - private let addMissionProvider = MoyaProvider(session: Session(interceptor: AuthInterceptor.shared), plugins: [MoyaLoggingPlugin()]) - - private init() { } - - public private(set) var recommendSituationData: GeneralArrayResponse? - public private(set) var addMissionData: GeneralResponse? - public private(set) var updateMissionData: GeneralResponse? - public private(set) var recentMissionData: GeneralArrayResponse? - public private(set) var missionDatesData: GeneralArrayResponse? - - // MARK: - GET - - func getRecommendSituation(completion: @escaping (GeneralArrayResponse?) -> Void) { - addMissionProvider.request(.recommendSituation) { result in - switch result { - case .success(let response): - do { - self.recommendSituationData = try - response.map(GeneralArrayResponse?.self) - guard let recommendSituationData = self.recommendSituationData else { return } - completion(recommendSituationData) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } - - func getRecentMission(completion: @escaping (GeneralArrayResponse?) -> Void) { - addMissionProvider.request(.recentMission) { result in - switch result { - case .success(let response): - do { - self.recentMissionData = try response.map(GeneralArrayResponse?.self) - guard let recentMissionData = self.recentMissionData else { return } - completion(recentMissionData) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } - - func getMissionDates(id: Int, completion: @escaping (GeneralArrayResponse?) -> Void) { - addMissionProvider.request(.missionDates(id: id)) { result in - switch result { - case .success(let response): - do { - self.missionDatesData = try response.map(GeneralArrayResponse?.self) - guard let missionDatesData = self.missionDatesData else { return } - completion(missionDatesData) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } - - // MARK: - POST - - func postAddMission(title: String, situation: String, actions: [String]?, - goal: String?, dates: [String], - completion: @escaping(GeneralResponse?) -> Void) { - addMissionProvider.request(.addMission(title: title, situation: situation, actions: actions, goal: goal, dates: dates)) { result in - switch result { - case .success(let response): - do { - self.addMissionData = try response.map(GeneralResponse?.self) - guard let addMission = self.addMissionData else { return } - completion(addMission) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } - - // MARK: PUT - - func putUpdateMission(id: Int, title: String, situation: String, actions: [String]?, goal: String?, completion: @escaping(GeneralResponse?) -> Void) { - addMissionProvider.request(.updateMission(id: id, title: title, situation: situation, actions: actions, goal: goal)) { result in - switch result { - case .success(let response): - do { - self.updateMissionData = try response.map(GeneralResponse?.self) - guard let updateMission = self.updateMissionData else { return } - completion(updateMission) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } -} diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Home/HomeAPI.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/API/Home/HomeAPI.swift deleted file mode 100644 index bb83dd41..00000000 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Home/HomeAPI.swift +++ /dev/null @@ -1,158 +0,0 @@ -// -// HomeAPI.swift -// iOS-NOTTODO -// -// Created by JEONGEUN KIM on 2023/05/20. -// - -import Foundation - -import Moya - -final class HomeAPI { - - static let shared: HomeAPI = HomeAPI() - - var homeProvider = MoyaProvider(session: Session(interceptor: AuthInterceptor.shared), plugins: [MoyaLoggingPlugin()]) - - private init() { } - - public private(set) var missionDailyData: GeneralArrayResponse? - public private(set) var missionDetailDailyData: GeneralResponse? - public private(set) var updateMissionStatus: GeneralResponse? - public private(set) var missionWeekly: GeneralArrayResponse? - public private(set) var addAnotherDay: GeneralResponse? - public private(set) var particularDays: GeneralArrayResponse? - - // MARK: - GET - - func getDailyMission(date: String, completion: @escaping (GeneralArrayResponse?) -> Void) { - homeProvider.request(.dailyMission(date: date)) { result in - switch result { - case .success(let response): - do { - self.missionDailyData = try response.map(GeneralArrayResponse?.self) - guard let missionDailtData = self.missionDailyData else { return completion(nil) } - completion(missionDailtData) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } - - func getWeeklyMissoin(startDate: String, completion: @escaping (GeneralArrayResponse?) -> Void) { - homeProvider.request(.missionWeekly(startDate: startDate)) { result in - switch result { - case .success(let response): - do { - self.missionWeekly = try response.map(GeneralArrayResponse?.self) - guard let missionWeekly = self.missionWeekly else { return completion(nil) } - completion(missionWeekly) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } - - func getDailyDetailMission(id: Int, completion: @escaping (GeneralResponse?) -> Void) { - homeProvider.request(.dailyDetailMission(id: id)) { result in - switch result { - case .success(let response): - do { - self.missionDetailDailyData = try response.map(GeneralResponse?.self) - guard let missionDetailDailyData = self.missionDetailDailyData else { return completion(nil) } - completion(missionDetailDailyData) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } - - func particularMissionDates(id: Int, completion: @escaping (GeneralArrayResponse) -> Void) { - homeProvider.request(.particularMission(id: id)) { response in - switch response { - case let .success(response): - do { - self.particularDays = try response.map(GeneralArrayResponse.self) - guard self.particularDays != nil else { return } - completion((self.particularDays)!) - } catch let err { - print(err.localizedDescription, 500) - } - case let .failure(err): - print(err) - } - } - } - - // MARK: - Delete - - func deleteMission(id: Int, completion: @escaping (GeneralResponse?) -> Void) { - homeProvider.request(.deleteMission(id: id)) { result in - switch result { - case let .success(response): - do { - let data = try response.map(GeneralResponse.self) - completion(data) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } - - // MARK: - Patch - - func patchUpdateMissionStatus(id: Int, status: String, completion: @escaping (GeneralResponse?) -> Void) { - homeProvider.request(.updateMissionStatus(id: id, status: status)) { result in - switch result { - case .success(let response): - do { - self.updateMissionStatus = try response.map(GeneralResponse?.self) - guard self.updateMissionStatus != nil else { return completion(nil) } - completion(self.updateMissionStatus) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } - - // MARK: - Post - - func postAnotherDay(id: Int, dates: [String], completion: @escaping (GeneralResponse?) -> Void) { - homeProvider.request(.addAnotherDay(id: id, dates: dates)) { result in - switch result { - case .success(let response): - do { - self.addAnotherDay = try response.map(GeneralResponse?.self) - guard let addAnotherDay = self.addAnotherDay else { return completion(nil) } - completion(addAnotherDay) - } catch let err { - print(err.localizedDescription, 500) - } - case .failure(let err): - print(err.localizedDescription) - completion(nil) - } - } - } -} diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Achieve/AchieveService.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Achieve/AchieveService.swift deleted file mode 100644 index 33234b96..00000000 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/Achieve/AchieveService.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// AchieveService.swift -// iOS-NOTTODO -// -// Created by JEONGEUN KIM on 2023/05/18. -// - -import Foundation - -import Moya - -enum AchieveService { - case achieveCalendar(month: String) - case achieveDetail(missionId: Int ) -} - -extension AchieveService: TargetType { - var baseURL: URL { - return URL(string: Bundle.main.baseURL)! - } - - var path: String { - switch self { - case .achieveCalendar(let month): - return URLConstant.achieveCalendar + "/\(month)" - case .achieveDetail(let id): - return URLConstant.achieveDetail + "/\(id)" - } - } - - var method: Moya.Method { - switch self { - case .achieveCalendar, .achieveDetail: - return .get - } - } - - var validationType: ValidationType { - return .successCodes - } - - var task: Moya.Task { - switch self { - case .achieveCalendar, .achieveDetail: - return .requestPlain - } - } - - var headers: [String: String]? { - switch self { - case .achieveCalendar, .achieveDetail: - return ["Content-Type": "application/json", - "Authorization": "\(KeychainUtil.getAccessToken())"] - } - } -} diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/AddMission/AddMissionService.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/Service/AddMission/AddMissionService.swift deleted file mode 100644 index e0418240..00000000 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/AddMission/AddMissionService.swift +++ /dev/null @@ -1,79 +0,0 @@ -// -// AddMissionService.swift -// iOS-NOTTODO -// -// Created by 강윤서 on 2023/06/07. -// - -import Foundation - -import Moya - -enum AddMissionService { - case recommendSituation - case addMission(title: String, situation: String, actions: [String]?, goal: String?, dates: [String]) - case updateMission(id: Int, title: String, situation: String, actions: [String]?, goal: String?) - case recentMission - case missionDates(id: Int) -} - -extension AddMissionService: TargetType { - var baseURL: URL { - return URL(string: Bundle.main.baseURL)! - } - - var path: String { - switch self { - case .recommendSituation: - return URLConstant.recommendSituation - case .addMission: - return URLConstant.mission - case .updateMission(let id, _, _, _, _): - return URLConstant.mission + "/\(id)" - case .recentMission: - return URLConstant.recentMission - case .missionDates(let id): - return URLConstant.mission + "/\(id)/dates" - } - } - - var method: Moya.Method { - switch self { - case .recommendSituation, .recentMission, .missionDates: - return .get - case .addMission: - return .post - case .updateMission: - return .put - } - } - - var validationType: ValidationType { - return .successCodes - } - - var task: Moya.Task { - switch self { - case .recommendSituation, .recentMission, .missionDates: - return .requestPlain - case .addMission(let title, let situation, let actions, let goal, let dates): - return .requestParameters( - parameters: ["title": title, "situation": situation, "actions": actions ?? "", - "goal": goal ?? "", "dates": dates], - encoding: JSONEncoding.default) - case .updateMission(_, let title, let situation, let actions, let goal): - return .requestParameters( - parameters: ["title": title, "situation": situation, - "actions": actions ?? [""], "goal": goal ?? ""], - encoding: JSONEncoding.default) - } - } - - var headers: [String: String]? { - switch self { - default: - return ["Content-Type": "application/json", - "Authorization": "\(KeychainUtil.getAccessToken())"] - } - } -} From f88c51fd3da5b9bcafa70e17655339e61c2ca4e2 Mon Sep 17 00:00:00 2001 From: jeongdung-eo Date: Sun, 10 Mar 2024 21:55:30 +0900 Subject: [PATCH 8/9] =?UTF-8?q?[Fix]=20#239=20-=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=EB=90=9C=20=EB=84=A4=ED=8A=B8=EC=9B=8C=ED=81=AC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewControllers/AchievementViewController.swift | 2 +- .../DetailAchievementViewController.swift | 2 +- .../AddMission/Cells/NottodoCollectionViewCell.swift | 2 +- .../Cells/SituationCollectionViewCell.swift | 2 +- .../ViewControllers/AddMissionViewController.swift | 12 ++++++------ .../Presentation/Auth/AuthViewController.swift | 6 ++++-- .../DetailCalendarViewController.swift | 4 ++-- .../Home/ViewControllers/HomeViewController.swift | 8 ++++---- .../MissionDetailViewController.swift | 4 ++-- .../RecommendActionViewController.swift | 4 ++-- 10 files changed, 24 insertions(+), 22 deletions(-) diff --git a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Achievement/ViewControllers/AchievementViewController.swift b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Achievement/ViewControllers/AchievementViewController.swift index 28b52b0c..e92a7508 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Achievement/ViewControllers/AchievementViewController.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Achievement/ViewControllers/AchievementViewController.swift @@ -109,7 +109,7 @@ extension AchievementViewController { } func requestMonthAPI(month: String) { - AchieveAPI.shared.getAchieveCalendar(month: month) { [weak self] response in + MissionAPI.shared.getAchieveCalendar(month: month) { [weak self] response in guard let self, let response = response, let data = response.data else { return } diff --git a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Achievement/ViewControllers/DetailAchievementViewController.swift b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Achievement/ViewControllers/DetailAchievementViewController.swift index a2bc0d21..a2274ccb 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Achievement/ViewControllers/DetailAchievementViewController.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Achievement/ViewControllers/DetailAchievementViewController.swift @@ -163,7 +163,7 @@ extension DetailAchievementViewController { extension DetailAchievementViewController { private func requestDetailAPI(date: String) { - HomeAPI.shared.getDailyMission(date: date) { [weak self] response in + MissionAPI.shared.getDailyMission(date: date) { [weak self] response in guard let self else { return } guard let response = response else { return } guard let data = response.data else { return } diff --git a/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/Cells/NottodoCollectionViewCell.swift b/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/Cells/NottodoCollectionViewCell.swift index 34050170..7896a441 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/Cells/NottodoCollectionViewCell.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/Cells/NottodoCollectionViewCell.swift @@ -178,7 +178,7 @@ extension NottodoCollectionViewCell { } private func requestRecentMissionAPI() { - AddMissionAPI.shared.getRecentMission { [weak self] response in + MissionAPI.shared.getRecentMission { [weak self] response in guard self != nil else { return } guard let response = response else { return } guard let data = response.data else { return } diff --git a/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/Cells/SituationCollectionViewCell.swift b/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/Cells/SituationCollectionViewCell.swift index a9487770..2c14ff74 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/Cells/SituationCollectionViewCell.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/Cells/SituationCollectionViewCell.swift @@ -175,7 +175,7 @@ private extension SituationCollectionViewCell { } func requestRecommendSituationAPI() { - AddMissionAPI.shared.getRecommendSituation { [weak self] response in + RecommendAPI.shared.getRecommendSituation { [weak self] response in guard self != nil else { return } guard let response = response else { return } guard let data = response.data else { return } diff --git a/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/ViewControllers/AddMissionViewController.swift b/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/ViewControllers/AddMissionViewController.swift index 543b50a2..17d99840 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/ViewControllers/AddMissionViewController.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Presentation/AddMission/ViewControllers/AddMissionViewController.swift @@ -261,7 +261,8 @@ extension AddMissionViewController { extension AddMissionViewController { private func requestPostAddMission(title: String, situation: String, actions: [String]?, goal: String?, dates: [String]?) { - AddMissionAPI.shared.postAddMission(title: title, situation: situation, actions: actions, goal: goal, dates: dates ?? [""]) { response in + let request = AddMissionRequest(title: title, situation: situation, actions: actions, goal: goal, dates: dates ?? [""]) + MissionAPI.shared.postAddMission(request: request) { response in guard let response = response else { return } switch response.status { case 200..<300: @@ -284,7 +285,8 @@ extension AddMissionViewController { } private func requestPutUpdateMission(id: Int, title: String, situation: String, actions: [String]?, goal: String?) { - AddMissionAPI.shared.putUpdateMission(id: id, title: title, situation: situation, actions: actions, goal: goal) { response in + let request = UpdateMissionRequest(id: id, title: title, situation: situation, actions: actions, goal: goal) + MissionAPI.shared.putUpdateMission(request: request) { response in guard let response = response else { return } print(response.status) switch response.status { @@ -307,9 +309,7 @@ extension AddMissionViewController { } private func requestGetMissionDates(id: Int) { - AddMissionAPI.shared.getMissionDates(id: id) { [weak self] response in - guard self != nil else { return } - guard let response = response else { return } + MissionAPI.shared.particularMissionDates(id: id) { [weak self] response in guard let data = response.data else { return } for item in data { self?.dateList.append(item) @@ -319,7 +319,7 @@ extension AddMissionViewController { } private func requestDailyMissionAPI(id: Int) { - HomeAPI.shared.getDailyDetailMission(id: id) { [weak self] response in + MissionAPI.shared.getDetailMission(id: id) { [weak self] response in guard let self = self, let response = response else { return } if let data = response.data { diff --git a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Auth/AuthViewController.swift b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Auth/AuthViewController.swift index cb753804..d4e77649 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Auth/AuthViewController.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Auth/AuthViewController.swift @@ -231,7 +231,8 @@ extension AuthViewController { KeychainUtil.setString(email, forKey: DefaultKeys.kakaoEmail) KeychainUtil.setBool(false, forKey: DefaultKeys.isAppleLogin) - AuthAPI.shared.postKakaoAuth(social: LoginType.Kakao.social, socialToken: KeychainUtil.getSocialToken(), fcmToken: KeychainUtil.getFcmToken()) { [weak self] result in + let request = AuthRequest(socialToken: KeychainUtil.getSocialToken(), fcmToken: KeychainUtil.getFcmToken()) + AuthAPI.shared.postKakaoAuth(social: .KAKAO, request: request) { [weak self] result in guard self != nil else { return } guard result != nil else { return } @@ -320,7 +321,8 @@ extension AuthViewController: ASAuthorizationControllerDelegate, ASAuthorization KeychainUtil.setBool(true, forKey: DefaultKeys.isAppleLogin) - AuthAPI.shared.postAppleAuth(social: LoginType.Apple.social, socialToken: KeychainUtil.getSocialToken(), fcmToken: KeychainUtil.getFcmToken(), name: KeychainUtil.getAppleUsername()) { [weak self] result in + let request = AuthRequest(socialToken: KeychainUtil.getSocialToken(), fcmToken: KeychainUtil.getFcmToken(), name: KeychainUtil.getAppleUsername()) + AuthAPI.shared.postAppleAuth(social: .APPLE, request: request) { [weak self] result in guard self != nil else { return } guard result != nil else { return } diff --git a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/DetailCalendarViewController.swift b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/DetailCalendarViewController.swift index 42921fef..8c2eb478 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/DetailCalendarViewController.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/DetailCalendarViewController.swift @@ -200,7 +200,7 @@ extension DetailCalendarViewController: FSCalendarDelegate, FSCalendarDataSource extension DetailCalendarViewController { private func requestAddAnotherDay(id: Int, dates: [String]) { - HomeAPI.shared.postAnotherDay(id: id, dates: dates) { response in + MissionAPI.shared.postAnotherDay(id: id, dates: dates) { response in guard response != nil else { return } guard let statusCode = response?.status else { return } switch statusCode { @@ -222,7 +222,7 @@ extension DetailCalendarViewController { } func requestParticualrDatesAPI(id: Int) { - HomeAPI.shared.particularMissionDates(id: id) { [weak self] response in + MissionAPI.shared.particularMissionDates(id: id) { [weak self] response in guard let dates = response.data else { return } self?.invalidDate = dates self?.monthCalendar.reloadCollectionView() diff --git a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/HomeViewController.swift b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/HomeViewController.swift index 13df4837..b4a86676 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/HomeViewController.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/HomeViewController.swift @@ -251,7 +251,7 @@ extension HomeViewController { func requestDailyMissionAPI(date: String) { - HomeAPI.shared.getDailyMission(date: date) { [weak self] response in + MissionAPI.shared.getDailyMission(date: date) { [weak self] response in guard let self, let response = response, let data = response.data else { return } self.missionList = data @@ -261,7 +261,7 @@ extension HomeViewController { private func requestWeeklyMissoinAPI(startDate: String) { - HomeAPI.shared.getWeeklyMissoin(startDate: startDate) { [weak self] response in + MissionAPI.shared.getWeeklyMissoin(startDate: startDate) { [weak self] response in guard let self, let response = response, let data = response.data else { return } let calendarData = data.compactMap { ($0.actionDate, $0.percentage) } @@ -273,7 +273,7 @@ extension HomeViewController { private func requestPatchUpdateMissionAPI(id: Int, status: CompletionStatus) { - HomeAPI.shared.patchUpdateMissionStatus(id: id, status: status.rawValue) { [weak self] response in + MissionAPI.shared.patchUpdateMissionStatus(id: id, status: status.rawValue) { [weak self] response in guard let self, let response = response, let data = response.data else { return } if let index = self.missionList.firstIndex(where: { $0.id == id }) { @@ -285,7 +285,7 @@ extension HomeViewController { } private func requestDeleteMission(index: Int, id: Int) { - HomeAPI.shared.deleteMission(id: id) { [weak self] _ in + MissionAPI.shared.deleteMission(id: id) { [weak self] _ in guard let self else { return } self.dailyLoadData() diff --git a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/MissionDetailViewController.swift b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/MissionDetailViewController.swift index 164e6e7b..5dce55d1 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/MissionDetailViewController.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Presentation/Home/ViewControllers/MissionDetailViewController.swift @@ -228,7 +228,7 @@ extension MissionDetailViewController { extension MissionDetailViewController { func requestDailyMissionAPI(id: Int) { - HomeAPI.shared.getDailyDetailMission(id: id) { [weak self] response in + MissionAPI.shared.getDetailMission(id: id) { [weak self] response in guard let self else { return } guard let response = response else { return } guard let data = response.data else { return } @@ -244,7 +244,7 @@ extension MissionDetailViewController { } private func requestDeleteMission(id: Int) { - HomeAPI.shared.deleteMission(id: id) { [weak self] _ in + MissionAPI.shared.deleteMission(id: id) { [weak self] _ in guard let self else { return } guard let data = self.detailModel else { return } if data.id == id { diff --git a/iOS-NOTTODO/iOS-NOTTODO/Presentation/RecommendAction/ViewControllers/RecommendActionViewController.swift b/iOS-NOTTODO/iOS-NOTTODO/Presentation/RecommendAction/ViewControllers/RecommendActionViewController.swift index 4a87612e..0913b3d0 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Presentation/RecommendAction/ViewControllers/RecommendActionViewController.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Presentation/RecommendAction/ViewControllers/RecommendActionViewController.swift @@ -161,7 +161,7 @@ private extension RecommendActionViewController { } func requestRecommendActionAPI() { - RecommendActionAPI.shared.getRecommendAction(index: selectedIndex) { [weak self] response in + RecommendAPI.shared.getRecommendAction(index: selectedIndex) { [weak self] response in guard self != nil else { return } guard let response = response else { return } guard let data = response.data else { return } @@ -229,7 +229,7 @@ extension RecommendActionViewController: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { if kind == UICollectionView.elementKindSectionHeader { guard let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: RecommendActionHeaderView.identifier, for: indexPath) as? RecommendActionHeaderView else { return UICollectionReusableView() } - RecommendActionAPI.shared.getRecommendAction(index: selectedIndex) { [weak self] response in + RecommendAPI.shared.getRecommendAction(index: selectedIndex) { [weak self] response in guard self != nil else { return } guard let response = response else { return } guard let data = response.data else { return } From 92e06e45425d91fdc17ce4cea49042c98bb18fdb Mon Sep 17 00:00:00 2001 From: jeongdung-eo Date: Mon, 11 Mar 2024 11:43:00 +0900 Subject: [PATCH 9/9] =?UTF-8?q?[Fix]=20#239=20-=20lint=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS-NOTTODO/iOS-NOTTODO/Network/API/Mission/MissionAPI.swift | 3 +-- iOS-NOTTODO/iOS-NOTTODO/Network/Service/MissionService.swift | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Mission/MissionAPI.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/API/Mission/MissionAPI.swift index 3bd46b1a..7d200e8d 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/API/Mission/MissionAPI.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Network/API/Mission/MissionAPI.swift @@ -29,7 +29,7 @@ protocol MissionAPIType { func deleteMission(id: Int, completion: @escaping (GeneralResponse?) -> Void) func patchUpdateMissionStatus(id: Int, status: String, completion: @escaping (UpdateMissionStatus?) -> Void) func postAnotherDay(id: Int, dates: [String], completion: @escaping (AddAnotherDay?) -> Void) - func postAddMission(request: AddMissionRequest,completion: @escaping(AddMissionData?) -> Void) + func postAddMission(request: AddMissionRequest, completion: @escaping(AddMissionData?) -> Void) func putUpdateMission(request: UpdateMissionRequest, completion: @escaping(UpdateMissionData?) -> Void) } @@ -41,7 +41,6 @@ final class MissionAPI: MissionAPIType { private init() {} - func getDailyMission(date: String, completion: @escaping (DailyMissionData?) -> Void) { provider.request(.dailyMission(date: date)) { result in switch result { diff --git a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/MissionService.swift b/iOS-NOTTODO/iOS-NOTTODO/Network/Service/MissionService.swift index 9b5d749b..fdb64650 100644 --- a/iOS-NOTTODO/iOS-NOTTODO/Network/Service/MissionService.swift +++ b/iOS-NOTTODO/iOS-NOTTODO/Network/Service/MissionService.swift @@ -34,8 +34,8 @@ enum MissionService { case deleteMission(id: Int) case addAnotherDay(id: Int, dates: [String]) case missionWeekly(startDate: String) - case detailMission(id: Int) //case achieveDetail(missionId: Int ) - case particularMission(id: Int) //case missionDates(id: Int) + case detailMission(id: Int) // case achieveDetail(missionId: Int ) + case particularMission(id: Int) // case missionDates(id: Int) case achieveCalendar(month: String) }