From ada3ab6369bc6235a8f0afe7f21f12a5d8eb872d Mon Sep 17 00:00:00 2001 From: 513sojin <513sojin@naver.com> Date: Wed, 15 Nov 2023 00:44:08 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Feat]=20#207=20-=20network=20provider=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Runnect-iOS.xcodeproj/project.pbxproj | 4 ++ .../Network/Service/NetworkProvider.swift | 37 +++++++++++++++++++ .../CourseDrawing/VC/CourseDrawingVC.swift | 14 ++++++- 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift diff --git a/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj b/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj index 6e8707da..82ab778b 100644 --- a/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj +++ b/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 0AEBD608F3973389E8E1C6D6 /* Pods_Runnect_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 015778D02D5CDE0838284CD7 /* Pods_Runnect_iOS.framework */; }; + 232686362B03AF4400675A17 /* NetworkProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 232686352B03AF4400675A17 /* NetworkProvider.swift */; }; 2349CD532B026EA500EE7C4A /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 2349CD512B024E5B00EE7C4A /* GoogleService-Info.plist */; }; 23EE06C12AC1AD5200CB3FF8 /* LocationSelectView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE06C02AC1AD5200CB3FF8 /* LocationSelectView.swift */; }; 23EE06C52AC1AE1900CB3FF8 /* BaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE06C42AC1AE1900CB3FF8 /* BaseView.swift */; }; @@ -168,6 +169,7 @@ /* Begin PBXFileReference section */ 015778D02D5CDE0838284CD7 /* Pods_Runnect_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runnect_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 232686352B03AF4400675A17 /* NetworkProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkProvider.swift; sourceTree = ""; }; 2349CD512B024E5B00EE7C4A /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runnect-iOS/GoogleService-Info.plist"; sourceTree = ""; }; 23EE06C02AC1AD5200CB3FF8 /* LocationSelectView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationSelectView.swift; sourceTree = ""; }; 23EE06C42AC1AE1900CB3FF8 /* BaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseView.swift; sourceTree = ""; }; @@ -963,6 +965,7 @@ CE6655BE295D82E200C64E12 /* .gitkeep */, CE102C4929DBAD3D00E23E69 /* AuthInterceptor.swift */, CEE59FD929DD6F7D00C791F1 /* Providers.swift */, + 232686352B03AF4400675A17 /* NetworkProvider.swift */, ); path = Service; sourceTree = ""; @@ -1482,6 +1485,7 @@ CE40BB2D296808B00030ABCA /* DepartureSearchingRouter.swift in Sources */, CE15F5A4296C932E0023827C /* RunningModel.swift in Sources */, CE17F02D2961BBA100E1DED0 /* ColorLiterals.swift in Sources */, + 232686362B03AF4400675A17 /* NetworkProvider.swift in Sources */, CEC2A68E2962AF2C00160BF7 /* RNMarker.swift in Sources */, CE6655D2295D862A00C64E12 /* Publisher+Driver.swift in Sources */, DA0587F22A05D54100B72869 /* EditCourseRequestDto.swift in Sources */, diff --git a/Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift b/Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift new file mode 100644 index 00000000..5b5a3dee --- /dev/null +++ b/Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift @@ -0,0 +1,37 @@ +// +// NetworkProvider.swift +// Runnect-iOS +// +// Created by Sojin Lee on 2023/11/14. +// + +import Moya + +enum ResponseResult { + case success(T) +} + +class NetworkProvider : MoyaProvider { + func request(target : Provider, instance : Model.Type , vc: UIViewController, completion : @escaping(ResponseResult) -> ()){ + self.request(target) { result in + switch result { + case .success(let response): + if (200..<300).contains(response.statusCode) { + if let decodeData = try? JSONDecoder().decode(instance, from: response.data) { + completion(.success(decodeData)) + } else{ + /// decoding error + vc.showNetworkFailureToast() + } + } else { + /// 응답 코드 400인 경우 + vc.showNetworkFailureToast() + } + /// 서버 통신 실패 + case .failure(let error): + print(error.errorDescription) + vc.showNetworkFailureToast() + } + } + } +} diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseDrawing/VC/CourseDrawingVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseDrawing/VC/CourseDrawingVC.swift index d387214f..f6226380 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseDrawing/VC/CourseDrawingVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseDrawing/VC/CourseDrawingVC.swift @@ -17,6 +17,8 @@ final class CourseDrawingVC: UIViewController { private let courseProvider = Providers.courseProvider private let departureSearchingProvider = Providers.departureSearchingProvider + private let networkProvider = NetworkProvider(withAuth: false) + private var departureLocationModel: DepartureLocationModel? var pathImage: UIImage? @@ -193,7 +195,8 @@ extension CourseDrawingVC { mapView.eventSubject.sink { [weak self] arr in guard let self = self else { return } - self.searchLocationTmapAddress(latitude: arr[0], longitude: arr[1]) +// self.searchLocationTmapAddress(latitude: arr[0], longitude: arr[1]) + self.searchTest(latitude: arr[0], longitude: arr[1]) }.store(in: cancelBag) } @@ -493,5 +496,14 @@ extension CourseDrawingVC { } } } + + private func searchTest(latitude: Double, longitude: Double) { + networkProvider.request(target: .getLocationTmapAddress(latitude: latitude, longitude: longitude), instance: TmapAddressSearchingResponseDto.self, vc: self) { result in + switch result { + case .success(let data): + self.updateData(model: data.toDepartureLocationModel(latitude: latitude, longitude: longitude)) + } + } + } } From a6b57ca49533ec5c27c4449ecf6cad8cf6c56678 Mon Sep 17 00:00:00 2001 From: SojinLee <513sojin@naver.com> Date: Tue, 21 Nov 2023 17:57:45 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[Feat]=20#207=20-=20=EC=97=90=EB=9F=AC?= =?UTF-8?q?=EB=A9=94=EC=84=B8=EC=A7=80=20=EC=B6=9C=EB=A0=A5=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Runnect-iOS/Network/Service/NetworkProvider.swift | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift b/Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift index 5b5a3dee..86beae44 100644 --- a/Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift +++ b/Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift @@ -15,6 +15,7 @@ class NetworkProvider : MoyaProvider { func request(target : Provider, instance : Model.Type , vc: UIViewController, completion : @escaping(ResponseResult) -> ()){ self.request(target) { result in switch result { + /// 서버 통신 성공 case .success(let response): if (200..<300).contains(response.statusCode) { if let decodeData = try? JSONDecoder().decode(instance, from: response.data) { @@ -29,7 +30,15 @@ class NetworkProvider : MoyaProvider { } /// 서버 통신 실패 case .failure(let error): - print(error.errorDescription) + if let response = error.response { + if let responseData = String(data: response.data, encoding: .utf8) { + print(responseData) + } else { + print(error.localizedDescription) + } + } else { + print(error.localizedDescription) + } vc.showNetworkFailureToast() } }