Advertisement
Guest User

Untitled

a guest
Mar 25th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.92 KB | None | 0 0
  1. //
  2. // Connection.swift
  3. //
  4. // Created by iTSangar on 10/3/15.
  5. // Copyright © 2015 iTSangar. All rights reserved.
  6. //
  7.  
  8. import Foundation
  9. import Alamofire
  10. import ObjectMapper
  11.  
  12. enum Result<T> {
  13. case Success(T)
  14. case Error(String)
  15. }
  16.  
  17. // MARK: - User Class
  18. class APIUser {
  19.  
  20. class func login(email email: String, password: String, completion: Result<User?> -> Void) {
  21. Alamofire.request(Router.UserLogin(["email": email, "password": password]))
  22. .responseJSON(completionHandler: { response in
  23. switch response.result {
  24. case .Success(let JSON):
  25. let status = Mapper<Error>().map(JSON)
  26. if status!.error as Bool {
  27. completion(Result.Error(status!.message))
  28. } else {
  29. let user = Mapper<User>().map(JSON)
  30. completion(Result.Success(user!))
  31. }
  32. case .Failure(let error):
  33. completion(Result.Error(Utils.stringFromError(error as NSError)))
  34. }
  35. })
  36. }
  37.  
  38. class func changePassword(userID id: Int, email: String, newPassword: String, completion: Result<User?> -> Void) {
  39. Alamofire.request(Router.UserNewPassword(id: id, ["email": email, "newpassword": newPassword]))
  40. .responseJSON(completionHandler: { response in
  41. switch response.result {
  42. case .Success(let JSON):
  43. let status = Mapper<Error>().map(JSON)
  44. if status!.error as Bool {
  45. completion(Result.Error(status!.message))
  46. } else {
  47. let user = Mapper<User>().map(JSON)
  48. completion(Result.Success(user!))
  49. }
  50. case .Failure(let error):
  51. completion(Result.Error(Utils.stringFromError(error as NSError)))
  52. }
  53. })
  54. }
  55.  
  56. }
  57.  
  58. // MARK: - Timeline Class
  59. class APITimeline {
  60.  
  61. class func user(completion: Result<Array<AnyObject>?> -> Void) {
  62. timeline("user", completion: completion)
  63. }
  64.  
  65. class func guest(completion: Result<Array<AnyObject>?> -> Void) {
  66. timeline("guest", completion: completion)
  67. }
  68.  
  69. private class func timeline(type: String, completion: Result<Array<AnyObject>?> -> Void) {
  70. Alamofire.request(Router.Timeline(["type": type]))
  71. .responseJSON(completionHandler: { response in
  72. switch response.result {
  73. case .Success(let JSON):
  74. let status = Mapper<Error>().map(JSON)
  75. if status!.error as Bool {
  76. completion(Result.Error(status!.message))
  77. } else {
  78. completion(Result.Success(parse(JSON)))
  79. }
  80. case .Failure(let error):
  81. completion(Result.Error(Utils.stringFromError(error as NSError)))
  82. }
  83. })
  84. }
  85.  
  86. private class func parse(json: AnyObject) -> Array<AnyObject>? {
  87. var timeline = Array<AnyObject>()
  88.  
  89. if let tt = Mapper<TimelineType>().map(json) {
  90. if let t = Mapper<Timeline>().map(json) {
  91. if let r = tt.types {
  92. for var index = 0; index < r.count; ++index {
  93. switch r[index].type! {
  94. case .Forum:
  95. timeline.append(Mapper<Forum>().map(t.rows![index])!)
  96. break
  97. case .Calendar:
  98. timeline.append(Mapper<Calendar>().map(t.rows![index])!)
  99. break
  100. case .Survey:
  101. timeline.append(Mapper<Survey>().map(t.rows![index])!)
  102. break
  103. case .News:
  104. timeline.append(Mapper<News>().map(t.rows![index])!)
  105. break
  106. case .Facebook:
  107. timeline.append(Mapper<Facebook>().map(t.rows![index])!)
  108. break
  109. case .Twitter:
  110. timeline.append(Mapper<Twitter>().map(t.rows![index])!)
  111. break
  112. }
  113. }
  114. }
  115. }
  116. }
  117.  
  118. return timeline
  119. }
  120.  
  121. }
  122.  
  123. // MARK: - Forum Class
  124. class APIForum {
  125.  
  126. class func forums(completion: Result<Forums?> -> Void) {
  127. Alamofire.request(Router.Forum)
  128. .responseJSON(completionHandler: { response in
  129. switch response.result {
  130. case .Success(let JSON):
  131. let status = Mapper<Error>().map(JSON)
  132. if status!.error as Bool {
  133. completion(Result.Error(status!.message))
  134. } else {
  135. let forums = Mapper<Forums>().map(JSON)
  136. completion(Result.Success(forums!))
  137. }
  138. case .Failure(let error):
  139. completion(Result.Error(Utils.stringFromError(error as NSError)))
  140. }
  141. })
  142. }
  143.  
  144. class func new(userID id: Int, title:String, completion: Result<String?> -> Void) {
  145. Alamofire.request(Router.ForumNew(["user": id, "title": title]))
  146. .responseJSON(completionHandler: { response in
  147. switch response.result {
  148. case .Success(let JSON):
  149. let status = Mapper<Error>().map(JSON)
  150. if status!.error as Bool {
  151. completion(Result.Error(status!.message))
  152. } else {
  153. completion(Result.Success(status!.message))
  154. }
  155. case .Failure(let error):
  156. completion(Result.Error(Utils.stringFromError(error as NSError)))
  157. }
  158. })
  159. }
  160.  
  161. class func replies(forumID id: Int, completion: Result<Replies?> -> Void) {
  162. APIReply.replies(type: Constant.FiegForum, id: id, completion: completion)
  163. }
  164.  
  165. class func newReply(forumID id: Int, userID: Int, reply: String, completion: Result<String?> -> Void) {
  166. APIReply.newReply(type: Constant.FiegForum, id: id, user: userID, reply: reply, completion: completion)
  167. }
  168.  
  169. class func deleteReply(replyID id: Int, completion: Result<String?> -> Void) {
  170. APIReply.delete(type: Constant.FiegForum, id: id, completion: completion)
  171. }
  172.  
  173. }
  174.  
  175. // MARK: - Survey Class
  176. class APISurvey {
  177.  
  178. class func surveys(completion: Result<Surveys?> -> Void) {
  179. Alamofire.request(Router.Surveys)
  180. .responseJSON(completionHandler: { response in
  181. switch response.result {
  182. case .Success(let JSON):
  183. let status = Mapper<Error>().map(JSON)
  184. if status!.error as Bool {
  185. completion(Result.Error(status!.message))
  186. } else {
  187. let surveys = Mapper<Surveys>().map(JSON)
  188. completion(Result.Success(surveys!))
  189. }
  190. case .Failure(let error):
  191. completion(Result.Error(Utils.stringFromError(error as NSError)))
  192. }
  193. })
  194. }
  195.  
  196. class func survey(surveyID id: Int, completion: Result<Survey?> -> Void) {
  197. Alamofire.request(Router.Survey(id: id))
  198. .responseJSON(completionHandler: { response in
  199. switch response.result {
  200. case .Success(let JSON):
  201. let status = Mapper<Error>().map(JSON)
  202. if status!.error as Bool {
  203. completion(Result.Error(status!.message))
  204. } else {
  205. let survey = Mapper<Survey>().map(JSON)
  206. completion(Result.Success(survey!))
  207. }
  208. case .Failure(let error):
  209. completion(Result.Error(Utils.stringFromError(error as NSError)))
  210. }
  211. })
  212. }
  213.  
  214. class func vote(surveyID id: Int, userID: Int, optionID: Int, completion: Result<String?> -> Void) {
  215. Alamofire.request(Router.SurveyVote(id: id, ["user": userID, "option": optionID]))
  216. .responseJSON(completionHandler: { response in
  217. switch response.result {
  218. case .Success(let JSON):
  219. let status = Mapper<Error>().map(JSON)
  220. if status!.error as Bool {
  221. completion(Result.Error(status!.message))
  222. } else {
  223. completion(Result.Success(status!.message))
  224. }
  225. case .Failure(let error):
  226. completion(Result.Error(Utils.stringFromError(error as NSError)))
  227. }
  228. })
  229. }
  230.  
  231. class func replies(surveyID id: Int, completion: Result<Replies?> -> Void) {
  232. APIReply.replies(type: Constant.FiegSurvey, id: id, completion: completion)
  233. }
  234.  
  235. class func newReply(surveyID id: Int, userID: Int, reply: String, completion: Result<String?> -> Void) {
  236. APIReply.newReply(type: Constant.FiegSurvey, id: id, user: userID, reply: reply, completion: completion)
  237. }
  238.  
  239. class func deleteReply(replyID id: Int, completion: Result<String?> -> Void) {
  240. APIReply.delete(type: Constant.FiegSurvey, id: id, completion: completion)
  241. }
  242.  
  243. }
  244.  
  245. // MARK: - Calendar Class
  246. class APICalendar {
  247.  
  248. class func calendars(month: Month, year: Year, completion: Result<Calendars?> -> Void) {
  249. Alamofire.request(Router.Calendars(["month": month.rawValue, "year": year.rawValue]))
  250. .responseJSON(completionHandler: { response in
  251. switch response.result {
  252. case .Success(let JSON):
  253. let status = Mapper<Error>().map(JSON)
  254. if status!.error as Bool {
  255. completion(Result.Error(status!.message))
  256. } else {
  257. let calendars = Mapper<Calendars>().map(JSON)
  258. completion(Result.Success(calendars!))
  259. }
  260. case .Failure(let error):
  261. completion(Result.Error(Utils.stringFromError(error as NSError)))
  262. }
  263. })
  264. }
  265.  
  266. class func vote(calendarID id: Int, userID: Int, option: Option, completion: Result<String?> -> Void) {
  267. Alamofire.request(Router.SurveyVote(id: id, ["user": userID, "option": option.rawValue]))
  268. .responseJSON(completionHandler: { response in
  269. switch response.result {
  270. case .Success(let JSON):
  271. let status = Mapper<Error>().map(JSON)
  272. if status!.error as Bool {
  273. completion(Result.Error(status!.message))
  274. } else {
  275. completion(Result.Success(status!.message))
  276. }
  277. case .Failure(let error):
  278. completion(Result.Error(Utils.stringFromError(error as NSError)))
  279. }
  280. })
  281. }
  282.  
  283. class func replies(calendarID id: Int, completion: Result<Replies?> -> Void) {
  284. APIReply.replies(type: Constant.FiegCalendar, id: id, completion: completion)
  285. }
  286.  
  287. class func newReply(calendarID id: Int, userID: Int, reply: String, completion: Result<String?> -> Void) {
  288. APIReply.newReply(type: Constant.FiegCalendar, id: id, user: userID, reply: reply, completion: completion)
  289. }
  290.  
  291. class func deleteReply(calendarID id: Int, completion: Result<String?> -> Void) {
  292. APIReply.delete(type: Constant.FiegCalendar, id: id, completion: completion)
  293. }
  294.  
  295. }
  296.  
  297. // MARK: - Reply Class
  298. private class APIReply {
  299.  
  300. class func replies(type type: String, id: Int, completion: Result<Replies?> -> Void) {
  301. Alamofire.request(Router.Reply(type: type, id: id))
  302. .responseJSON(completionHandler: { response in
  303. switch response.result {
  304. case .Success(let JSON):
  305. let status = Mapper<Error>().map(JSON)
  306. if status!.error as Bool {
  307. completion(Result.Error(status!.message))
  308. } else {
  309. let replies = Mapper<Replies>().map(JSON)
  310. completion(Result.Success(replies!))
  311. }
  312. case .Failure(let error):
  313. completion(Result.Error(Utils.stringFromError(error as NSError)))
  314. }
  315. })
  316. }
  317.  
  318. class func newReply(type type: String, id: Int, user: Int, reply: String, completion: Result<String?> -> Void) {
  319. Alamofire.request(Router.ReplyNew(type: type, id: id, ["user": user, "text": reply]))
  320. .responseJSON(completionHandler: { response in
  321. switch response.result {
  322. case .Success(let JSON):
  323. let status = Mapper<Error>().map(JSON)
  324. if status!.error as Bool {
  325. completion(Result.Error(status!.message))
  326. } else {
  327. completion(Result.Success(status!.message))
  328. }
  329. case .Failure(let error):
  330. completion(Result.Error(Utils.stringFromError(error as NSError)))
  331. }
  332. })
  333. }
  334.  
  335. class func delete(type type: String, id: Int, completion: Result<String?> -> Void) {
  336. Alamofire.request(Router.ReplyDelete(type: type, id: id))
  337. .responseJSON(completionHandler: { response in
  338. switch response.result {
  339. case .Success(let JSON):
  340. let status = Mapper<Error>().map(JSON)
  341. if status!.error as Bool {
  342. completion(Result.Error(status!.message))
  343. } else {
  344. completion(Result.Success(status!.message))
  345. }
  346. case .Failure(let error):
  347. completion(Result.Error(Utils.stringFromError(error as NSError)))
  348. }
  349. })
  350. }
  351.  
  352. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement