@@ -10,6 +10,22 @@ import Foundation
10import UIKit
10import UIKit
11import Alamofire
11import Alamofire
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
23+ case tooMuchToAdd = 406
13class Model{
29class Model{
15 static let invalidTocken = 498
31 static let invalidTocken = 498
@@ -19,10 +35,12 @@ class Model{
19 private static var isValidTocken: ((Int)->())? = { responce in
35 private static var isValidTocken: ((Int)->())? = { responce in
20 print(responce)
36 print(responce)
21 if responce == invalidTocken {
37 if responce == invalidTocken {
39+ DataStorage.standard.setIsLoggedIn(value: false, with: 0)
40+ (UIApplication.shared.delegate as! AppDelegate).relaunch()
22 Model.logout {
42 Model.logout {
23 print("Logout Is Successful")
43 print("Logout Is Successful")
24− DataStorage.standard.setIsLoggedIn(value: false, with: 0)
25− (UIApplication.shared.delegate as! AppDelegate).relaunch()
@@ -31,6 +49,7 @@ class Model{
31 static let decoder = JSONDecoder()
49 static let decoder = JSONDecoder()
33 static let authMeURL = URL(string: "\(baseUrl)/authentication/me")!
51 static let authMeURL = URL(string: "\(baseUrl)/authentication/me")!
52+ static let deactivateURL = URL(string: "\(baseUrl)/deactivateAll")!
34 static let registerMeURL = URL(string: "\(baseUrl)/authentication/register")!
53 static let registerMeURL = URL(string: "\(baseUrl)/authentication/register")!
35 static let authVerifyURL = URL(string: "\(baseUrl)/authentication/verify")!
54 static let authVerifyURL = URL(string: "\(baseUrl)/authentication/verify")!
36 static let authenticationURL = URL(string:"\(baseUrl)/authentication/login")!
55 static let authenticationURL = URL(string:"\(baseUrl)/authentication/login")!
@@ -40,6 +59,7 @@ class Model{
40 static let postsPublishURL = URL(string:"\(baseUrl)/posts/publish")!
59 static let postsPublishURL = URL(string:"\(baseUrl)/posts/publish")!
41 static let usersURL = URL(string:"\(baseUrl)/users")!
60 static let usersURL = URL(string:"\(baseUrl)/users")!
42 static let usersAllURL = URL(string:"\(baseUrl)/users/all")!
61 static let usersAllURL = URL(string:"\(baseUrl)/users/all")!
62+ static let usersUpdateURL = URL(string:"\(baseUrl)/users/update")!
43 static let channelsGetURL = URL(string: "\(baseUrl)/channels/get")!
63 static let channelsGetURL = URL(string: "\(baseUrl)/channels/get")!
44 static let channelsUpdateURL = URL(string: "\(baseUrl)/channels/update")!
64 static let channelsUpdateURL = URL(string: "\(baseUrl)/channels/update")!
45 static let channelsListURL = URL(string: "\(baseUrl)/channels")!
65 static let channelsListURL = URL(string: "\(baseUrl)/channels")!
@@ -208,6 +228,10 @@ class Model{
208 AF.request(request).response { (responce) in
228 AF.request(request).response { (responce) in
209 isValidTocken?(responce.response?.statusCode ?? 498)
229 isValidTocken?(responce.response?.statusCode ?? 498)
231+ if let code = responce.response?.statusCode, code == 498 {
211 completion()
235 completion()
@@ -240,11 +264,14 @@ class Model{
240 guard let code = responce.response?.statusCode else { return }
264 guard let code = responce.response?.statusCode else { return }
241 isValidTocken?(code)
265 isValidTocken?(code)
267+ if let code = responce.response?.statusCode, code == 498 {
243 if code == 204 {
271 if code == 204 {
244− let fields = responce.response?.allHeaderFields as? [String :String]
273+ let fields = responce.response?.allHeaderFields as? [String :String]
246 let cookies = HTTPCookie.cookies(withResponseHeaderFields: fields!, for: responce.response!.url!)
274 let cookies = HTTPCookie.cookies(withResponseHeaderFields: fields!, for: responce.response!.url!)
248 HTTPCookieStorage.shared.setCookie(cookies[0])
275 HTTPCookieStorage.shared.setCookie(cookies[0])
250 completion()
277 completion()
@@ -264,12 +291,16 @@ class Model{
264 guard let statusCode = responce.response?.statusCode else { completion(false); return }
291 guard let statusCode = responce.response?.statusCode else { completion(false); return }
265 isValidTocken?(statusCode)
292 isValidTocken?(statusCode)
294+ if let code = responce.response?.statusCode, code == 498 {
267 if statusCode == 204 {
298 if statusCode == 204 {
268 // at this point cookies are set
299 // at this point cookies are set
269 completion(true)
300 completion(true)
@@ -283,6 +314,10 @@ class Model{
283 guard let statusCode = responce.response?.statusCode else { completion(false); return }
314 guard let statusCode = responce.response?.statusCode else { completion(false); return }
284 isValidTocken?(statusCode)
315 isValidTocken?(statusCode)
317+ if let code = responce.response?.statusCode, code == 498 {
286 guard let json = responce.data else { return }
321 guard let json = responce.data else { return }
287 guard let personId = Int(String(data: json, encoding: String.Encoding.utf8)!) else {
322 guard let personId = Int(String(data: json, encoding: String.Encoding.utf8)!) else {
288 completion(false)
323 completion(false)
@@ -377,6 +412,10 @@ class Model{
378 isValidTocken?(response.response?.statusCode ?? 498)
413 isValidTocken?(response.response?.statusCode ?? 498)
415+ if let code = response.response?.statusCode, code == 498 {
380 guard let json = response.data else { return }
419 guard let json = response.data else { return }
382 guard let newQueery = try? decoder.decode(QueryPosts<Posts>.self, from: json) else { print("no")
421 guard let newQueery = try? decoder.decode(QueryPosts<Posts>.self, from: json) else { print("no")
@@ -388,7 +427,7 @@ class Model{
391− static func createAndPublish(body: [Attachments], tags: [String]){
430+ static func createAndPublish(body: [Attachments], tags: [String], completion: @escaping ((ResultR)->())){
392 let jsonUpd = CreatedPost(body: body, tags: tags)
431 let jsonUpd = CreatedPost(body: body, tags: tags)
393 var request = URLRequest(url: postsPublishURL)
432 var request = URLRequest(url: postsPublishURL)
@@ -402,6 +441,18 @@ class Model{
402 (response) in
441 (response) in
404 isValidTocken?(response.response?.statusCode ?? 498)
443 isValidTocken?(response.response?.statusCode ?? 498)
445+ if let code = response.response?.statusCode, code == 498 {
449+ if let code = response.response?.statusCode,
450+ let result = ResultR(rawValue: code)
454+ completion(.internalServerError)
@@ -427,6 +478,10 @@ class Model{
428 isValidTocken?(response.response?.statusCode ?? 498)
479 isValidTocken?(response.response?.statusCode ?? 498)
481+ if let code = response.response?.statusCode, code == 498 {
430 guard let json = response.data else { return }
485 guard let json = response.data else { return }
432 guard let newPost = try? decoder.decode(QueryPosts<Posts>.self, from: json) else { return }
487 guard let newPost = try? decoder.decode(QueryPosts<Posts>.self, from: json) else { return }
@@ -439,7 +494,7 @@ class Model{
440 static func getUsers(for ids: [Int], completion: @escaping (([Int:Users])->())){
495 static func getUsers(for ids: [Int], completion: @escaping (([Int:Users])->())){
441 let json = "\(Set(ids))"
496 let json = "\(Set(ids))"
443 var request = URLRequest(url: usersURL)
498 var request = URLRequest(url: usersURL)
445 request.httpMethod = "POST"
500 request.httpMethod = "POST"
@@ -453,6 +508,10 @@ class Model{
454 isValidTocken?(response.response?.statusCode ?? 498)
509 isValidTocken?(response.response?.statusCode ?? 498)
511+ if let code = response.response?.statusCode, code == 498 {
456 guard let json = response.data else { return }
515 guard let json = response.data else { return }
458 guard let users = try? decoder.decode([Users].self, from: json) else { return }
517 guard let users = try? decoder.decode([Users].self, from: json) else { return }
@@ -485,6 +544,9 @@ class Model{
486 isValidTocken?(response.response?.statusCode ?? 498)
545 isValidTocken?(response.response?.statusCode ?? 498)
547+ if let code = response.response?.statusCode, code == 498 {
489 guard let json = response.data else { return }
551 guard let json = response.data else { return }
@@ -496,7 +558,7 @@ class Model{
499− static func createChannel(with channel: Channels) {
561+ static func createChannel(with channel: Channels, completion: @escaping ((ResultR)->())) {
501 var request = URLRequest(url: channelsCreateURL)
563 var request = URLRequest(url: channelsCreateURL)
502 request.httpMethod = "POST"
564 request.httpMethod = "POST"
@@ -507,6 +569,13 @@ class Model{
507 (response) in
569 (response) in
509 isValidTocken?(response.response?.statusCode ?? 498)
571 isValidTocken?(response.response?.statusCode ?? 498)
573+ if let code = response.response?.statusCode, let result = ResultR(rawValue: code) {
578+ completion(ResultR.internalServerError)
@@ -519,6 +588,9 @@ class Model{
519 AF.request(request).responseJSON { (response) in
588 AF.request(request).responseJSON { (response) in
521 isValidTocken?(response.response?.statusCode ?? 498)
590 isValidTocken?(response.response?.statusCode ?? 498)
591+ if let code = response.response?.statusCode, code == 498 {
523 guard let json = response.data else { return }
595 guard let json = response.data else { return }
@@ -537,6 +609,9 @@ class Model{
538 AF.request(request).response { (response) in
610 AF.request(request).response { (response) in
539 isValidTocken?(response.response?.statusCode ?? 498)
611 isValidTocken?(response.response?.statusCode ?? 498)
612+ if let code = response.response?.statusCode, code == 498 {
541 completion()
616 completion()
@@ -552,6 +627,9 @@ class Model{
552 (response) in
627 (response) in
554 isValidTocken?(response.response?.statusCode ?? 498)
629 isValidTocken?(response.response?.statusCode ?? 498)
630+ if let code = response.response?.statusCode, code == 498 {
@@ -574,6 +652,9 @@ class Model{
576 isValidTocken?(response.response?.statusCode ?? 498)
654 isValidTocken?(response.response?.statusCode ?? 498)
655+ if let code = response.response?.statusCode, code == 498 {
@@ -649,12 +730,13 @@ class Model{
649 (response) in
730 (response) in
651 isValidTocken?(response.response?.statusCode ?? 498)
732 isValidTocken?(response.response?.statusCode ?? 498)
733+ if let code = response.response?.statusCode, code == 498 {
653 guard let json = response.data else { return }
737 guard let json = response.data else { return }
655 guard let newQueery = try? decoder.decode(QueryPosts<Posts>.self, from: json) else { return }
739 guard let newQueery = try? decoder.decode(QueryPosts<Posts>.self, from: json) else { return }
657− print("\(anonymousChannel) \(newQueery)")
658 completion((newQueery.users, newQueery.response))
740 completion((newQueery.users, newQueery.response))
@@ -664,6 +746,9 @@ class Model{
664 AF.request(URLRequest(url: hashTagTreeURL)).responseJSON {
746 AF.request(URLRequest(url: hashTagTreeURL)).responseJSON {
665 (response) in
747 (response) in
666 isValidTocken?(response.response?.statusCode ?? 498)
748 isValidTocken?(response.response?.statusCode ?? 498)
749+ if let code = response.response?.statusCode, code == 498 {
667 guard let json = response.data else { return }
752 guard let json = response.data else { return }
668 guard let tree = try? decoder.decode(CompletionTree.self, from: json) else { return }
753 guard let tree = try? decoder.decode(CompletionTree.self, from: json) else { return }
669 completion(tree)
754 completion(tree)
@@ -681,6 +766,10 @@ class Model{
681 AF.request(request).responseJSON { response in
766 AF.request(request).responseJSON { response in
682 isValidTocken?(response.response?.statusCode ?? 498)
767 isValidTocken?(response.response?.statusCode ?? 498)
769+ if let code = response.response?.statusCode, code == 498 {
684 guard let json = response.data else { return }
773 guard let json = response.data else { return }
685 let dialogs = try! decoder.decode(QueryPosts<Dialog>.self, from: json)
774 let dialogs = try! decoder.decode(QueryPosts<Dialog>.self, from: json)
@@ -852,6 +941,9 @@ class Model{
852 AF.request(request).response { (response) in
941 AF.request(request).response { (response) in
854 isValidTocken?(response.response?.statusCode ?? 498)
943 isValidTocken?(response.response?.statusCode ?? 498)
944+ if let code = response.response?.statusCode, code == 498 {
856 guard let json = response.data else { return }
948 guard let json = response.data else { return }
857 let stringInt = String.init(data: json, encoding: String.Encoding.utf8)
949 let stringInt = String.init(data: json, encoding: String.Encoding.utf8)
@@ -861,7 +953,7 @@ class Model{
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])->()))
866 let req = GeneralRequest<Int>(direction: direction, limit: l, exclusiveFrom: exclusiveFrom, request: id)
958 let req = GeneralRequest<Int>(direction: direction, limit: l, exclusiveFrom: exclusiveFrom, request: id)
867 var request: URLRequest?
959 var request: URLRequest?
@@ -880,6 +972,9 @@ class Model{
880 AF.request(request!).response { (response) in
972 AF.request(request!).response { (response) in
882 isValidTocken?(response.response?.statusCode ?? 498)
974 isValidTocken?(response.response?.statusCode ?? 498)
975+ if let code = response.response?.statusCode, code == 498 {
884 guard let json = response.data else { return }
979 guard let json = response.data else { return }
885 guard let messages = try? decoder.decode([LastMessage].self, from: json) else { return }
980 guard let messages = try? decoder.decode([LastMessage].self, from: json) else { return }
@@ -897,6 +992,10 @@ class Model{
898 AF.request(request).response { (response) in
993 AF.request(request).response { (response) in
899 isValidTocken?(response.response?.statusCode ?? 498)
994 isValidTocken?(response.response?.statusCode ?? 498)
996+ if let code = response.response?.statusCode, code == 498 {
902 completion()
1001 completion()
@@ -911,6 +1010,10 @@ class Model{
912 AF.request(request).response { (response) in
1011 AF.request(request).response { (response) in
913 isValidTocken?(response.response?.statusCode ?? 498)
1012 isValidTocken?(response.response?.statusCode ?? 498)
1014+ if let code = response.response?.statusCode, code == 498 {
916 // completion()
1019 // completion()
@@ -953,7 +1056,7 @@ class Model{
956− static func sendMessage(message: SendMessage, completion: @escaping (()->())){
1059+ static func sendMessage(message: SendMessage, completion: @escaping ((ResultR)->())){
958 var request = URLRequest(url: messagesSendURL)
1061 var request = URLRequest(url: messagesSendURL)
959 request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
1062 request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
@@ -963,7 +1066,15 @@ class Model{
963 AF.request(request).response { (response) in
1066 AF.request(request).response { (response) in
964 isValidTocken?(response.response?.statusCode ?? 498)
1067 isValidTocken?(response.response?.statusCode ?? 498)
1069+ if let code = response.response?.statusCode, code == 498 {
1073+ if let result = ResultR(rawValue: response.response!.statusCode){
966− completion()
1074+ completion(result)
1076+ completion(.internalServerError)
@@ -976,6 +1087,7 @@ class Model{
976 var campusCode: String
1087 var campusCode: String
977 var name: String
1088 var name: String
978 var tags: [String]
1089 var tags: [String]
1090+ var address: String
@@ -989,10 +1101,50 @@ class Model{
989 AF.request(request).response { (response) in
1101 AF.request(request).response { (response) in
990 isValidTocken?(response.response?.statusCode ?? 498)
1102 isValidTocken?(response.response?.statusCode ?? 498)
1104+ if let code = response.response?.statusCode, code == 498 {
992 guard let json = response.data else { return }
1108 guard let json = response.data else { return }
993 guard let faculties = try? decoder.decode([Faculty].self, from: json) else { return }
1109 guard let faculties = try? decoder.decode([Faculty].self, from: json) else { return }
995 completion(faculties)
1111 completion(faculties)
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)
1121+ AF.request(request).response { (response) in
1122+ isValidTocken?(response.response?.statusCode ?? 498)
1124+ if let code = response.response?.statusCode, code == 498 {
1128+ if let code = response.response?.statusCode, code != 204{
1136+ static func deactivateAll(completion: @escaping (()->())){
1137+ var request = URLRequest(url: deactivateURL)
1138+ request.httpMethod = "DELETE"
1140+ AF.request(request).response { (responce) in
1141+ isValidTocken?(responce.response?.statusCode ?? 498)
1143+ if let code = responce.response?.statusCode, code == 498 {