@@ -10,6 +10,22 @@ import Foundation
1010import UIKit
1111import Alamofire
1212
13+enum ResultR: Int {
14+ case internalServerError = 500
15+ case exceededContent = 470
16+ case longContent = 471
17+ case incorrectContent = 472
18+ case impossibleContent = 473
19+ case invalidTocken = 498
20+ case alreadyRegistered = 409
21+ case invalidCode = 403
22+ case badAccess = 400
23+ case tooMuchToAdd = 406
24+ case notFound = 404
25+ case success1 = 204
26+ case success = 200
27+}
28+
1329class Model{
1430
1531 static let invalidTocken = 498
@@ -19,10 +35,12 @@ class Model{
1935 private static var isValidTocken: ((Int)->())? = { responce in
2036 print(responce)
2137 if responce == invalidTocken {
38+
39+ DataStorage.standard.setIsLoggedIn(value: false, with: 0)
40+ (UIApplication.shared.delegate as! AppDelegate).relaunch()
41+
2242 Model.logout {
2343 print("Logout Is Successful")
24− DataStorage.standard.setIsLoggedIn(value: false, with: 0)
25− (UIApplication.shared.delegate as! AppDelegate).relaunch()
2644 }
2745 }
2846 }
@@ -31,6 +49,7 @@ class Model{
3149 static let decoder = JSONDecoder()
3250
3351 static let authMeURL = URL(string: "\(baseUrl)/authentication/me")!
52+ static let deactivateURL = URL(string: "\(baseUrl)/deactivateAll")!
3453 static let registerMeURL = URL(string: "\(baseUrl)/authentication/register")!
3554 static let authVerifyURL = URL(string: "\(baseUrl)/authentication/verify")!
3655 static let authenticationURL = URL(string:"\(baseUrl)/authentication/login")!
@@ -40,6 +59,7 @@ class Model{
4059 static let postsPublishURL = URL(string:"\(baseUrl)/posts/publish")!
4160 static let usersURL = URL(string:"\(baseUrl)/users")!
4261 static let usersAllURL = URL(string:"\(baseUrl)/users/all")!
62+ static let usersUpdateURL = URL(string:"\(baseUrl)/users/update")!
4363 static let channelsGetURL = URL(string: "\(baseUrl)/channels/get")!
4464 static let channelsUpdateURL = URL(string: "\(baseUrl)/channels/update")!
4565 static let channelsListURL = URL(string: "\(baseUrl)/channels")!
@@ -208,6 +228,10 @@ class Model{
208228 AF.request(request).response { (responce) in
209229 isValidTocken?(responce.response?.statusCode ?? 498)
210230
231+ if let code = responce.response?.statusCode, code == 498 {
232+ return
233+ }
234+
211235 completion()
212236 }
213237 }
@@ -240,11 +264,14 @@ class Model{
240264 guard let code = responce.response?.statusCode else { return }
241265 isValidTocken?(code)
242266
267+ if let code = responce.response?.statusCode, code == 498 {
268+ return
269+ }
270+
243271 if code == 204 {
244− let fields = responce.response?.allHeaderFields as? [String :String]
245272
273+ let fields = responce.response?.allHeaderFields as? [String :String]
246274 let cookies = HTTPCookie.cookies(withResponseHeaderFields: fields!, for: responce.response!.url!)
247−
248275 HTTPCookieStorage.shared.setCookie(cookies[0])
249276
250277 completion()
@@ -264,12 +291,16 @@ class Model{
264291 guard let statusCode = responce.response?.statusCode else { completion(false); return }
265292 isValidTocken?(statusCode)
266293
294+ if let code = responce.response?.statusCode, code == 498 {
295+ return
296+ }
297+
267298 if statusCode == 204 {
268299 // at this point cookies are set
269300 completion(true)
301+ } else {
302+ completion(false)
270303 }
271−
272− completion(false)
273304 }
274305 }
275306
@@ -283,6 +314,10 @@ class Model{
283314 guard let statusCode = responce.response?.statusCode else { completion(false); return }
284315 isValidTocken?(statusCode)
285316
317+ if let code = responce.response?.statusCode, code == 498 {
318+ return
319+ }
320+
286321 guard let json = responce.data else { return }
287322 guard let personId = Int(String(data: json, encoding: String.Encoding.utf8)!) else {
288323 completion(false)
@@ -377,6 +412,10 @@ class Model{
377412
378413 isValidTocken?(response.response?.statusCode ?? 498)
379414
415+ if let code = response.response?.statusCode, code == 498 {
416+ return
417+ }
418+
380419 guard let json = response.data else { return }
381420
382421 guard let newQueery = try? decoder.decode(QueryPosts<Posts>.self, from: json) else { print("no")
@@ -388,7 +427,7 @@ class Model{
388427 }
389428
390429
391− static func createAndPublish(body: [Attachments], tags: [String]){
430+ static func createAndPublish(body: [Attachments], tags: [String], completion: @escaping ((ResultR)->())){
392431 let jsonUpd = CreatedPost(body: body, tags: tags)
393432 var request = URLRequest(url: postsPublishURL)
394433
@@ -402,6 +441,18 @@ class Model{
402441 (response) in
403442
404443 isValidTocken?(response.response?.statusCode ?? 498)
444+
445+ if let code = response.response?.statusCode, code == 498 {
446+ return
447+ }
448+
449+ if let code = response.response?.statusCode,
450+ let result = ResultR(rawValue: code)
451+ {
452+ completion(result)
453+ } else {
454+ completion(.internalServerError)
455+ }
405456 }
406457 }
407458
@@ -427,6 +478,10 @@ class Model{
427478
428479 isValidTocken?(response.response?.statusCode ?? 498)
429480
481+ if let code = response.response?.statusCode, code == 498 {
482+ return
483+ }
484+
430485 guard let json = response.data else { return }
431486
432487 guard let newPost = try? decoder.decode(QueryPosts<Posts>.self, from: json) else { return }
@@ -439,7 +494,7 @@ class Model{
439494
440495 static func getUsers(for ids: [Int], completion: @escaping (([Int:Users])->())){
441496 let json = "\(Set(ids))"
442− print(json)
497+
443498 var request = URLRequest(url: usersURL)
444499
445500 request.httpMethod = "POST"
@@ -453,6 +508,10 @@ class Model{
453508
454509 isValidTocken?(response.response?.statusCode ?? 498)
455510
511+ if let code = response.response?.statusCode, code == 498 {
512+ return
513+ }
514+
456515 guard let json = response.data else { return }
457516
458517 guard let users = try? decoder.decode([Users].self, from: json) else { return }
@@ -485,6 +544,9 @@ class Model{
485544
486545 isValidTocken?(response.response?.statusCode ?? 498)
487546
547+ if let code = response.response?.statusCode, code == 498 {
548+ return
549+ }
488550
489551 guard let json = response.data else { return }
490552
@@ -496,7 +558,7 @@ class Model{
496558 }
497559
498560
499− static func createChannel(with channel: Channels) {
561+ static func createChannel(with channel: Channels, completion: @escaping ((ResultR)->())) {
500562
501563 var request = URLRequest(url: channelsCreateURL)
502564 request.httpMethod = "POST"
@@ -507,6 +569,13 @@ class Model{
507569 (response) in
508570
509571 isValidTocken?(response.response?.statusCode ?? 498)
572+
573+ if let code = response.response?.statusCode, let result = ResultR(rawValue: code) {
574+ completion(result)
575+ return
576+ }
577+
578+ completion(ResultR.internalServerError)
510579 }
511580
512581 }
@@ -519,6 +588,9 @@ class Model{
519588 AF.request(request).responseJSON { (response) in
520589
521590 isValidTocken?(response.response?.statusCode ?? 498)
591+ if let code = response.response?.statusCode, code == 498 {
592+ return
593+ }
522594
523595 guard let json = response.data else { return }
524596
@@ -537,6 +609,9 @@ class Model{
537609
538610 AF.request(request).response { (response) in
539611 isValidTocken?(response.response?.statusCode ?? 498)
612+ if let code = response.response?.statusCode, code == 498 {
613+ return
614+ }
540615 }
541616 completion()
542617 }
@@ -552,6 +627,9 @@ class Model{
552627 (response) in
553628
554629 isValidTocken?(response.response?.statusCode ?? 498)
630+ if let code = response.response?.statusCode, code == 498 {
631+ return
632+ }
555633 }
556634 }
557635
@@ -574,6 +652,9 @@ class Model{
574652 }
575653
576654 isValidTocken?(response.response?.statusCode ?? 498)
655+ if let code = response.response?.statusCode, code == 498 {
656+ return
657+ }
577658 }
578659 }
579660
@@ -649,12 +730,13 @@ class Model{
649730 (response) in
650731
651732 isValidTocken?(response.response?.statusCode ?? 498)
733+ if let code = response.response?.statusCode, code == 498 {
734+ return
735+ }
652736
653737 guard let json = response.data else { return }
654738
655739 guard let newQueery = try? decoder.decode(QueryPosts<Posts>.self, from: json) else { return }
656−
657− print("\(anonymousChannel) \(newQueery)")
658740 completion((newQueery.users, newQueery.response))
659741 }
660742 }
@@ -664,6 +746,9 @@ class Model{
664746 AF.request(URLRequest(url: hashTagTreeURL)).responseJSON {
665747 (response) in
666748 isValidTocken?(response.response?.statusCode ?? 498)
749+ if let code = response.response?.statusCode, code == 498 {
750+ return
751+ }
667752 guard let json = response.data else { return }
668753 guard let tree = try? decoder.decode(CompletionTree.self, from: json) else { return }
669754 completion(tree)
@@ -681,6 +766,10 @@ class Model{
681766 AF.request(request).responseJSON { response in
682767 isValidTocken?(response.response?.statusCode ?? 498)
683768
769+ if let code = response.response?.statusCode, code == 498 {
770+ return
771+ }
772+
684773 guard let json = response.data else { return }
685774 let dialogs = try! decoder.decode(QueryPosts<Dialog>.self, from: json)
686775
@@ -852,6 +941,9 @@ class Model{
852941 AF.request(request).response { (response) in
853942
854943 isValidTocken?(response.response?.statusCode ?? 498)
944+ if let code = response.response?.statusCode, code == 498 {
945+ return
946+ }
855947
856948 guard let json = response.data else { return }
857949 let stringInt = String.init(data: json, encoding: String.Encoding.utf8)
@@ -861,7 +953,7 @@ class Model{
861953 }
862954 }
863955
864− static func getMessagesFor(typeOfChat: Model.Dialog, chat id: Int, exclusiveFrom: Int? = nil, limit l: Int = 10, direction: String = "backward", completion: @escaping (([LastMessage])->()))
956+ static func getMessagesFor(typeOfChat: Model.Dialog, chat id: Int, exclusiveFrom: Int? = nil, limit l: Int = 25, direction: String = "backward", completion: @escaping (([LastMessage])->()))
865957 {
866958 let req = GeneralRequest<Int>(direction: direction, limit: l, exclusiveFrom: exclusiveFrom, request: id)
867959 var request: URLRequest?
@@ -880,6 +972,9 @@ class Model{
880972 AF.request(request!).response { (response) in
881973
882974 isValidTocken?(response.response?.statusCode ?? 498)
975+ if let code = response.response?.statusCode, code == 498 {
976+ return
977+ }
883978
884979 guard let json = response.data else { return }
885980 guard let messages = try? decoder.decode([LastMessage].self, from: json) else { return }
@@ -897,6 +992,10 @@ class Model{
897992
898993 AF.request(request).response { (response) in
899994 isValidTocken?(response.response?.statusCode ?? 498)
995+
996+ if let code = response.response?.statusCode, code == 498 {
997+ return
998+ }
900999 }
9011000
9021001 completion()
@@ -911,6 +1010,10 @@ class Model{
9111010
9121011 AF.request(request).response { (response) in
9131012 isValidTocken?(response.response?.statusCode ?? 498)
1013+
1014+ if let code = response.response?.statusCode, code == 498 {
1015+ return
1016+ }
9141017 }
9151018
9161019 // completion()
@@ -953,7 +1056,7 @@ class Model{
9531056 }
9541057 }
9551058
956− static func sendMessage(message: SendMessage, completion: @escaping (()->())){
1059+ static func sendMessage(message: SendMessage, completion: @escaping ((ResultR)->())){
9571060
9581061 var request = URLRequest(url: messagesSendURL)
9591062 request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
@@ -963,7 +1066,15 @@ class Model{
9631066 AF.request(request).response { (response) in
9641067 isValidTocken?(response.response?.statusCode ?? 498)
9651068
966− completion()
1069+ if let code = response.response?.statusCode, code == 498 {
1070+ return
1071+ }
1072+
1073+ if let result = ResultR(rawValue: response.response!.statusCode){
1074+ completion(result)
1075+ } else {
1076+ completion(.internalServerError)
1077+ }
9671078 }
9681079 }
9691080
@@ -976,6 +1087,7 @@ class Model{
9761087 var campusCode: String
9771088 var name: String
9781089 var tags: [String]
1090+ var address: String
9791091
9801092 }
9811093
@@ -989,10 +1101,50 @@ class Model{
9891101 AF.request(request).response { (response) in
9901102 isValidTocken?(response.response?.statusCode ?? 498)
9911103
1104+ if let code = response.response?.statusCode, code == 498 {
1105+ return
1106+ }
1107+
9921108 guard let json = response.data else { return }
9931109 guard let faculties = try? decoder.decode([Faculty].self, from: json) else { return }
9941110
9951111 completion(faculties)
9961112 }
9971113 }
1114+
1115+ static func userUpdate(with newUser: NewRegistration, completion: @escaping ((Bool)->())) {
1116+ var request = URLRequest(url: usersUpdateURL)
1117+ request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
1118+ request.httpMethod = "POST"
1119+ request.httpBody = try? JSONEncoder().encode(newUser)
1120+
1121+ AF.request(request).response { (response) in
1122+ isValidTocken?(response.response?.statusCode ?? 498)
1123+
1124+ if let code = response.response?.statusCode, code == 498 {
1125+ return
1126+ }
1127+
1128+ if let code = response.response?.statusCode, code != 204{
1129+ completion (false)
1130+ } else {
1131+ completion(true)
1132+ }
1133+ }
1134+ }
1135+
1136+ static func deactivateAll(completion: @escaping (()->())){
1137+ var request = URLRequest(url: deactivateURL)
1138+ request.httpMethod = "DELETE"
1139+
1140+ AF.request(request).response { (responce) in
1141+ isValidTocken?(responce.response?.statusCode ?? 498)
1142+
1143+ if let code = responce.response?.statusCode, code == 498 {
1144+ return
1145+ }
1146+
1147+ completion()
1148+ }
1149+ }
9981150}