Skip to content

Commit

Permalink
Merge pull request #12 from KNU-CSE-APP/#9/Implementing-Rest-api
Browse files Browse the repository at this point in the history
#9/implementing rest api
  • Loading branch information
JunseokNoh authored Aug 22, 2021
2 parents d4f4c51 + bae13cc commit 77f4c0d
Show file tree
Hide file tree
Showing 21 changed files with 759 additions and 114 deletions.
16 changes: 16 additions & 0 deletions KNU_CSE/KNU_CSE.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@
681D382626ADC61D000D9FE8 /* BoardWriteView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 681D382526ADC61D000D9FE8 /* BoardWriteView.swift */; };
686889C626C55F6800486985 /* CommentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 686889C526C55F6800486985 /* CommentView.swift */; };
686889C826C5977D00486985 /* BoardWithPaging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 686889C726C5977D00486985 /* BoardWithPaging.swift */; };
686889CB26D2A2A000486985 /* DeleteAccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 686889CA26D2A29F00486985 /* DeleteAccountView.swift */; };
686889CD26D2A2B400486985 /* DeleteAccountViewModel+Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 686889CC26D2A2B400486985 /* DeleteAccountViewModel+Model.swift */; };
68C7629126B96EFA00792498 /* CategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68C7629026B96EFA00792498 /* CategoryCell.swift */; };
68C7629326B99F7F00792498 /* ResponseBody.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68C7629226B99F7F00792498 /* ResponseBody.swift */; };
68C7629626BC0CAE00792498 /* BaseViewModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68C7629526BC0CAE00792498 /* BaseViewModelChange.swift */; };
Expand Down Expand Up @@ -169,6 +171,8 @@
681D382526ADC61D000D9FE8 /* BoardWriteView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BoardWriteView.swift; sourceTree = "<group>"; };
686889C526C55F6800486985 /* CommentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommentView.swift; sourceTree = "<group>"; };
686889C726C5977D00486985 /* BoardWithPaging.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BoardWithPaging.swift; sourceTree = "<group>"; };
686889CA26D2A29F00486985 /* DeleteAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteAccountView.swift; sourceTree = "<group>"; };
686889CC26D2A2B400486985 /* DeleteAccountViewModel+Model.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DeleteAccountViewModel+Model.swift"; sourceTree = "<group>"; };
68C7629026B96EFA00792498 /* CategoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategoryCell.swift; sourceTree = "<group>"; };
68C7629226B99F7F00792498 /* ResponseBody.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseBody.swift; sourceTree = "<group>"; };
68C7629526BC0CAE00792498 /* BaseViewModelChange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewModelChange.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -291,6 +295,7 @@
children = (
68F861C626B1B18B00934BD2 /* UserInfrom */,
68F861C726B1B19D00934BD2 /* EditPw */,
686889C926D2A28200486985 /* DeleteAccount */,
68F861C826B1B1B800934BD2 /* ReservationList */,
68F861C926B1B1C100934BD2 /* WrittenBoardList */,
68F861CA26B1B1CA00934BD2 /* AppSetting */,
Expand Down Expand Up @@ -434,6 +439,15 @@
path = View;
sourceTree = "<group>";
};
686889C926D2A28200486985 /* DeleteAccount */ = {
isa = PBXGroup;
children = (
686889CA26D2A29F00486985 /* DeleteAccountView.swift */,
686889CC26D2A2B400486985 /* DeleteAccountViewModel+Model.swift */,
);
path = DeleteAccount;
sourceTree = "<group>";
};
68C7629426BC0CA200792498 /* Base */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -997,6 +1011,7 @@
68F861EB26B471D600934BD2 /* UserInformViewModel+Model.swift in Sources */,
68C7629326B99F7F00792498 /* ResponseBody.swift in Sources */,
681D37E526A6AD36000D9FE8 /* ViewProtocol.swift in Sources */,
686889CB26D2A2A000486985 /* DeleteAccountView.swift in Sources */,
681D37C426A45442000D9FE8 /* ClassRoomCell.swift in Sources */,
681D382026ADAE85000D9FE8 /* ReplyViewModel.swift in Sources */,
68F861E326B2EE8A00934BD2 /* FindPwView.swift in Sources */,
Expand Down Expand Up @@ -1029,6 +1044,7 @@
681D37F426A737AE000D9FE8 /* SignInNavigationView.swift in Sources */,
68F1A5EE26A008FF007B4B86 /* BaseObject.swift in Sources */,
681D37B926A42782000D9FE8 /* ClassRoomView.swift in Sources */,
686889CD26D2A2B400486985 /* DeleteAccountViewModel+Model.swift in Sources */,
681D37F926A73F71000D9FE8 /* BoardTitleCollectionCell.swift in Sources */,
68C762A626C40FEC00792498 /* Extension+StackView.swift in Sources */,
68F861DF26B2D31D00934BD2 /* ProfileTableCell.swift in Sources */,
Expand Down
15 changes: 15 additions & 0 deletions KNU_CSE/KNU_CSE/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,21 @@
</objects>
<point key="canvasLocation" x="928" y="2546"/>
</scene>
<!--Delete Account View-->
<scene sceneID="tW4-5L-Qft">
<objects>
<viewController storyboardIdentifier="DeleteAccountView" useStoryboardIdentifierAsRestorationIdentifier="YES" id="QCX-va-Ikl" customClass="DeleteAccountView" customModule="KNU_CSE" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="BEb-e2-KMj">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<viewLayoutGuide key="safeArea" id="sYJ-UB-EUo"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="jbm-a7-bel" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="3172" y="2546"/>
</scene>
</scenes>
<resources>
<image name="arrow.up.bin.fill" catalog="system" width="128" height="93"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,11 @@ extension UIViewController{
}
self.navigationController?.popToViewController(viewControllers[viewControllers.count-3], animated: true)
}

func getTopViewController()->UIViewController?{
guard let viewControllers = self.navigationController?.viewControllers else {
return nil
}
return viewControllers[viewControllers.count-2]
}
}
69 changes: 44 additions & 25 deletions KNU_CSE/KNU_CSE/Network Service/Base/BaseApiRequest.swift
Original file line number Diff line number Diff line change
Expand Up @@ -49,34 +49,26 @@ extension BaseApiRequest{
request.method = .get
case .post:
request.method = .post
if(requestBodyObject != nil){
let jsonEncoder = JSONEncoder()
do {
if let data = try? jsonEncoder.encode(requestBodyObject.self){
let jsonString = String(decoding: data, as: UTF8.self)
request.httpBody = data
print(jsonString)
}
}
}
case .put:
request.method = .put
if(requestBodyObject != nil){
let jsonEncoder = JSONEncoder()
do {
if let data = try? jsonEncoder.encode(requestBodyObject.self){
let jsonString = String(decoding: data, as: UTF8.self)
request.httpBody = data
print(jsonString)
}
}
}
case .delete:
request.method = .delete
default:
request.httpMethod = "GET"
break
}

if(requestBodyObject != nil){
let jsonEncoder = JSONEncoder()
do {
if let data = try? jsonEncoder.encode(requestBodyObject.self){
let jsonString = String(decoding: data, as: UTF8.self)
request.httpBody = data
print(jsonString)
}
}
}

return request
}

Expand All @@ -86,6 +78,14 @@ extension BaseApiRequest{
return getAddress(domain: "user/signIn")
case .SignUp:
return getAddress(domain: "user/signUp")
case .deleteAccount:
return getAddress(domain: "user/deleteMember")
case .codeForPw(let email):
return getAddress(domain: "user/findPassword/\(email)")
case .codeConfirmForPw:
return getAddress(domain: "user/verifyPassword")
case .changePasswordForFindPw:
return getAddress(domain: "user/changeValidatedPassword")
case .getInform:
return getAddress(domain: "user/getUserEmailNickname")
case .setInform:
Expand All @@ -94,9 +94,9 @@ extension BaseApiRequest{
return getAddress(domain: "user/profileimage")
case .changePassword:
return getAddress(domain: "user/changePassword")
case .CodeRequest(let email):
return "\(getAddress(domain: "user/verify"))/\(email)"
case .CodeConfirm:
case .codeRequest(let email):
return (getAddress(domain: "user/verify/\(email)"))
case .codeConfirm:
return getAddress(domain: "user/verify")
case .BoardWrite:
return getAddress(domain: "board/write")
Expand Down Expand Up @@ -124,6 +124,16 @@ extension BaseApiRequest{
return getAddress(domain: "comment/reply/write")
case .findContentsByBoardId(let boardId):
return getAddress(domain: "comment/findContentsByBoardId?boardId=\(boardId)")
case .searchSeat(let building, let roomNumber):
return getAddress(domain: "classRoom/searchSeats/\(building)/\(roomNumber)")
case .reservation:
return getAddress(domain: "reservation/reservation")
case .reservationFind:
return getAddress(domain: "reservation/findReservation")
case .reservationDelete:
return getAddress(domain: "reservation/delete")
case .reservationExtension:
return getAddress(domain: "reservation/extension")
case .none:
return ""
}
Expand All @@ -140,12 +150,16 @@ enum RequestHttpMethod{
enum Environment{
case SignIn
case SignUp
case deleteAccount
case codeForPw(String)
case codeConfirmForPw
case changePasswordForFindPw
case getInform
case setInform
case resetImage
case changePassword
case CodeRequest(String)
case CodeConfirm
case codeRequest(String)
case codeConfirm
case BoardWrite
case getBoardPaging(String,Int,Int)
case getBoard(Int)
Expand All @@ -159,6 +173,11 @@ enum Environment{
case deleteComment(Int)
case writeReply
case findContentsByBoardId(Int)
case searchSeat(String, Int)
case reservation
case reservationFind
case reservationDelete
case reservationExtension
}


Expand Down
87 changes: 78 additions & 9 deletions KNU_CSE/KNU_CSE/View/FindPw/FindPwView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,8 @@ class FindPwView:UIViewController,ViewProtocol{
self.sendCodeBtn.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: .light)
self.sendCodeBtn.tintColor = .white
self.sendCodeBtn.setTitleColor(UIColor.init(white: 1, alpha: 0.3), for: .highlighted)
self.sendCodeBtn.addAction{
let alert = Alert(title: "인증번호 전송", message: "인증번호가 해당 이메일로 전송되었습니다.", viewController: self)
alert.popUpDefaultAlert(action: nil)
self.sendCodeBtn.addAction{ [weak self] in
self?.findPwViewModel.requestCode()
}
}
}
Expand All @@ -46,7 +45,7 @@ class FindPwView:UIViewController,ViewProtocol{
self.emailCodeTextField.keyboardType = .numberPad
self.emailCodeTextField.placeholder = "인증번호를 입력하세요."
self.emailCodeTextField.bind { [weak self] code in
self?.findPwViewModel.emailCode = code
self?.findPwViewModel.account.code = code
}
}
}
Expand All @@ -59,9 +58,7 @@ class FindPwView:UIViewController,ViewProtocol{
self.confirmCodeBtn.tintColor = .white
self.confirmCodeBtn.setTitleColor(UIColor.init(white: 1, alpha: 0.3), for: .highlighted)
self.confirmCodeBtn.addAction{ [weak self] in
let alert = Alert(title: "인증 성공", message: "이메일 인증을 완료했습니다.", viewController: self!)
alert.popUpDefaultAlert(action: nil)
self?.showPwField()
self?.findPwViewModel.requestCodeConfirm()
}
}
}
Expand Down Expand Up @@ -137,6 +134,8 @@ class FindPwView:UIViewController,ViewProtocol{
self.initUI()
self.addView()
self.setUpConstraints()

self.Binding()
}

func initUI(){
Expand Down Expand Up @@ -286,8 +285,8 @@ extension FindPwView: UITextFieldDelegate{

func addBtnAction(){
self.registerBtn.backgroundColor = Color.mainColor
self.registerBtn.addAction{

self.registerBtn.addAction { [weak self] in
self?.findPwViewModel.modifyPw()
}
}

Expand All @@ -312,3 +311,73 @@ extension FindPwView{
self.registerBtn.isHidden = false
}
}

extension FindPwView{
func Binding(){
self.BindingForCode()
self.BindingForCodeConfirm()
self.BindingForModifyPw()
}

func BindingForCode(){
self.findPwViewModel.emailCodeAction.binding(successHandler: {
[weak self] result in
if result.success{

}else{
if let error = result.error?.message{
Alert(title: "실패", message: error, viewController: self!).popUpDefaultAlert(action: nil)
}
}
}, failHandler: { [weak self] Error in
Alert(title: "실패", message: "네트워크 상태를 확인하세요", viewController: self!).popUpDefaultAlert(action: nil)
}, asyncHandler: { [weak self] in
let alert = Alert(title: "인증번호 전송", message: "인증번호가 해당 이메일로 전송되었습니다.\n전송된 메일이 스팸함에 있을 수 있습니다.", viewController: self!)
alert.popUpDefaultAlert(action: nil)
}, endHandler: {

})
}

func BindingForCodeConfirm(){
self.findPwViewModel.emailCodeConfirmAction.binding(successHandler: {
[weak self] result in
if result.success, let code = result.response{
self?.findPwViewModel.account.code = code
self?.showPwField()
Alert(title: "인증 성공", message: "이메일 인증에 성공했습니다.", viewController: self!).popUpDefaultAlert(action: nil)
}else{
if let error = result.error?.message{
Alert(title: "실패", message: error, viewController: self!).popUpDefaultAlert(action: nil)
}
}
}, failHandler: { [weak self] Error in
Alert(title: "실패", message: "네트워크 상태를 확인하세요", viewController: self!).popUpDefaultAlert(action: nil)
}, asyncHandler: {

}, endHandler: {

})
}

func BindingForModifyPw(){
self.findPwViewModel.modifyPwAction.binding(successHandler: {
[weak self] result in
if result.success{
Alert(title: "비밀번호 변경 성공", message: "비밀번호 변경이 완료됐습니다. 변경한 비밀번호로 로그인해주세요.", viewController: self!).popUpDefaultAlert{ [weak self] _ in
self?.navigationController?.popViewController(animated: true)
}
}else{
if let error = result.error?.message{
Alert(title: "실패", message: error, viewController: self!).popUpDefaultAlert(action: nil)
}
}
}, failHandler: { [weak self] Error in
Alert(title: "실패", message: "네트워크 상태를 확인하세요", viewController: self!).popUpDefaultAlert(action: nil)
}, asyncHandler: {

}, endHandler: {

})
}
}
Loading

0 comments on commit 77f4c0d

Please sign in to comment.