From 23146b08cee82deab9869724c9d122161dd56c8b Mon Sep 17 00:00:00 2001 From: Yoon Ah Shin Date: Sat, 19 Feb 2022 02:41:01 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E2=9C=A8[FEAT]=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EA=B0=80=EC=9E=85=20API=20=EB=A1=9C=EC=A7=81=20=EC=97=B0?= =?UTF-8?q?=EA=B2=B0(#91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Umpah-iOS/Umpah-iOS.xcodeproj/project.pbxproj | 24 ++++++++ .../Network/APIServices/LoginService.swift | 58 +++++++++++++++++++ .../Network/Model/Login/LoginRequest.swift | 16 +++++ .../Network/Model/Login/SignupRequest.swift | 18 ++++++ .../Model/Record/DayRecordRequest.swift | 1 - .../Network/Storage/LoginStorage.swift | 42 ++++++++++++++ .../Screen/Main/Controller/MainVC.swift | 10 +++- 7 files changed, 165 insertions(+), 4 deletions(-) create mode 100644 Umpah-iOS/Umpah-iOS/Network/APIServices/LoginService.swift create mode 100644 Umpah-iOS/Umpah-iOS/Network/Model/Login/LoginRequest.swift create mode 100644 Umpah-iOS/Umpah-iOS/Network/Model/Login/SignupRequest.swift create mode 100644 Umpah-iOS/Umpah-iOS/Network/Storage/LoginStorage.swift diff --git a/Umpah-iOS/Umpah-iOS.xcodeproj/project.pbxproj b/Umpah-iOS/Umpah-iOS.xcodeproj/project.pbxproj index b1c934d..4abb4f8 100644 --- a/Umpah-iOS/Umpah-iOS.xcodeproj/project.pbxproj +++ b/Umpah-iOS/Umpah-iOS.xcodeproj/project.pbxproj @@ -49,6 +49,10 @@ ED2ACAF826E41C7200C5A772 /* FilterCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED2ACAF726E41C7200C5A772 /* FilterCVC.swift */; }; ED348AD727BFE108007559E9 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = ED348AD627BFE108007559E9 /* GoogleService-Info.plist */; }; ED348AD927BFE7BD007559E9 /* DayRecordRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED348AD827BFE7BD007559E9 /* DayRecordRequest.swift */; }; + ED348ADB27C00D9C007559E9 /* LoginService.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED348ADA27C00D9C007559E9 /* LoginService.swift */; }; + ED348ADE27C00E2F007559E9 /* SignupRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED348ADD27C00E2F007559E9 /* SignupRequest.swift */; }; + ED348AE027C00EA7007559E9 /* LoginRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED348ADF27C00EA7007559E9 /* LoginRequest.swift */; }; + ED348AE227C00ED4007559E9 /* LoginStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED348AE127C00ED4007559E9 /* LoginStorage.swift */; }; ED5396E226B975AD0061722F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = ED5396E126B975AD0061722F /* Main.storyboard */; }; ED5396E426B975D70061722F /* MainVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5396E326B975D70061722F /* MainVC.swift */; }; ED5396E626B975E70061722F /* Routine.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = ED5396E526B975E70061722F /* Routine.storyboard */; }; @@ -211,6 +215,10 @@ ED2ACAF726E41C7200C5A772 /* FilterCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilterCVC.swift; sourceTree = ""; }; ED348AD627BFE108007559E9 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; ED348AD827BFE7BD007559E9 /* DayRecordRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DayRecordRequest.swift; sourceTree = ""; }; + ED348ADA27C00D9C007559E9 /* LoginService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginService.swift; sourceTree = ""; }; + ED348ADD27C00E2F007559E9 /* SignupRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupRequest.swift; sourceTree = ""; }; + ED348ADF27C00EA7007559E9 /* LoginRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginRequest.swift; sourceTree = ""; }; + ED348AE127C00ED4007559E9 /* LoginStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginStorage.swift; sourceTree = ""; }; ED5396E126B975AD0061722F /* Main.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; ED5396E326B975D70061722F /* MainVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainVC.swift; sourceTree = ""; }; ED5396E526B975E70061722F /* Routine.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Routine.storyboard; sourceTree = ""; }; @@ -339,6 +347,7 @@ isa = PBXGroup; children = ( 3CA621F02727CB68002CB901 /* RecordService.swift */, + ED348ADA27C00D9C007559E9 /* LoginService.swift */, ); path = APIServices; sourceTree = ""; @@ -596,6 +605,7 @@ ED22C695273A56DB00036CF7 /* Model */ = { isa = PBXGroup; children = ( + ED348ADC27C00E1E007559E9 /* Login */, ED22C696273A56E700036CF7 /* Record */, ); path = Model; @@ -619,10 +629,20 @@ 3C7479EA2702EFAE006752EE /* RoutineStorage.swift */, 3CF4E90F2719C09A00FE8802 /* SwimmingDataStorage.swift */, ED22C69A273A588A00036CF7 /* RecordStorage.swift */, + ED348AE127C00ED4007559E9 /* LoginStorage.swift */, ); path = Storage; sourceTree = ""; }; + ED348ADC27C00E1E007559E9 /* Login */ = { + isa = PBXGroup; + children = ( + ED348ADD27C00E2F007559E9 /* SignupRequest.swift */, + ED348ADF27C00EA7007559E9 /* LoginRequest.swift */, + ); + path = Login; + sourceTree = ""; + }; EDD3CCF32701BE9100AFED4B /* Font */ = { isa = PBXGroup; children = ( @@ -1093,6 +1113,7 @@ 3C7479EB2702EFAE006752EE /* RoutineStorage.swift in Sources */, EDD46F5226BEEA3B00FA91F2 /* UILabel+.swift in Sources */, EDC7642D27BEB254006CBD51 /* ExpandedStateTableView.swift in Sources */, + ED348ADE27C00E2F007559E9 /* SignupRequest.swift in Sources */, EDE550BE2700F80D004422CE /* DateTVC.swift in Sources */, ED78843C26DE4551006D8787 /* ExpandedWeekTVC.swift in Sources */, ED5396F526B977A20061722F /* UIScreen+.swift in Sources */, @@ -1101,6 +1122,7 @@ EDD7C43C26CB903F00D93306 /* ChartTVC.swift in Sources */, 3CF4E9142719C6C600FE8802 /* Date+.swift in Sources */, EDBA9D9E27B767F500E8E3B5 /* StrokeHeaderView.swift in Sources */, + ED348AE027C00EA7007559E9 /* LoginRequest.swift in Sources */, ED8AB6A92703157A0066CD02 /* SelectedButtonDelegate.swift in Sources */, EDD3CCDC27019A7200AFED4B /* SelectedRangeView.swift in Sources */, EDC1EDDF26BF8FF600DCB215 /* Charts+.swift in Sources */, @@ -1116,6 +1138,7 @@ ED78843A26DE3F63006D8787 /* WeekMonthHeader.swift in Sources */, ED5396F726B977BB0061722F /* UIViewController+.swift in Sources */, 3C8CE32D26BCC318002BBFE5 /* UITableView+.swift in Sources */, + ED348ADB27C00D9C007559E9 /* LoginService.swift in Sources */, 3CF69DEA26E7776C002FD6DB /* ModifyElementVC.swift in Sources */, 3CA621EA2727C71E002CB901 /* SwimmingRecordRequest.swift in Sources */, 3C662B60271988E70061E133 /* HealthKitSetupAssistant.swift in Sources */, @@ -1150,6 +1173,7 @@ ED8AB6AB2703158F0066CD02 /* States.swift in Sources */, 3CF4E9162719F43700FE8802 /* SwimmingDataViewModel.swift in Sources */, EDD7C44026CBDB4600D93306 /* DetailTVC.swift in Sources */, + ED348AE227C00ED4007559E9 /* LoginStorage.swift in Sources */, ED5F1A1A26ECF05E003FF801 /* StrokeTVC.swift in Sources */, ED78843826DE3D18006D8787 /* DayHeader.swift in Sources */, EDD3CCE62701B4EE00AFED4B /* UIColor+.swift in Sources */, diff --git a/Umpah-iOS/Umpah-iOS/Network/APIServices/LoginService.swift b/Umpah-iOS/Umpah-iOS/Network/APIServices/LoginService.swift new file mode 100644 index 0000000..25f415b --- /dev/null +++ b/Umpah-iOS/Umpah-iOS/Network/APIServices/LoginService.swift @@ -0,0 +1,58 @@ +// +// LoginService.swift +// Umpah-iOS +// +// Created by SHIN YOON AH on 2022/02/19. +// + +import Foundation +import Moya + +enum LoginService{ + case login(LoginRequest) + case signup(SignupRequest) +} + +extension LoginService: TargetType { + var baseURL: URL { + return URL(string: GeneralAPI.baseURL)! + } + + var path: String { + switch self { + case .login: + return "/auth/signin" + case .signup: + return "/auth/signup" + } + } + + var method: Moya.Method { + switch self{ + case .login, + .signup: + return .post + } + } + + var sampleData: Data { + return "@@".data(using: .utf8)! + } + + var task: Task { + switch self { + case .login(let param): + return .requestJSONEncodable(param) + case .signup(let param): + return .requestJSONEncodable(param) + } + } + + var headers: [String : String]? { + switch self { + default: + return ["Content-Type": "application/json"] + } + } +} + diff --git a/Umpah-iOS/Umpah-iOS/Network/Model/Login/LoginRequest.swift b/Umpah-iOS/Umpah-iOS/Network/Model/Login/LoginRequest.swift new file mode 100644 index 0000000..cdf23a3 --- /dev/null +++ b/Umpah-iOS/Umpah-iOS/Network/Model/Login/LoginRequest.swift @@ -0,0 +1,16 @@ +// +// LoginRequest.swift +// Umpah-iOS +// +// Created by SHIN YOON AH on 2022/02/19. +// + +import Foundation + +struct LoginRequest: Codable { + let phone: String + + init(phone: String) { + self.phone = phone + } +} diff --git a/Umpah-iOS/Umpah-iOS/Network/Model/Login/SignupRequest.swift b/Umpah-iOS/Umpah-iOS/Network/Model/Login/SignupRequest.swift new file mode 100644 index 0000000..57371b3 --- /dev/null +++ b/Umpah-iOS/Umpah-iOS/Network/Model/Login/SignupRequest.swift @@ -0,0 +1,18 @@ +// +// SignupRequest.swift +// Umpah-iOS +// +// Created by SHIN YOON AH on 2022/02/19. +// + +import Foundation + +struct SignupRequest: Codable { + let nickname: String + let phone: String + + init(nickname: String, phone: String) { + self.nickname = nickname + self.phone = phone + } +} diff --git a/Umpah-iOS/Umpah-iOS/Network/Model/Record/DayRecordRequest.swift b/Umpah-iOS/Umpah-iOS/Network/Model/Record/DayRecordRequest.swift index bcb9c61..0441588 100644 --- a/Umpah-iOS/Umpah-iOS/Network/Model/Record/DayRecordRequest.swift +++ b/Umpah-iOS/Umpah-iOS/Network/Model/Record/DayRecordRequest.swift @@ -14,4 +14,3 @@ struct DayRecordRequest: Codable { self.date = date } } - diff --git a/Umpah-iOS/Umpah-iOS/Network/Storage/LoginStorage.swift b/Umpah-iOS/Umpah-iOS/Network/Storage/LoginStorage.swift new file mode 100644 index 0000000..925cff9 --- /dev/null +++ b/Umpah-iOS/Umpah-iOS/Network/Storage/LoginStorage.swift @@ -0,0 +1,42 @@ +// +// LoginStorage.swift +// Umpah-iOS +// +// Created by SHIN YOON AH on 2022/02/19. +// + +import Foundation +import Moya + +final class LoginStorage { + + // MARK: - Shared + + static let shared: LoginStorage = LoginStorage() + + // MARK: - Network + + private let authProvider = MoyaProvider(plugins: [NetworkLoggerPlugin(verbose: true)]) + + // MARK: - POST /auth/signup + func dispatchSignUp(nickname: String, + phone: String, + completion: @escaping (() -> ())) { + let param = SignupRequest(nickname: "최다인", phone: "01012345678") + + self.authProvider.request(.signup(param)) { response in + switch response{ + case .success(let result): + do{ + print(result) + completion() + }catch(let err){ + print(err.localizedDescription) + } + case .failure(let err): + print(err.localizedDescription) + print("와 실패다!") + } + } + } +} diff --git a/Umpah-iOS/Umpah-iOS/Screen/Main/Controller/MainVC.swift b/Umpah-iOS/Umpah-iOS/Screen/Main/Controller/MainVC.swift index 18c83f5..810a29b 100644 --- a/Umpah-iOS/Umpah-iOS/Screen/Main/Controller/MainVC.swift +++ b/Umpah-iOS/Umpah-iOS/Screen/Main/Controller/MainVC.swift @@ -22,9 +22,13 @@ final class MainVC: MainTableVC { super.viewDidLoad() authorizeHealthKit() // TODO: Dummy Record - storage.fetchDayRecord(date: "2021-05-19") { [weak self] in - self?.baseTableView.reloadData() - print("reload 성공") +// storage.fetchDayRecord(date: "2021-05-19") { [weak self] in +// self?.baseTableView.reloadData() +// print("reload 성공") +// } + let loginStorage = LoginStorage.shared + loginStorage.dispatchSignUp(nickname: "", phone: "") { + print("와우 회원가입 완료") } } From 35f3c6d6b4e5682b0d99a2bb5157cdf2c9f7f63b Mon Sep 17 00:00:00 2001 From: Yoon Ah Shin Date: Sat, 19 Feb 2022 02:49:12 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E2=9C=A8[FEAT]=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20API=20=EC=97=B0=EA=B2=B0=20=EC=99=84=EB=A3=8C(#91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Network/Storage/LoginStorage.swift | 21 +++++++++++++++++++ .../Screen/Main/Controller/MainVC.swift | 4 ---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Umpah-iOS/Umpah-iOS/Network/Storage/LoginStorage.swift b/Umpah-iOS/Umpah-iOS/Network/Storage/LoginStorage.swift index 925cff9..05f2645 100644 --- a/Umpah-iOS/Umpah-iOS/Network/Storage/LoginStorage.swift +++ b/Umpah-iOS/Umpah-iOS/Network/Storage/LoginStorage.swift @@ -39,4 +39,25 @@ final class LoginStorage { } } } + + // MARK: - POST /auth/signin + func dispatchLogin(phone: String, + completion: @escaping (() -> ())) { + let param = LoginRequest(phone: "01012345678") + + self.authProvider.request(.login(param)) { response in + switch response{ + case .success(let result): + do{ + print(result) + completion() + }catch(let err){ + print(err.localizedDescription) + } + case .failure(let err): + print(err.localizedDescription) + print("와 실패다!") + } + } + } } diff --git a/Umpah-iOS/Umpah-iOS/Screen/Main/Controller/MainVC.swift b/Umpah-iOS/Umpah-iOS/Screen/Main/Controller/MainVC.swift index 810a29b..ec8b89f 100644 --- a/Umpah-iOS/Umpah-iOS/Screen/Main/Controller/MainVC.swift +++ b/Umpah-iOS/Umpah-iOS/Screen/Main/Controller/MainVC.swift @@ -26,10 +26,6 @@ final class MainVC: MainTableVC { // self?.baseTableView.reloadData() // print("reload 성공") // } - let loginStorage = LoginStorage.shared - loginStorage.dispatchSignUp(nickname: "", phone: "") { - print("와우 회원가입 완료") - } } override func viewDidAppear(_ animated: Bool) {