Skip to content

Commit

Permalink
Merge branch 'develop' into feature/TeamNADA#56
Browse files Browse the repository at this point in the history
  • Loading branch information
dlwns33 committed Nov 12, 2021
2 parents 1fa120b + 5cf980f commit 0d8a4c2
Show file tree
Hide file tree
Showing 12 changed files with 268 additions and 117 deletions.
12 changes: 12 additions & 0 deletions NADA-iOS-forRelease.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
77AA68EA273E0EC4009C89B0 /* CardAddInGroupRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AA68E9273E0EC4009C89B0 /* CardAddInGroupRequest.swift */; };
77AA68EC273E202D009C89B0 /* CardListRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AA68EB273E202D009C89B0 /* CardListRequest.swift */; };
DBBB91E1639641F40C5B4416 /* Pods_NADA_iOS_forRelease.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A2183AE0E469153221624A0 /* Pods_NADA_iOS_forRelease.framework */; };
F811720027383097002742CF /* ChangeGroupRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F81171FF27383097002742CF /* ChangeGroupRequest.swift */; };
F822E7A92709CEB60020452C /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = F822E7A82709CEB60020452C /* Notification.swift */; };
F82FF81D2701EBCE00E57F8B /* CardCreation.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F82FF81C2701EBCE00E57F8B /* CardCreation.storyboard */; };
F82FF8252702000000E57F8B /* RequiredFlavorCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F82FF8232702000000E57F8B /* RequiredFlavorCollectionViewCell.swift */; };
Expand Down Expand Up @@ -113,6 +114,7 @@
77AA68E9273E0EC4009C89B0 /* CardAddInGroupRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardAddInGroupRequest.swift; sourceTree = "<group>"; };
77AA68EB273E202D009C89B0 /* CardListRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardListRequest.swift; sourceTree = "<group>"; };
7F4EE1D042EC783FA8528743 /* Pods-NADA-iOS-forRelease.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NADA-iOS-forRelease.debug.xcconfig"; path = "Target Support Files/Pods-NADA-iOS-forRelease/Pods-NADA-iOS-forRelease.debug.xcconfig"; sourceTree = "<group>"; };
F81171FF27383097002742CF /* ChangeGroupRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeGroupRequest.swift; sourceTree = "<group>"; };
F822E7A82709CEB60020452C /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = "<group>"; };
F82FF81C2701EBCE00E57F8B /* CardCreation.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = CardCreation.storyboard; sourceTree = "<group>"; };
F82FF8232702000000E57F8B /* RequiredFlavorCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequiredFlavorCollectionViewCell.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -280,6 +282,14 @@
path = Group;
sourceTree = "<group>";
};
F81171FE27383077002742CF /* Group */ = {
isa = PBXGroup;
children = (
F81171FF27383097002742CF /* ChangeGroupRequest.swift */,
);
path = Group;
sourceTree = "<group>";
};
F82FF8222701FFE300E57F8B /* RequiredFlavor */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -460,6 +470,7 @@
F8FC439C26C01EC90033E151 /* Classes */,
F8FC439D26C01EEC0033E151 /* AppModel */,
F8C83FB9272F9F030009DF0D /* NetworkModel */,
F81171FE27383077002742CF /* Group */,
F8FC439E26C01EF70033E151 /* NetworkService */,
F8FC439F26C01EFC0033E151 /* Protocols */,
F8FC43A026C01F040033E151 /* ViewControllers */,
Expand Down Expand Up @@ -774,6 +785,7 @@
F8FC438626C01CDD0033E151 /* AppDelegate.swift in Sources */,
F8C83FB8272F9E3F0009DF0D /* UtilAPI.swift in Sources */,
F8FC438826C01CDD0033E151 /* SceneDelegate.swift in Sources */,
F811720027383097002742CF /* ChangeGroupRequest.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
21 changes: 21 additions & 0 deletions NADA-iOS-forRelease/Sources/Group/ChangeGroupRequest.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//
// ChangeGroupRequest.swift
// NADA-iOS-forRelease
//
// Created by kimhyungyu on 2021/11/08.
//

import Foundation

// MARK: - ChangeGroupRequest
struct ChangeGroupRequest: Codable {
let cardID, userID: String
let groupID, newGroupID: Int

enum CodingKeys: String, CodingKey {
case cardID = "cardId"
case userID = "userId"
case groupID = "groupId"
case newGroupID = "newGroupId"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
import Foundation

struct GenericResponse<T: Codable>: Codable {
var msg: String
var timestamp: String
var data: T?
let msg: String
let timestamp: String
let data: T?

enum CodingKeys: String, CodingKey {
case msg
Expand Down
10 changes: 5 additions & 5 deletions NADA-iOS-forRelease/Sources/NetworkService/Card/CardAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import Foundation
import Moya

public class CardAPI {

static let shared = CardAPI()
var cardProvider = MoyaProvider<CardService>(plugins: [MoyaLoggerPlugin()])

Expand All @@ -22,7 +21,7 @@ public class CardAPI {
let statusCode = response.statusCode
let data = response.data

let networkResult = self.judgeStatus(by: statusCode, data)
let networkResult = self.judgeGetCardDetailFetchStatus(by: statusCode, data)
completion(networkResult)

case .failure(let err):
Expand All @@ -38,16 +37,17 @@ public class CardAPI {
let statusCode = response.statusCode
let data = response.data

let networkResult = self.judgeStatus(by: statusCode, data)
let networkResult = self.judgeGetCardDetailFetchStatus(by: statusCode, data)
completion(networkResult)

case .failure(let err):
print(err)
completion(.networkFail)
}
}
}

private func judgeStatus(by statusCode: Int, _ data: Data) -> NetworkResult<Any> {
private func judgeGetCardDetailFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult<Any> {

let decoder = JSONDecoder()
guard let decodedData = try? decoder.decode(GenericResponse<Card>.self, from: data)
Expand All @@ -56,7 +56,7 @@ public class CardAPI {
}

switch statusCode {
case 200:
case 201:
return .success(decodedData.data)
case 400..<500:
return .requestErr(decodedData.msg)
Expand Down
91 changes: 44 additions & 47 deletions NADA-iOS-forRelease/Sources/NetworkService/Card/CardService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -47,61 +47,58 @@ extension CardService: TargetType {
return .requestPlain
case .cardCreation(let request, let image):

// var multiPartData: [Moya.MultipartFormData] = []
//
// let userIDData = request.userID.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(userIDData), name: "userId"))
// let defaultImageData = "\(request.defaultImage)".data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(defaultImageData), name: "defaultImage"))
// let titleData = request.title.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(titleData), name: "title"))
// let nameData = request.name.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(nameData), name: "name"))
// let birthDateData = request.birthDate.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(birthDateData), name: "birthDate"))
// let mbtiData = request.mbti.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(mbtiData), name: "mbti"))
// let instagramData = request.instagram.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(instagramData), name: "instagram"))
// let linkNameData = request.linkName.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(linkNameData), name: "linkName"))
// let linkData = request.link.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(linkData), name: "link"))
// let descriptionData = request.description.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(descriptionData), name: "description"))
// let isMinchoData = request.isMincho.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(isMinchoData), name: "isMincho"))
// let isSojuData = request.isSoju.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(isSojuData), name: "isSoju"))
// let isBoomukData = request.isBoomuk.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(isBoomukData), name: "isBoomuk"))
// let isSaucedData = request.isSauced.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(isSaucedData), name: "isSauced"))
// let oneQuestionData = request.oneQuestion.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(oneQuestionData), name: "oneQuestion"))
// let oneAnswerData = request.oneAnswer.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(oneAnswerData), name: "oneAnswer"))
// let twoQuestionData = request.twoQuestion.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(twoQuestionData), name: "twoQuestion"))
// let twoAnswerData = request.twoAnswer.data(using: .utf8) ?? Data()
// multiPartData.append(MultipartFormData(provider: .data(twoAnswerData), name: "twoAnswer"))
//
// let imageData = MultipartFormData(provider: .data(image.pngData() ?? Data()), name: "image", fileName: "image", mimeType: "image/png")
// multiPartData.append(imageData)
//
// return .uploadMultipart(multiPartData)
return .requestPlain
var multiPartData: [Moya.MultipartFormData] = []

let userIDData = request.userID.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(userIDData), name: "card.userId"))
let defaultImageData = "\(request.defaultImage)".data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(defaultImageData), name: "card.defaultImage"))
let titleData = request.title.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(titleData), name: "card.title"))
let nameData = request.name.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(nameData), name: "card.name"))
let birthDateData = request.birthDate.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(birthDateData), name: "card.birthDate"))
let mbtiData = request.mbti.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(mbtiData), name: "card.mbti"))
let instagramData = request.instagram.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(instagramData), name: "card.instagram"))
let linkNameData = request.linkName.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(linkNameData), name: "card.linkName"))
let linkData = request.link.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(linkData), name: "card.link"))
let descriptionData = request.description.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(descriptionData), name: "card.description"))
let isMinchoData = Bool(request.isMincho).description.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(isMinchoData), name: "card.isMincho"))
let isSojuData = Bool(request.isSoju).description.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(isSojuData), name: "card.isSoju"))
let isBoomukData = Bool(request.isBoomuk).description.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(isBoomukData), name: "card.isBoomuk"))
let isSaucedData = Bool(request.isSauced).description.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(isSaucedData), name: "card.isSauced"))
let oneQuestionData = request.oneQuestion.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(oneQuestionData), name: "card.oneQuestion"))
let oneAnswerData = request.oneAnswer.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(oneAnswerData), name: "card.oneAnswer"))
let twoQuestionData = request.twoQuestion.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(twoQuestionData), name: "card.twoQuestion"))
let twoAnswerData = request.twoAnswer.data(using: .utf8) ?? Data()
multiPartData.append(MultipartFormData(provider: .data(twoAnswerData), name: "card.twoAnswer"))

let imageData = MultipartFormData(provider: .data(image.pngData() ?? Data()), name: "image", fileName: "image", mimeType: "image/png")
multiPartData.append(imageData)

return .uploadMultipart(multiPartData)
}
}

var headers: [String : String]? {
var headers: [String: String]? {
switch self {
case .cardDetailFetch:
return .none
case .cardCreation:
return ["Content-Type": "multipart/form-data"]
}
}


}
80 changes: 66 additions & 14 deletions NADA-iOS-forRelease/Sources/NetworkService/Group/GroupAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,48 @@ public class GroupAPI {

public init() { }

func putChangeGroup(request: ChangeGroupRequest, completion: @escaping (NetworkResult<Any>) -> Void) {
groupProvider.request(.changeCardGroup(request: request)) { (result) in
switch result {
case .success(let response):
let statusCode = response.statusCode
let data = response.data

let networkResult = self.judgePutChangeGroupStatus(by: statusCode, data)
completion(networkResult)

case .failure(let err):
print(err)
}
}
}

func deleteCardInGroupDelete(groupID: Int, cardID: String, completion: @escaping (NetworkResult<Any>) -> Void) {
groupProvider.request(.cardInGroupDelete(groupID: groupID, cardID: cardID)) { (result) in
switch result {
case .success(let response):
let statusCode = response.statusCode
let data = response.data

let networkResult = self.judgePutChangeGroupStatus(by: statusCode, data)
completion(networkResult)

case .failure(let err):
print(err)
}
}
}

func getGroupListFetch(userID: String, completion: @escaping (NetworkResult<Any>) -> Void) {
groupProvider.request(.groupListFetch(userID: userID)) { (result) in
groupProvider.request(.groupListFetch(userID: userID)) { (result) in
switch result {
case .success(let response):
let statusCode = response.statusCode
let data = response.data

let networkResult = self.judgeStatus(by: statusCode, data)
completion(networkResult)

case .failure(let err):
print(err)
}
Expand All @@ -37,26 +69,26 @@ public class GroupAPI {
case .success(let response):
let statusCode = response.statusCode
let data = response.data

let networkResult = self.judgeStatus(by: statusCode, data)
completion(networkResult)

case .failure(let err):
print(err)
}
}
}

func postGroupAdd(groupRequest: GroupAddRequest, completion: @escaping (NetworkResult<Any>) -> Void) {
groupProvider.request(.groupAdd(groupRequest: groupRequest)) { (result) in
switch result {
case .success(let response):
let statusCode = response.statusCode
let data = response.data

let networkResult = self.judgeStatus(by: statusCode, data)
completion(networkResult)

case .failure(let err):
print(err)
}
Expand All @@ -69,10 +101,10 @@ public class GroupAPI {
case .success(let response):
let statusCode = response.statusCode
let data = response.data

let networkResult = self.judgeStatus(by: statusCode, data)
completion(networkResult)

case .failure(let err):
print(err)
}
Expand All @@ -85,10 +117,10 @@ public class GroupAPI {
case .success(let response):
let statusCode = response.statusCode
let data = response.data

let networkResult = self.judgeStatus(by: statusCode, data)
completion(networkResult)

case .failure(let err):
print(err)
}
Expand All @@ -101,10 +133,10 @@ public class GroupAPI {
case .success(let response):
let statusCode = response.statusCode
let data = response.data

let networkResult = self.judgeStatus(by: statusCode, data)
completion(networkResult)

case .failure(let err):
print(err)
}
Expand All @@ -130,4 +162,24 @@ public class GroupAPI {
return .networkFail
}
}

private func judgePutChangeGroupStatus(by statusCode: Int, _ data: Data) -> NetworkResult<Any> {

let decoder = JSONDecoder()
guard let decodedData = try? decoder.decode(GenericResponse<Card>.self, from: data)
else {
return .pathErr
}

switch statusCode {
case 200:
return .success(decodedData.data)
case 400..<500:
return .requestErr(decodedData.msg)
case 500:
return .serverErr
default:
return .networkFail
}
}
}
Loading

0 comments on commit 0d8a4c2

Please sign in to comment.