Skip to content

Commit

Permalink
feat: Network Model에 Alamofire 적용 (#38)
Browse files Browse the repository at this point in the history
  • Loading branch information
eeeesong committed Apr 25, 2021
1 parent 278a5e1 commit 8b1b0c9
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 84 deletions.
32 changes: 16 additions & 16 deletions ios/sidedish/sidedish.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
8214B70B262DE07A004467C2 /* MenuCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8214B70A262DE07A004467C2 /* MenuCell.swift */; };
8214B70E262DE253004467C2 /* MainTableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8214B70D262DE253004467C2 /* MainTableViewDataSource.swift */; };
8214B711262DE4B4004467C2 /* MainTableViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8214B710262DE4B4004467C2 /* MainTableViewDelegate.swift */; };
821A75F226306F1F0083026F /* NetworkProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 821A75F126306F1F0083026F /* NetworkProtocol.swift */; };
8268E35726301419002F518C /* MenuCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8268E35626301419002F518C /* MenuCellViewModel.swift */; };
8268E35F26301B00002F518C /* TurnonAppUsecase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8268E35E26301B00002F518C /* TurnonAppUsecase.swift */; };
82A971D426323CC3005E419A /* AlertMessageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82A971D326323CC3005E419A /* AlertMessageController.swift */; };
Expand All @@ -29,11 +28,12 @@
82FDB9D3262DCFD8009E3EB7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 82FDB9D1262DCFD8009E3EB7 /* LaunchScreen.storyboard */; };
E41EC951262E6E9A0043CC44 /* SideDish.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41EC950262E6E9A0043CC44 /* SideDish.swift */; };
E41EC954262EBA2E0043CC44 /* SideDishes.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41EC953262EBA2E0043CC44 /* SideDishes.swift */; };
E41EC963263013220043CC44 /* RequestManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41EC962263013220043CC44 /* RequestManager.swift */; };
E41EC96F263030730043CC44 /* RequestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41EC96E263030730043CC44 /* RequestType.swift */; };
E41EC976263030980043CC44 /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41EC975263030980043CC44 /* NetworkManager.swift */; };
E41EC97D263119E90043CC44 /* EndPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41EC97C263119E90043CC44 /* EndPoint.swift */; };
E41EC98B263172760043CC44 /* CustomToaster.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41EC98A263172760043CC44 /* CustomToaster.swift */; };
E4896DFF26353AB000AA4DD7 /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4896DFE26353AB000AA4DD7 /* NetworkManager.swift */; };
E4896E0226353F1400AA4DD7 /* AFNetworkManagable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4896E0126353F1400AA4DD7 /* AFNetworkManagable.swift */; };
E4896E092635420000AA4DD7 /* RequestManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4896E082635420000AA4DD7 /* RequestManager.swift */; };
E4896E0E2635422300AA4DD7 /* AFRequestManagable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4896E0D2635422300AA4DD7 /* AFRequestManagable.swift */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
Expand All @@ -43,7 +43,6 @@
8214B70A262DE07A004467C2 /* MenuCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuCell.swift; sourceTree = "<group>"; };
8214B70D262DE253004467C2 /* MainTableViewDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainTableViewDataSource.swift; sourceTree = "<group>"; };
8214B710262DE4B4004467C2 /* MainTableViewDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainTableViewDelegate.swift; sourceTree = "<group>"; };
821A75F126306F1F0083026F /* NetworkProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkProtocol.swift; sourceTree = "<group>"; };
8268E35626301419002F518C /* MenuCellViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuCellViewModel.swift; sourceTree = "<group>"; };
8268E35E26301B00002F518C /* TurnonAppUsecase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TurnonAppUsecase.swift; sourceTree = "<group>"; };
82A971D326323CC3005E419A /* AlertMessageController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertMessageController.swift; sourceTree = "<group>"; };
Expand All @@ -63,11 +62,12 @@
D1C31EB2092041E463E69524 /* Pods-sidedish.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-sidedish.release.xcconfig"; path = "Target Support Files/Pods-sidedish/Pods-sidedish.release.xcconfig"; sourceTree = "<group>"; };
E41EC950262E6E9A0043CC44 /* SideDish.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideDish.swift; sourceTree = "<group>"; };
E41EC953262EBA2E0043CC44 /* SideDishes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideDishes.swift; sourceTree = "<group>"; };
E41EC962263013220043CC44 /* RequestManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestManager.swift; sourceTree = "<group>"; };
E41EC96E263030730043CC44 /* RequestType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestType.swift; sourceTree = "<group>"; };
E41EC975263030980043CC44 /* NetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManager.swift; sourceTree = "<group>"; };
E41EC97C263119E90043CC44 /* EndPoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EndPoint.swift; sourceTree = "<group>"; };
E41EC98A263172760043CC44 /* CustomToaster.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomToaster.swift; sourceTree = "<group>"; };
E4896DFE26353AB000AA4DD7 /* NetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManager.swift; sourceTree = "<group>"; };
E4896E0126353F1400AA4DD7 /* AFNetworkManagable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AFNetworkManagable.swift; sourceTree = "<group>"; };
E4896E082635420000AA4DD7 /* RequestManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestManager.swift; sourceTree = "<group>"; };
E4896E0D2635422300AA4DD7 /* AFRequestManagable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AFRequestManagable.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -254,11 +254,11 @@
E41EC961263010030043CC44 /* Network */ = {
isa = PBXGroup;
children = (
E41EC96E263030730043CC44 /* RequestType.swift */,
E41EC97C263119E90043CC44 /* EndPoint.swift */,
E41EC962263013220043CC44 /* RequestManager.swift */,
E41EC975263030980043CC44 /* NetworkManager.swift */,
821A75F126306F1F0083026F /* NetworkProtocol.swift */,
E4896E0D2635422300AA4DD7 /* AFRequestManagable.swift */,
E4896E082635420000AA4DD7 /* RequestManager.swift */,
E4896E0126353F1400AA4DD7 /* AFNetworkManagable.swift */,
E4896DFE26353AB000AA4DD7 /* NetworkManager.swift */,
);
path = Network;
sourceTree = "<group>";
Expand Down Expand Up @@ -381,25 +381,25 @@
82BBBBB82630067B008F89CB /* SideDishesCollection.swift in Sources */,
E41EC954262EBA2E0043CC44 /* SideDishes.swift in Sources */,
8268E35726301419002F518C /* MenuCellViewModel.swift in Sources */,
E4896DFF26353AB000AA4DD7 /* NetworkManager.swift in Sources */,
E41EC951262E6E9A0043CC44 /* SideDish.swift in Sources */,
82FDB9CB262DCFD8009E3EB7 /* MainViewController.swift in Sources */,
E4896E092635420000AA4DD7 /* RequestManager.swift in Sources */,
82FDB9C7262DCFD8009E3EB7 /* AppDelegate.swift in Sources */,
8214B70B262DE07A004467C2 /* MenuCell.swift in Sources */,
82A971D426323CC3005E419A /* AlertMessageController.swift in Sources */,
8214B70E262DE253004467C2 /* MainTableViewDataSource.swift in Sources */,
E41EC963263013220043CC44 /* RequestManager.swift in Sources */,
8268E35F26301B00002F518C /* TurnonAppUsecase.swift in Sources */,
82FDB9C9262DCFD8009E3EB7 /* SceneDelegate.swift in Sources */,
82BBBBB72630067B008F89CB /* SideDishFindable.swift in Sources */,
E4896E0E2635422300AA4DD7 /* AFRequestManagable.swift in Sources */,
E4896E0226353F1400AA4DD7 /* AFNetworkManagable.swift in Sources */,
8208FC5926315CCA009504EE /* TableViewTapToasterGesture.swift in Sources */,
82A971D72632478E005E419A /* CustomTableHeaderView.swift in Sources */,
E41EC97D263119E90043CC44 /* EndPoint.swift in Sources */,
E41EC976263030980043CC44 /* NetworkManager.swift in Sources */,
821A75F226306F1F0083026F /* NetworkProtocol.swift in Sources */,
82A971E126326CFB005E419A /* SideDishesCategory.swift in Sources */,
82A971DB263252A1005E419A /* SideDishesManageable.swift in Sources */,
8214B711262DE4B4004467C2 /* MainTableViewDelegate.swift in Sources */,
E41EC96F263030730043CC44 /* RequestType.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
17 changes: 9 additions & 8 deletions ios/sidedish/sidedish/Domain/UseCase/TurnonAppUsecase.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,21 @@

import Foundation
import Combine
import Alamofire

protocol ManufactureDataforViewModel {

func manufactureForMainViewCategory() -> AnyPublisher<[SideDishesCategory], Error>
func manufactureForMainViewCategory() -> AnyPublisher<[SideDishesCategory], AFError>

func manufactureForMainViewSideDishes(endPoint: String) -> AnyPublisher<[SideDish], Error>
func manufactureForMainViewSideDishes(endPoint: String) -> AnyPublisher<[SideDish], AFError>

}

class TurnonAppUsecase: ManufactureDataforViewModel {

private let networkmanager: NetworkProtocol
private let networkmanager: AFNetworkManagable

init(networkmanager: NetworkProtocol) {
init(networkmanager: AFNetworkManagable) {
self.networkmanager = networkmanager
}

Expand All @@ -29,11 +30,11 @@ class TurnonAppUsecase: ManufactureDataforViewModel {
self.init(networkmanager : networkmanager)
}

func manufactureForMainViewCategory() -> AnyPublisher<[SideDishesCategory], Error> {
return networkmanager.get(type: [SideDishesCategory].self, endPoint: EndPoint.categories)
func manufactureForMainViewCategory() -> AnyPublisher<[SideDishesCategory], AFError> {
return networkmanager.get(decodingType: [SideDishesCategory].self, endPoint: EndPoint.categories)
}

func manufactureForMainViewSideDishes(endPoint: String) -> AnyPublisher<[SideDish], Error> {
return networkmanager.get(type: [SideDish].self, endPoint: endPoint)
func manufactureForMainViewSideDishes(endPoint: String) -> AnyPublisher<[SideDish], AFError> {
return networkmanager.get(decodingType: [SideDish].self, endPoint: endPoint)
}
}
16 changes: 16 additions & 0 deletions ios/sidedish/sidedish/Network/AFNetworkManagable.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//
// AlamofireManagable.swift
// sidedish
//
// Created by Song on 2021/04/25.
//

import Foundation
import Combine
import Alamofire

protocol AFNetworkManagable {

func get<T: Decodable>(decodingType: T.Type, endPoint: String) -> AnyPublisher<T, AFError>

}
15 changes: 15 additions & 0 deletions ios/sidedish/sidedish/Network/AFRequestManagable.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//
// AFRequestManagable.swift
// sidedish
//
// Created by Song on 2021/04/25.
//

import Foundation
import Alamofire

protocol AFRequestManagable {

func AFRequest(for method: HTTPMethod, endPoint: String, parameters: [String: Any]?) -> DataRequest

}
20 changes: 9 additions & 11 deletions ios/sidedish/sidedish/Network/NetworkManager.swift
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
//
// NetworkManager.swift
// AlamofireManager.swift
// sidedish
//
// Created by Song on 2021/04/21.
// Created by Song on 2021/04/25.
//

import Foundation
import Combine
import Alamofire

class NetworkManager: NetworkProtocol {
class NetworkManager: AFNetworkManagable {

private let requestManager: RequestManager
private let requestManager: AFRequestManagable

init(baseAddress: String) {
self.requestManager = RequestManager(baseAddress: baseAddress)
}

func get<T: Decodable>(type: T.Type, endPoint: String) -> AnyPublisher<T, Error> {
let urlRequest = requestManager.create(endPoint: endPoint, body: nil, requestType: .get)

return URLSession.shared.dataTaskPublisher(for: urlRequest)
.map(\.data)
.decode(type: T.self, decoder: JSONDecoder())
.eraseToAnyPublisher()
func get<T: Decodable>(decodingType: T.Type, endPoint: String) -> AnyPublisher<T, AFError> {
let request = requestManager.AFRequest(for: .get, endPoint: endPoint, parameters: nil)
return request.publishDecodable(type: decodingType).value().eraseToAnyPublisher()
}

}
13 changes: 0 additions & 13 deletions ios/sidedish/sidedish/Network/NetworkProtocol.swift

This file was deleted.

37 changes: 20 additions & 17 deletions ios/sidedish/sidedish/Network/RequestManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,35 @@
// RequestManager.swift
// sidedish
//
// Created by Song on 2021/04/21.
// Created by Song on 2021/04/25.
//

import Foundation
import Alamofire

class RequestManager {

class RequestManager: AFRequestManagable {
private let baseAddress: String
private let headers: HTTPHeaders

init(baseAddress: String) {
init(baseAddress: String, headers: HTTPHeaders) {
self.baseAddress = baseAddress
self.headers = headers
}

func create(endPoint: String, body: Data?, requestType: RequestType) -> URLRequest {
guard let url = URL(string: self.baseAddress + endPoint) else {
return URLRequest(url: URL(string: baseAddress)!)
}

var request = URLRequest(url: url)
request.httpMethod = requestType.value

if let body = body {
request.httpBody = body
}
convenience init(baseAddress: String) {
let basicHeaders: HTTPHeaders = ["Content-Type":"application/json", "Accept":"application/json"]
self.init(baseAddress: baseAddress, headers: basicHeaders)
}

func AFRequest(for method: HTTPMethod, endPoint: String, parameters: [String: Any]?) -> DataRequest {
let entireAddress = self.baseAddress + endPoint

request.setValue("application/json", forHTTPHeaderField: "Content-Type")
return request
return AF.request(entireAddress,
method: method,
parameters: parameters,
encoding: URLEncoding.default,
headers: self.headers)
}

}
19 changes: 0 additions & 19 deletions ios/sidedish/sidedish/Network/RequestType.swift

This file was deleted.

0 comments on commit 8b1b0c9

Please sign in to comment.