From 7c11ed31014bce74afa2bcdcdde4c12384793024 Mon Sep 17 00:00:00 2001 From: inuinseoul Date: Fri, 13 May 2022 22:50:31 +0900 Subject: [PATCH 01/10] =?UTF-8?q?feat:=20rootViewController=20=EC=9E=AC?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- InstagramClone/InstagramClone/SceneDelegate.swift | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/InstagramClone/InstagramClone/SceneDelegate.swift b/InstagramClone/InstagramClone/SceneDelegate.swift index 3e40ccf..9fbf116 100644 --- a/InstagramClone/InstagramClone/SceneDelegate.swift +++ b/InstagramClone/InstagramClone/SceneDelegate.swift @@ -15,11 +15,10 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { guard let windowScene = (scene as? UIWindowScene) else { return } window = UIWindow(windowScene: windowScene) -// let mainViewController = LoginViewController() -// -// let navigationController = UINavigationController(rootViewController: mainViewController) + let mainViewController = LoginViewController() + let navigationController = UINavigationController(rootViewController: mainViewController) - window?.rootViewController = TabBarController() + window?.rootViewController = navigationController window?.makeKeyAndVisible() } From bf1285952052f5f9d13eeef8842a411a1aa437c7 Mon Sep 17 00:00:00 2001 From: inuinseoul Date: Fri, 13 May 2022 23:59:51 +0900 Subject: [PATCH 02/10] =?UTF-8?q?feat:=20ATS=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- InstagramClone/InstagramClone/Info.plist | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/InstagramClone/InstagramClone/Info.plist b/InstagramClone/InstagramClone/Info.plist index 0eb786d..bc240fd 100644 --- a/InstagramClone/InstagramClone/Info.plist +++ b/InstagramClone/InstagramClone/Info.plist @@ -2,6 +2,11 @@ + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + UIApplicationSceneManifest UIApplicationSupportsMultipleScenes From 7838c27d772717f5541fab365cad0b7371624228 Mon Sep 17 00:00:00 2001 From: inuinseoul Date: Sat, 14 May 2022 00:12:24 +0900 Subject: [PATCH 03/10] =?UTF-8?q?feat:=20network=20=EA=B8=B0=EB=B3=B8?= =?UTF-8?q?=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InstagramClone.xcodeproj/project.pbxproj | 16 ++++++++++++++++ .../InstagramClone/Netwrok/APIConstants.swift | 14 ++++++++++++++ .../InstagramClone/Netwrok/NetworkResult.swift | 16 ++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 InstagramClone/InstagramClone/Netwrok/APIConstants.swift create mode 100644 InstagramClone/InstagramClone/Netwrok/NetworkResult.swift diff --git a/InstagramClone/InstagramClone.xcodeproj/project.pbxproj b/InstagramClone/InstagramClone.xcodeproj/project.pbxproj index 1b33c19..9c095f9 100644 --- a/InstagramClone/InstagramClone.xcodeproj/project.pbxproj +++ b/InstagramClone/InstagramClone.xcodeproj/project.pbxproj @@ -24,6 +24,8 @@ 8A3BF8C62812A63B00F3D110 /* SignUpPasswordViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8C52812A63B00F3D110 /* SignUpPasswordViewModel.swift */; }; 8A3BF8CC2812B2C200F3D110 /* SignUpIDViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8CB2812B2C200F3D110 /* SignUpIDViewModel.swift */; }; 8A3BF8CF2812DD3B00F3D110 /* Asset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8CE2812DD3B00F3D110 /* Asset.swift */; }; + 8A5881FE282EAA1E005747C4 /* APIConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A5881FD282EAA1E005747C4 /* APIConstants.swift */; }; + 8A588200282EAC70005747C4 /* NetworkResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A5881FF282EAC70005747C4 /* NetworkResult.swift */; }; 8A65EA37281AF83C00900A2A /* StoryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A65EA36281AF83C00900A2A /* StoryCollectionViewCell.swift */; }; 8A65EA39281AF86700900A2A /* PostTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A65EA38281AF86600900A2A /* PostTableViewCell.swift */; }; 8A65EA3B281B354C00900A2A /* ToggleImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A65EA3A281B354C00900A2A /* ToggleImageView.swift */; }; @@ -57,6 +59,8 @@ 8A3BF8C52812A63B00F3D110 /* SignUpPasswordViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpPasswordViewModel.swift; sourceTree = ""; }; 8A3BF8CB2812B2C200F3D110 /* SignUpIDViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpIDViewModel.swift; sourceTree = ""; }; 8A3BF8CE2812DD3B00F3D110 /* Asset.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Asset.swift; sourceTree = ""; }; + 8A5881FD282EAA1E005747C4 /* APIConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIConstants.swift; sourceTree = ""; }; + 8A5881FF282EAC70005747C4 /* NetworkResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkResult.swift; sourceTree = ""; }; 8A65EA36281AF83C00900A2A /* StoryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryCollectionViewCell.swift; sourceTree = ""; }; 8A65EA38281AF86600900A2A /* PostTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostTableViewCell.swift; sourceTree = ""; }; 8A65EA3A281B354C00900A2A /* ToggleImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToggleImageView.swift; sourceTree = ""; }; @@ -198,6 +202,15 @@ path = Resource; sourceTree = ""; }; + 8A5881FC282EAA0B005747C4 /* Netwrok */ = { + isa = PBXGroup; + children = ( + 8A5881FD282EAA1E005747C4 /* APIConstants.swift */, + 8A5881FF282EAC70005747C4 /* NetworkResult.swift */, + ); + path = Netwrok; + sourceTree = ""; + }; 8A8EA860280271EF004DB3EF /* Extension */ = { isa = PBXGroup; children = ( @@ -242,6 +255,7 @@ 8AC6466927FD547A00377BB2 /* InstagramClone */ = { isa = PBXGroup; children = ( + 8A5881FC282EAA0B005747C4 /* Netwrok */, 8A3BF8CD2812DD1500F3D110 /* Resource */, 8AC6469027FE9F4400377BB2 /* Domain */, 8AC6467E27FD552300377BB2 /* Presentation */, @@ -404,6 +418,7 @@ 8A65EA3B281B354C00900A2A /* ToggleImageView.swift in Sources */, 8A3BF8CF2812DD3B00F3D110 /* Asset.swift in Sources */, 8A3BF8A728117D7D00F3D110 /* ReelsViewController.swift in Sources */, + 8A5881FE282EAA1E005747C4 /* APIConstants.swift in Sources */, 8A3BF8AB28117D8D00F3D110 /* ProfileViewController.swift in Sources */, 8A65EA3D281B364E00900A2A /* StoryTableViewCell.swift in Sources */, 8A3BF8C328128B0A00F3D110 /* LoginViewModel.swift in Sources */, @@ -416,6 +431,7 @@ 8A3BF8A528117D7500F3D110 /* SearchViewController.swift in Sources */, 8A3BF8C62812A63B00F3D110 /* SignUpPasswordViewModel.swift in Sources */, 8A3BF89728115FA000F3D110 /* TabBarController.swift in Sources */, + 8A588200282EAC70005747C4 /* NetworkResult.swift in Sources */, 8A3BF88D280FFA1500F3D110 /* String+Localizing.swift in Sources */, 8A3BF8CC2812B2C200F3D110 /* SignUpIDViewModel.swift in Sources */, 8AC6466D27FD547A00377BB2 /* SceneDelegate.swift in Sources */, diff --git a/InstagramClone/InstagramClone/Netwrok/APIConstants.swift b/InstagramClone/InstagramClone/Netwrok/APIConstants.swift new file mode 100644 index 0000000..5df1870 --- /dev/null +++ b/InstagramClone/InstagramClone/Netwrok/APIConstants.swift @@ -0,0 +1,14 @@ +// +// APIConstants.swift +// InstagramClone +// +// Created by Inwoo Park on 2022/05/14. +// + +import Foundation + +struct APIConstants { + static let baseURL = "https://13.124.62.236" + static let loginURL = baseURL + "/auth/signin" + static let signupURL = baseURL + "/auth/signup" +} diff --git a/InstagramClone/InstagramClone/Netwrok/NetworkResult.swift b/InstagramClone/InstagramClone/Netwrok/NetworkResult.swift new file mode 100644 index 0000000..a4ba071 --- /dev/null +++ b/InstagramClone/InstagramClone/Netwrok/NetworkResult.swift @@ -0,0 +1,16 @@ +// +// NetworkResult.swift +// InstagramClone +// +// Created by Inwoo Park on 2022/05/14. +// + +import Foundation + +enum NetworkResult { + case success(T) + case requestError(T) + case pathError + case serverError + case networkConnectionError +} From b46a8d2d3af3c69399f7bb6b64a04389e57847cb Mon Sep 17 00:00:00 2001 From: inuinseoul Date: Sat, 14 May 2022 00:19:45 +0900 Subject: [PATCH 04/10] =?UTF-8?q?feat:=20DTO=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InstagramClone.xcodeproj/project.pbxproj | 16 +++++++++++++++ .../Netwrok/Data Model/LoginResponse.swift | 20 +++++++++++++++++++ .../Netwrok/Data Model/SignUpResponse.swift | 19 ++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 InstagramClone/InstagramClone/Netwrok/Data Model/LoginResponse.swift create mode 100644 InstagramClone/InstagramClone/Netwrok/Data Model/SignUpResponse.swift diff --git a/InstagramClone/InstagramClone.xcodeproj/project.pbxproj b/InstagramClone/InstagramClone.xcodeproj/project.pbxproj index 9c095f9..c8bf06a 100644 --- a/InstagramClone/InstagramClone.xcodeproj/project.pbxproj +++ b/InstagramClone/InstagramClone.xcodeproj/project.pbxproj @@ -26,6 +26,8 @@ 8A3BF8CF2812DD3B00F3D110 /* Asset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8CE2812DD3B00F3D110 /* Asset.swift */; }; 8A5881FE282EAA1E005747C4 /* APIConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A5881FD282EAA1E005747C4 /* APIConstants.swift */; }; 8A588200282EAC70005747C4 /* NetworkResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A5881FF282EAC70005747C4 /* NetworkResult.swift */; }; + 8A588203282EADE4005747C4 /* LoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A588202282EADE4005747C4 /* LoginResponse.swift */; }; + 8A588207282EAE51005747C4 /* SignUpResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A588206282EAE51005747C4 /* SignUpResponse.swift */; }; 8A65EA37281AF83C00900A2A /* StoryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A65EA36281AF83C00900A2A /* StoryCollectionViewCell.swift */; }; 8A65EA39281AF86700900A2A /* PostTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A65EA38281AF86600900A2A /* PostTableViewCell.swift */; }; 8A65EA3B281B354C00900A2A /* ToggleImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A65EA3A281B354C00900A2A /* ToggleImageView.swift */; }; @@ -61,6 +63,8 @@ 8A3BF8CE2812DD3B00F3D110 /* Asset.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Asset.swift; sourceTree = ""; }; 8A5881FD282EAA1E005747C4 /* APIConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIConstants.swift; sourceTree = ""; }; 8A5881FF282EAC70005747C4 /* NetworkResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkResult.swift; sourceTree = ""; }; + 8A588202282EADE4005747C4 /* LoginResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResponse.swift; sourceTree = ""; }; + 8A588206282EAE51005747C4 /* SignUpResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpResponse.swift; sourceTree = ""; }; 8A65EA36281AF83C00900A2A /* StoryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryCollectionViewCell.swift; sourceTree = ""; }; 8A65EA38281AF86600900A2A /* PostTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostTableViewCell.swift; sourceTree = ""; }; 8A65EA3A281B354C00900A2A /* ToggleImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToggleImageView.swift; sourceTree = ""; }; @@ -205,12 +209,22 @@ 8A5881FC282EAA0B005747C4 /* Netwrok */ = { isa = PBXGroup; children = ( + 8A588201282EAD5B005747C4 /* Data Model */, 8A5881FD282EAA1E005747C4 /* APIConstants.swift */, 8A5881FF282EAC70005747C4 /* NetworkResult.swift */, ); path = Netwrok; sourceTree = ""; }; + 8A588201282EAD5B005747C4 /* Data Model */ = { + isa = PBXGroup; + children = ( + 8A588202282EADE4005747C4 /* LoginResponse.swift */, + 8A588206282EAE51005747C4 /* SignUpResponse.swift */, + ); + path = "Data Model"; + sourceTree = ""; + }; 8A8EA860280271EF004DB3EF /* Extension */ = { isa = PBXGroup; children = ( @@ -423,7 +437,9 @@ 8A65EA3D281B364E00900A2A /* StoryTableViewCell.swift in Sources */, 8A3BF8C328128B0A00F3D110 /* LoginViewModel.swift in Sources */, 8A65EA37281AF83C00900A2A /* StoryCollectionViewCell.swift in Sources */, + 8A588207282EAE51005747C4 /* SignUpResponse.swift in Sources */, 8AC6466B27FD547A00377BB2 /* AppDelegate.swift in Sources */, + 8A588203282EADE4005747C4 /* LoginResponse.swift in Sources */, 8A65EA39281AF86700900A2A /* PostTableViewCell.swift in Sources */, 8AC6469327FE9F5C00377BB2 /* User.swift in Sources */, 8AC6468827FD57EE00377BB2 /* SignUpIDViewController.swift in Sources */, diff --git a/InstagramClone/InstagramClone/Netwrok/Data Model/LoginResponse.swift b/InstagramClone/InstagramClone/Netwrok/Data Model/LoginResponse.swift new file mode 100644 index 0000000..24ef4e8 --- /dev/null +++ b/InstagramClone/InstagramClone/Netwrok/Data Model/LoginResponse.swift @@ -0,0 +1,20 @@ +// +// LoginResponse.swift +// InstagramClone +// +// Created by Inwoo Park on 2022/05/14. +// + +import Foundation + +struct LoginResponse: Codable { + let status: Int + let success: Bool? + let message: String + let data: LoginData? +} + +struct LoginData: Codable { + let name: String + let email: String +} diff --git a/InstagramClone/InstagramClone/Netwrok/Data Model/SignUpResponse.swift b/InstagramClone/InstagramClone/Netwrok/Data Model/SignUpResponse.swift new file mode 100644 index 0000000..6919335 --- /dev/null +++ b/InstagramClone/InstagramClone/Netwrok/Data Model/SignUpResponse.swift @@ -0,0 +1,19 @@ +// +// SignUpResponse.swift +// InstagramClone +// +// Created by Inwoo Park on 2022/05/14. +// + +import Foundation + +struct SignUpResponse: Codable { + let status: Int + let success: Bool? + let message: String + let data: SignUpData? +} + +struct SignUpData: Codable { + let id: Int +} From 7ee232580b2a369608af9a5b716c8a66247ccabd Mon Sep 17 00:00:00 2001 From: inuinseoul Date: Sat, 14 May 2022 00:47:11 +0900 Subject: [PATCH 05/10] =?UTF-8?q?feat:=20Network=20Service=20=EC=84=A4?= =?UTF-8?q?=EA=B3=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InstagramClone.xcodeproj/project.pbxproj | 8 +-- .../Netwrok/NetworkResult.swift | 16 ------ .../Netwrok/NetworkService.swift | 50 +++++++++++++++++++ 3 files changed, 54 insertions(+), 20 deletions(-) delete mode 100644 InstagramClone/InstagramClone/Netwrok/NetworkResult.swift create mode 100644 InstagramClone/InstagramClone/Netwrok/NetworkService.swift diff --git a/InstagramClone/InstagramClone.xcodeproj/project.pbxproj b/InstagramClone/InstagramClone.xcodeproj/project.pbxproj index c8bf06a..ace94d8 100644 --- a/InstagramClone/InstagramClone.xcodeproj/project.pbxproj +++ b/InstagramClone/InstagramClone.xcodeproj/project.pbxproj @@ -25,9 +25,9 @@ 8A3BF8CC2812B2C200F3D110 /* SignUpIDViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8CB2812B2C200F3D110 /* SignUpIDViewModel.swift */; }; 8A3BF8CF2812DD3B00F3D110 /* Asset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8CE2812DD3B00F3D110 /* Asset.swift */; }; 8A5881FE282EAA1E005747C4 /* APIConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A5881FD282EAA1E005747C4 /* APIConstants.swift */; }; - 8A588200282EAC70005747C4 /* NetworkResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A5881FF282EAC70005747C4 /* NetworkResult.swift */; }; 8A588203282EADE4005747C4 /* LoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A588202282EADE4005747C4 /* LoginResponse.swift */; }; 8A588207282EAE51005747C4 /* SignUpResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A588206282EAE51005747C4 /* SignUpResponse.swift */; }; + 8A588209282EAEC5005747C4 /* NetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A588208282EAEC5005747C4 /* NetworkService.swift */; }; 8A65EA37281AF83C00900A2A /* StoryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A65EA36281AF83C00900A2A /* StoryCollectionViewCell.swift */; }; 8A65EA39281AF86700900A2A /* PostTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A65EA38281AF86600900A2A /* PostTableViewCell.swift */; }; 8A65EA3B281B354C00900A2A /* ToggleImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A65EA3A281B354C00900A2A /* ToggleImageView.swift */; }; @@ -62,9 +62,9 @@ 8A3BF8CB2812B2C200F3D110 /* SignUpIDViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpIDViewModel.swift; sourceTree = ""; }; 8A3BF8CE2812DD3B00F3D110 /* Asset.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Asset.swift; sourceTree = ""; }; 8A5881FD282EAA1E005747C4 /* APIConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIConstants.swift; sourceTree = ""; }; - 8A5881FF282EAC70005747C4 /* NetworkResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkResult.swift; sourceTree = ""; }; 8A588202282EADE4005747C4 /* LoginResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResponse.swift; sourceTree = ""; }; 8A588206282EAE51005747C4 /* SignUpResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpResponse.swift; sourceTree = ""; }; + 8A588208282EAEC5005747C4 /* NetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = ""; }; 8A65EA36281AF83C00900A2A /* StoryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryCollectionViewCell.swift; sourceTree = ""; }; 8A65EA38281AF86600900A2A /* PostTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostTableViewCell.swift; sourceTree = ""; }; 8A65EA3A281B354C00900A2A /* ToggleImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToggleImageView.swift; sourceTree = ""; }; @@ -211,7 +211,7 @@ children = ( 8A588201282EAD5B005747C4 /* Data Model */, 8A5881FD282EAA1E005747C4 /* APIConstants.swift */, - 8A5881FF282EAC70005747C4 /* NetworkResult.swift */, + 8A588208282EAEC5005747C4 /* NetworkService.swift */, ); path = Netwrok; sourceTree = ""; @@ -434,6 +434,7 @@ 8A3BF8A728117D7D00F3D110 /* ReelsViewController.swift in Sources */, 8A5881FE282EAA1E005747C4 /* APIConstants.swift in Sources */, 8A3BF8AB28117D8D00F3D110 /* ProfileViewController.swift in Sources */, + 8A588209282EAEC5005747C4 /* NetworkService.swift in Sources */, 8A65EA3D281B364E00900A2A /* StoryTableViewCell.swift in Sources */, 8A3BF8C328128B0A00F3D110 /* LoginViewModel.swift in Sources */, 8A65EA37281AF83C00900A2A /* StoryCollectionViewCell.swift in Sources */, @@ -447,7 +448,6 @@ 8A3BF8A528117D7500F3D110 /* SearchViewController.swift in Sources */, 8A3BF8C62812A63B00F3D110 /* SignUpPasswordViewModel.swift in Sources */, 8A3BF89728115FA000F3D110 /* TabBarController.swift in Sources */, - 8A588200282EAC70005747C4 /* NetworkResult.swift in Sources */, 8A3BF88D280FFA1500F3D110 /* String+Localizing.swift in Sources */, 8A3BF8CC2812B2C200F3D110 /* SignUpIDViewModel.swift in Sources */, 8AC6466D27FD547A00377BB2 /* SceneDelegate.swift in Sources */, diff --git a/InstagramClone/InstagramClone/Netwrok/NetworkResult.swift b/InstagramClone/InstagramClone/Netwrok/NetworkResult.swift deleted file mode 100644 index a4ba071..0000000 --- a/InstagramClone/InstagramClone/Netwrok/NetworkResult.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// NetworkResult.swift -// InstagramClone -// -// Created by Inwoo Park on 2022/05/14. -// - -import Foundation - -enum NetworkResult { - case success(T) - case requestError(T) - case pathError - case serverError - case networkConnectionError -} diff --git a/InstagramClone/InstagramClone/Netwrok/NetworkService.swift b/InstagramClone/InstagramClone/Netwrok/NetworkService.swift new file mode 100644 index 0000000..f51d940 --- /dev/null +++ b/InstagramClone/InstagramClone/Netwrok/NetworkService.swift @@ -0,0 +1,50 @@ +// +// NetworkService.swift +// InstagramClone +// +// Created by Inwoo Park on 2022/05/14. +// + +import Foundation + +import RxSwift +import RxCocoa + +class NetworkService { + static let shared = NetworkService() + private init() {} + + func loginRequset(id: String, password: String) throws -> Observable { + let body = ["email": id, "password": password] + let encoder = JSONEncoder() + let encodedBody = try encoder.encode(body) + + return Observable.just(APIConstants.loginURL) + .map { URL(string: $0)! } + .map { + var request = URLRequest(url: $0) + request.httpMethod = "POST" + request.httpBody = encodedBody + request.addValue("application/json", forHTTPHeaderField: "Content-Type") + return request + } + .flatMap { URLSession.shared.rx.data(request: $0) } + } + + func signUpRequset(id: String, password: String) throws -> Observable { + let body = ["email": id, "password": password] + let encoder = JSONEncoder() + let encodedBody = try encoder.encode(body) + + return Observable.just(APIConstants.signupURL) + .map { URL(string: $0)! } + .map { + var request = URLRequest(url: $0) + request.httpMethod = "POST" + request.httpBody = encodedBody + request.addValue("application/json", forHTTPHeaderField: "Content-Type") + return request + } + .flatMap { URLSession.shared.rx.data(request: $0) } + } +} From 815cb32e4b340808d07a572904cdb9359077f999 Mon Sep 17 00:00:00 2001 From: inuinseoul Date: Sat, 14 May 2022 01:36:52 +0900 Subject: [PATCH 06/10] =?UTF-8?q?feat:=20NetworkService=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 --- .../InstagramClone/Netwrok/NetworkService.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/InstagramClone/InstagramClone/Netwrok/NetworkService.swift b/InstagramClone/InstagramClone/Netwrok/NetworkService.swift index f51d940..04b4116 100644 --- a/InstagramClone/InstagramClone/Netwrok/NetworkService.swift +++ b/InstagramClone/InstagramClone/Netwrok/NetworkService.swift @@ -14,7 +14,7 @@ class NetworkService { static let shared = NetworkService() private init() {} - func loginRequset(id: String, password: String) throws -> Observable { + func loginRequset(id: String, password: String) throws -> Observable<(response: HTTPURLResponse, data: Data)> { let body = ["email": id, "password": password] let encoder = JSONEncoder() let encodedBody = try encoder.encode(body) @@ -28,10 +28,10 @@ class NetworkService { request.addValue("application/json", forHTTPHeaderField: "Content-Type") return request } - .flatMap { URLSession.shared.rx.data(request: $0) } + .flatMap { URLSession.shared.rx.response(request: $0) } } - func signUpRequset(id: String, password: String) throws -> Observable { + func signUpRequset(id: String, password: String) throws -> Observable<(response: HTTPURLResponse, data: Data)> { let body = ["email": id, "password": password] let encoder = JSONEncoder() let encodedBody = try encoder.encode(body) @@ -45,6 +45,6 @@ class NetworkService { request.addValue("application/json", forHTTPHeaderField: "Content-Type") return request } - .flatMap { URLSession.shared.rx.data(request: $0) } + .flatMap { URLSession.shared.rx.response(request: $0) } } } From 4127bb56488a1e86e0820bc04c53e10af50d636e Mon Sep 17 00:00:00 2001 From: inuinseoul Date: Sat, 14 May 2022 01:37:50 +0900 Subject: [PATCH 07/10] =?UTF-8?q?feat:=20MockUp=20data=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InstagramClone.xcodeproj/project.pbxproj | 12 ------------ .../InstagramClone/Domain/LoginUseCase.swift | 8 +------- .../InstagramClone/Domain/MockUserInfo.swift | 12 ------------ .../InstagramClone/Domain/SignUpUseCase.swift | 6 ------ 4 files changed, 1 insertion(+), 37 deletions(-) delete mode 100644 InstagramClone/InstagramClone/Domain/MockUserInfo.swift diff --git a/InstagramClone/InstagramClone.xcodeproj/project.pbxproj b/InstagramClone/InstagramClone.xcodeproj/project.pbxproj index ace94d8..cd0ba75 100644 --- a/InstagramClone/InstagramClone.xcodeproj/project.pbxproj +++ b/InstagramClone/InstagramClone.xcodeproj/project.pbxproj @@ -19,7 +19,6 @@ 8A3BF8AB28117D8D00F3D110 /* ProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8AA28117D8D00F3D110 /* ProfileViewController.swift */; }; 8A3BF8B228126AD000F3D110 /* LoginUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8B128126AD000F3D110 /* LoginUseCase.swift */; }; 8A3BF8B428126ADF00F3D110 /* SignUpUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8B328126ADF00F3D110 /* SignUpUseCase.swift */; }; - 8A3BF8BF28127E9E00F3D110 /* MockUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8BE28127E9E00F3D110 /* MockUserInfo.swift */; }; 8A3BF8C328128B0A00F3D110 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8C228128B0A00F3D110 /* LoginViewModel.swift */; }; 8A3BF8C62812A63B00F3D110 /* SignUpPasswordViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8C52812A63B00F3D110 /* SignUpPasswordViewModel.swift */; }; 8A3BF8CC2812B2C200F3D110 /* SignUpIDViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3BF8CB2812B2C200F3D110 /* SignUpIDViewModel.swift */; }; @@ -56,7 +55,6 @@ 8A3BF8AA28117D8D00F3D110 /* ProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewController.swift; sourceTree = ""; }; 8A3BF8B128126AD000F3D110 /* LoginUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginUseCase.swift; sourceTree = ""; }; 8A3BF8B328126ADF00F3D110 /* SignUpUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpUseCase.swift; sourceTree = ""; }; - 8A3BF8BE28127E9E00F3D110 /* MockUserInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockUserInfo.swift; sourceTree = ""; }; 8A3BF8C228128B0A00F3D110 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; 8A3BF8C52812A63B00F3D110 /* SignUpPasswordViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpPasswordViewModel.swift; sourceTree = ""; }; 8A3BF8CB2812B2C200F3D110 /* SignUpIDViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpIDViewModel.swift; sourceTree = ""; }; @@ -181,14 +179,6 @@ name = UseCase; sourceTree = ""; }; - 8A3BF8BD28127E7C00F3D110 /* Mock */ = { - isa = PBXGroup; - children = ( - 8A3BF8BE28127E9E00F3D110 /* MockUserInfo.swift */, - ); - name = Mock; - sourceTree = ""; - }; 8A3BF8C42812A57200F3D110 /* SignUpID */ = { isa = PBXGroup; children = ( @@ -336,7 +326,6 @@ 8AC6469027FE9F4400377BB2 /* Domain */ = { isa = PBXGroup; children = ( - 8A3BF8BD28127E7C00F3D110 /* Mock */, 8A3BF8AE281269C600F3D110 /* UseCase */, 8A3BF8AD281269BF00F3D110 /* Model */, ); @@ -453,7 +442,6 @@ 8AC6466D27FD547A00377BB2 /* SceneDelegate.swift in Sources */, 8A3BF8A328117D3B00F3D110 /* HomeViewController.swift in Sources */, 8A9880622820160C00FFB84A /* Post.swift in Sources */, - 8A3BF8BF28127E9E00F3D110 /* MockUserInfo.swift in Sources */, 8A3BF8B428126ADF00F3D110 /* SignUpUseCase.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/InstagramClone/InstagramClone/Domain/LoginUseCase.swift b/InstagramClone/InstagramClone/Domain/LoginUseCase.swift index 7f3adca..358c681 100644 --- a/InstagramClone/InstagramClone/Domain/LoginUseCase.swift +++ b/InstagramClone/InstagramClone/Domain/LoginUseCase.swift @@ -20,17 +20,11 @@ final class LoginUseCase { let loginSuccess = PublishRelay() func execute() { - guard let id = self.id, - let user = MockUserInfo.list[id] else { + guard let id = self.id else { self.loginError.accept(LoginError.idNotMatch) return } - if user.pw != self.password { - self.loginError.accept(LoginError.pwNotMatch) - return - } - User.id = self.id User.password = self.password loginSuccess.accept(()) diff --git a/InstagramClone/InstagramClone/Domain/MockUserInfo.swift b/InstagramClone/InstagramClone/Domain/MockUserInfo.swift deleted file mode 100644 index 190f58c..0000000 --- a/InstagramClone/InstagramClone/Domain/MockUserInfo.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// MockUserInfo.swift -// InstagramClone -// -// Created by Inwoo Park on 2022/04/22. -// - -import Foundation - -struct MockUserInfo { - static var list: [String:User] = ["abcd": User(id: "abcd", pw: "1234")] -} diff --git a/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift b/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift index 9e1da79..7bed77f 100644 --- a/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift +++ b/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift @@ -30,12 +30,6 @@ final class SignUpUseCase { return } - if let _ = MockUserInfo.list[id] { - self.signUpError.accept(SignUpError.alreadyExist) - return - } - - MockUserInfo.list[id] = User(id: id, pw: pw) self.signUpSuccess.accept(()) } } From afa961280f74d902801da70fe2329b8d8cb8f830 Mon Sep 17 00:00:00 2001 From: inuinseoul Date: Sat, 14 May 2022 02:04:33 +0900 Subject: [PATCH 08/10] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InstagramClone/Domain/LoginUseCase.swift | 33 ++++++++++++++++--- .../InstagramClone/Netwrok/APIConstants.swift | 2 +- .../Netwrok/NetworkService.swift | 18 ++++++++-- .../Auth/Login/LoginViewController.swift | 7 ++-- .../Auth/Login/LoginViewModel.swift | 2 ++ 5 files changed, 52 insertions(+), 10 deletions(-) diff --git a/InstagramClone/InstagramClone/Domain/LoginUseCase.swift b/InstagramClone/InstagramClone/Domain/LoginUseCase.swift index 358c681..4b20032 100644 --- a/InstagramClone/InstagramClone/Domain/LoginUseCase.swift +++ b/InstagramClone/InstagramClone/Domain/LoginUseCase.swift @@ -11,6 +11,7 @@ import RxRelay enum LoginError: Error { case idNotMatch case pwNotMatch + case networkError } final class LoginUseCase { @@ -18,15 +19,37 @@ final class LoginUseCase { var password: String? let loginError = PublishRelay() let loginSuccess = PublishRelay() + let disposeBag = DisposeBag() func execute() { - guard let id = self.id else { - self.loginError.accept(LoginError.idNotMatch) + guard let id = self.id, + let password = self.password else { return } - User.id = self.id - User.password = self.password - loginSuccess.accept(()) + do { + let response = try NetworkService.shared.loginRequset(id: id, password: password) + + response + .subscribe(onNext: { [weak self] loginResponse in + guard let loginResponse = loginResponse else { return } + + if loginResponse.status == 404 { + self?.loginError.accept(LoginError.idNotMatch) + return + } + + if loginResponse.status == 409 { + self?.loginError.accept(LoginError.pwNotMatch) + return + } + + self?.loginSuccess.accept(()) + + }) + .disposed(by: disposeBag) + } catch { + loginError.accept(LoginError.networkError) + } } } diff --git a/InstagramClone/InstagramClone/Netwrok/APIConstants.swift b/InstagramClone/InstagramClone/Netwrok/APIConstants.swift index 5df1870..7f27a0c 100644 --- a/InstagramClone/InstagramClone/Netwrok/APIConstants.swift +++ b/InstagramClone/InstagramClone/Netwrok/APIConstants.swift @@ -8,7 +8,7 @@ import Foundation struct APIConstants { - static let baseURL = "https://13.124.62.236" + static let baseURL = "http://13.124.62.236" static let loginURL = baseURL + "/auth/signin" static let signupURL = baseURL + "/auth/signup" } diff --git a/InstagramClone/InstagramClone/Netwrok/NetworkService.swift b/InstagramClone/InstagramClone/Netwrok/NetworkService.swift index 04b4116..fd5f559 100644 --- a/InstagramClone/InstagramClone/Netwrok/NetworkService.swift +++ b/InstagramClone/InstagramClone/Netwrok/NetworkService.swift @@ -14,7 +14,7 @@ class NetworkService { static let shared = NetworkService() private init() {} - func loginRequset(id: String, password: String) throws -> Observable<(response: HTTPURLResponse, data: Data)> { + func loginRequset(id: String, password: String) throws -> Observable { let body = ["email": id, "password": password] let encoder = JSONEncoder() let encodedBody = try encoder.encode(body) @@ -29,9 +29,16 @@ class NetworkService { return request } .flatMap { URLSession.shared.rx.response(request: $0) } + .map { _, data in + do { + return try JSONDecoder().decode(LoginResponse.self, from: data) + } catch { + return nil + } + } } - func signUpRequset(id: String, password: String) throws -> Observable<(response: HTTPURLResponse, data: Data)> { + func signUpRequset(id: String, password: String) throws -> Observable { let body = ["email": id, "password": password] let encoder = JSONEncoder() let encodedBody = try encoder.encode(body) @@ -46,5 +53,12 @@ class NetworkService { return request } .flatMap { URLSession.shared.rx.response(request: $0) } + .map { _, data in + do { + return try JSONDecoder().decode(SignUpResponse.self, from: data) + } catch { + return nil + } + } } } diff --git a/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewController.swift b/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewController.swift index 160826c..6f7bc60 100644 --- a/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewController.swift +++ b/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewController.swift @@ -240,9 +240,12 @@ private extension LoginViewController { output.errorMessage .asDriver(onErrorJustReturn: "") - .drive(onNext: { error in + .drive(onNext: { [weak self] errorMessage in // TODO: 에러처리 - print(error) + let alert = UIAlertController(title: nil, message: errorMessage, preferredStyle: UIAlertController.Style.alert) + let defaultAction = UIAlertAction(title: "확인", style: UIAlertAction.Style.default) + alert.addAction(defaultAction) + self?.present(alert, animated: false) }) .disposed(by: disposeBag) } diff --git a/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewModel.swift b/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewModel.swift index 06badd5..32a5d1e 100644 --- a/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewModel.swift +++ b/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewModel.swift @@ -63,6 +63,8 @@ final class LoginViewModel { output.errorMessage.accept("존재하지 않는 ID입니다.") case .pwNotMatch: output.errorMessage.accept("비밀번호가 일치하지 않습니다.") + case .networkError: + output.errorMessage.accept("네트워크 에러입니다.") } }) .disposed(by: disposeBag) From 7a0f23fe1e022ee5e9adb09b328b142035fe3a97 Mon Sep 17 00:00:00 2001 From: inuinseoul Date: Sat, 14 May 2022 02:14:39 +0900 Subject: [PATCH 09/10] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InstagramClone/Domain/SignUpUseCase.swift | 23 ++++++++++++++++++- .../Netwrok/NetworkService.swift | 2 +- .../Auth/Login/LoginViewController.swift | 1 - .../SignUpPasswordViewController.swift | 8 ++++--- .../SignUpPasswordViewModel.swift | 2 ++ 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift b/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift index 7bed77f..a280a87 100644 --- a/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift +++ b/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift @@ -13,11 +13,13 @@ enum SignUpError: Error { case alreadyExist case idEmpty case passwordEmpty + case networkError } final class SignUpUseCase { let signUpError = PublishRelay() let signUpSuccess = PublishRelay() + let disposeBag = DisposeBag() func execute() { guard let id = User.id else { @@ -30,6 +32,25 @@ final class SignUpUseCase { return } - self.signUpSuccess.accept(()) + do { + let response = try NetworkService.shared.signUpRequset(id: id, password: pw) + + response + .subscribe(onNext: { [weak self] signUpResponse in + guard let signUpResponse = signUpResponse else { return } + + if signUpResponse.status == 409 { + self?.signUpError.accept(SignUpError.alreadyExist) + return + } + + if signUpResponse.status == 201 { + self?.signUpSuccess.accept(()) + } + }) + .disposed(by: disposeBag) + } catch { + signUpError.accept(SignUpError.networkError) + } } } diff --git a/InstagramClone/InstagramClone/Netwrok/NetworkService.swift b/InstagramClone/InstagramClone/Netwrok/NetworkService.swift index fd5f559..999497a 100644 --- a/InstagramClone/InstagramClone/Netwrok/NetworkService.swift +++ b/InstagramClone/InstagramClone/Netwrok/NetworkService.swift @@ -39,7 +39,7 @@ class NetworkService { } func signUpRequset(id: String, password: String) throws -> Observable { - let body = ["email": id, "password": password] + let body = ["name": "", "email": id, "password": password] let encoder = JSONEncoder() let encodedBody = try encoder.encode(body) diff --git a/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewController.swift b/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewController.swift index 6f7bc60..3e91739 100644 --- a/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewController.swift +++ b/InstagramClone/InstagramClone/Presentation/Auth/Login/LoginViewController.swift @@ -241,7 +241,6 @@ private extension LoginViewController { output.errorMessage .asDriver(onErrorJustReturn: "") .drive(onNext: { [weak self] errorMessage in - // TODO: 에러처리 let alert = UIAlertController(title: nil, message: errorMessage, preferredStyle: UIAlertController.Style.alert) let defaultAction = UIAlertAction(title: "확인", style: UIAlertAction.Style.default) alert.addAction(defaultAction) diff --git a/InstagramClone/InstagramClone/Presentation/Auth/SignUpPassword/SignUpPasswordViewController.swift b/InstagramClone/InstagramClone/Presentation/Auth/SignUpPassword/SignUpPasswordViewController.swift index 674e88c..252bdbc 100644 --- a/InstagramClone/InstagramClone/Presentation/Auth/SignUpPassword/SignUpPasswordViewController.swift +++ b/InstagramClone/InstagramClone/Presentation/Auth/SignUpPassword/SignUpPasswordViewController.swift @@ -201,9 +201,11 @@ private extension SignUpPasswordViewController { output.errorMessage .asDriver(onErrorJustReturn: "") - .drive(onNext: { error in - // TODO: 에러처리 - print(error) + .drive(onNext: { [weak self] errorMessage in + let alert = UIAlertController(title: nil, message: errorMessage, preferredStyle: UIAlertController.Style.alert) + let defaultAction = UIAlertAction(title: "확인", style: UIAlertAction.Style.default) + alert.addAction(defaultAction) + self?.present(alert, animated: false) }) .disposed(by: disposeBag) } diff --git a/InstagramClone/InstagramClone/Presentation/Auth/SignUpPassword/SignUpPasswordViewModel.swift b/InstagramClone/InstagramClone/Presentation/Auth/SignUpPassword/SignUpPasswordViewModel.swift index 17ec4b0..3357c0f 100644 --- a/InstagramClone/InstagramClone/Presentation/Auth/SignUpPassword/SignUpPasswordViewModel.swift +++ b/InstagramClone/InstagramClone/Presentation/Auth/SignUpPassword/SignUpPasswordViewModel.swift @@ -55,6 +55,8 @@ final class SignUpPasswordViewModel { signUpUseCase.signUpError .subscribe(onNext: { error in switch error { + case .alreadyExist: + output.errorMessage.accept("이미 존재하는 ID입니다.") case .passwordEmpty: output.errorMessage.accept("비밀번호가 입력되지 않았습니다.") default: From a11e12bce25521ce6b7c838d99a787e8e47920a4 Mon Sep 17 00:00:00 2001 From: inuinseoul Date: Sat, 14 May 2022 02:15:54 +0900 Subject: [PATCH 10/10] =?UTF-8?q?refactor:=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=98=A4=ED=83=80=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- InstagramClone/InstagramClone/Domain/LoginUseCase.swift | 7 ++++--- InstagramClone/InstagramClone/Domain/SignUpUseCase.swift | 2 +- InstagramClone/InstagramClone/Netwrok/NetworkService.swift | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/InstagramClone/InstagramClone/Domain/LoginUseCase.swift b/InstagramClone/InstagramClone/Domain/LoginUseCase.swift index 4b20032..b792147 100644 --- a/InstagramClone/InstagramClone/Domain/LoginUseCase.swift +++ b/InstagramClone/InstagramClone/Domain/LoginUseCase.swift @@ -28,7 +28,7 @@ final class LoginUseCase { } do { - let response = try NetworkService.shared.loginRequset(id: id, password: password) + let response = try NetworkService.shared.loginRequest(id: id, password: password) response .subscribe(onNext: { [weak self] loginResponse in @@ -44,8 +44,9 @@ final class LoginUseCase { return } - self?.loginSuccess.accept(()) - + if loginResponse.status == 200 { + self?.loginSuccess.accept(()) + } }) .disposed(by: disposeBag) } catch { diff --git a/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift b/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift index a280a87..c0977ac 100644 --- a/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift +++ b/InstagramClone/InstagramClone/Domain/SignUpUseCase.swift @@ -33,7 +33,7 @@ final class SignUpUseCase { } do { - let response = try NetworkService.shared.signUpRequset(id: id, password: pw) + let response = try NetworkService.shared.signUpRequest(id: id, password: pw) response .subscribe(onNext: { [weak self] signUpResponse in diff --git a/InstagramClone/InstagramClone/Netwrok/NetworkService.swift b/InstagramClone/InstagramClone/Netwrok/NetworkService.swift index 999497a..0975835 100644 --- a/InstagramClone/InstagramClone/Netwrok/NetworkService.swift +++ b/InstagramClone/InstagramClone/Netwrok/NetworkService.swift @@ -14,7 +14,7 @@ class NetworkService { static let shared = NetworkService() private init() {} - func loginRequset(id: String, password: String) throws -> Observable { + func loginRequest(id: String, password: String) throws -> Observable { let body = ["email": id, "password": password] let encoder = JSONEncoder() let encodedBody = try encoder.encode(body) @@ -38,7 +38,7 @@ class NetworkService { } } - func signUpRequset(id: String, password: String) throws -> Observable { + func signUpRequest(id: String, password: String) throws -> Observable { let body = ["name": "", "email": id, "password": password] let encoder = JSONEncoder() let encodedBody = try encoder.encode(body)