Created
December 25, 2015 09:28
-
-
Save korrio/85d641bf5c92a8edc187 to your computer and use it in GitHub Desktop.
Candychat API
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // | |
| // ApiManager.swift | |
| // CandyChat | |
| // | |
| // ENDPOINT : api.candychat.net | |
| // AUTHENTICATED ENDPONT : api.candychat.net/1.0 | |
| // | |
| // POSTMAN (IMPORT BY URL) | |
| // MAIN API (Handle User account / User management / Add friend) : https://www.getpostman.com/collections/bd7444d828fd7fe605c9 | |
| // CHAT API (Handle all chat activities) : https://www.getpostman.com/collections/bfc0758200b53637ae99 | |
| import Foundation | |
| class ApiManager : NSObject { | |
| static let sharedInstance = ApiManager() | |
| override init() { | |
| super.init() | |
| } | |
| private var managerInstance: AFHTTPRequestOperationManager = AFHTTPRequestOperationManager() | |
| private var manager: AFHTTPRequestOperationManager { | |
| get { | |
| if managerInstance.baseURL != NSURL(string: API_END_POINT) { | |
| managerInstance = AFHTTPRequestOperationManager(baseURL: NSURL(string: API_END_POINT)) | |
| managerInstance.requestSerializer = AFJSONRequestSerializer(writingOptions: []) | |
| managerInstance.responseSerializer = AFJSONResponseSerializer(readingOptions: []) | |
| managerInstance.requestSerializer.setValue("application/json", forHTTPHeaderField:"Content-Type") | |
| managerInstance.requestSerializer.setValue("application/json", forHTTPHeaderField:"Accept") | |
| managerInstance.responseSerializer.acceptableContentTypes = Set(["application/json", "text/html"]) | |
| self.handleNetworkConnection() | |
| } | |
| return managerInstance | |
| } | |
| } | |
| private var chatManager: AFHTTPRequestOperationManager { | |
| get { | |
| if managerInstance.baseURL != NSURL(string: SOCKET_END_POINT) { | |
| managerInstance = AFHTTPRequestOperationManager(baseURL: NSURL(string: SOCKET_END_POINT)) | |
| managerInstance.requestSerializer = AFJSONRequestSerializer(writingOptions: []) | |
| managerInstance.responseSerializer = AFJSONResponseSerializer(readingOptions: []) | |
| managerInstance.requestSerializer.setValue("application/json", forHTTPHeaderField:"Content-Type") | |
| managerInstance.requestSerializer.setValue("application/json", forHTTPHeaderField:"Accept") | |
| managerInstance.responseSerializer.acceptableContentTypes = Set(["application/json", "text/html"]) | |
| self.handleNetworkConnection() | |
| } | |
| return managerInstance | |
| } | |
| } | |
| //MARK: - Function | |
| func login(username:String!, password:String!, completeHandler: (Bool, String?) -> Void, errorHandler: NSError -> Void) { | |
| let param = ["username": username, "password": password] | |
| let path = "/1.0/auth" | |
| self.manager.POST(path, parameters: param, success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject) -> Void in | |
| let statusCode = responseObject["status"] as! NSString | |
| let isSuccess:Bool = statusCode.boolValue | |
| if (isSuccess) { | |
| User.currentUser.apiToken = responseObject.objectForKey("token") as! String | |
| User.currentUser.setUpWithDict(responseObject.objectForKey("user") as! NSDictionary) | |
| completeHandler(true, nil) | |
| } else { | |
| completeHandler(false, responseObject["message"] as! String!) | |
| } | |
| }) { (operation: AFHTTPRequestOperation?, error: NSError!) -> Void in | |
| completeHandler(false, error.description) | |
| } | |
| } | |
| func register(email:String!, phone:String!, phoneCode:String!, password:String!, completeHandler: (Bool, String?) -> Void, errorHandler: NSError -> Void) { | |
| let param = ["email" : email, | |
| "phone" : phone, | |
| "phone_code" : "66", // HAX: HARDCODE THAI LAND CODE | |
| "password" : password] | |
| let path = "/user/register" | |
| self.manager.POST(path, parameters: param, success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject) -> Void in | |
| let statusCode = responseObject["status"] as! NSString | |
| let isSuccess:Bool = statusCode.boolValue | |
| if (isSuccess) { | |
| User.currentUser.setUpWithDict(responseObject as! NSDictionary) | |
| completeHandler(true, nil) | |
| } else { | |
| completeHandler(false, responseObject["message"] as? String) | |
| } | |
| }) { (operation: AFHTTPRequestOperation?, error: NSError!) -> Void in | |
| completeHandler(false, error.description) | |
| } | |
| } | |
| func register(name:String!, username:String!, password:String!, email:String!,completeHandler: (Bool, String?) -> Void, errorHandler: NSError -> Void) { | |
| let param = ["name" : name, | |
| "username" : username, | |
| "password" : password, | |
| "email" : email] | |
| let path = "/user/register" | |
| self.manager.POST(path, parameters: param, success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject) -> Void in | |
| let statusCode = responseObject["status"] as! NSString | |
| let isSuccess:Bool = statusCode.boolValue | |
| if (isSuccess) { | |
| User.currentUser.setUpWithDict(responseObject as! NSDictionary) | |
| completeHandler(true, nil) | |
| } else { | |
| completeHandler(false, responseObject["message"] as? String) | |
| } | |
| }) { (operation: AFHTTPRequestOperation?, error: NSError!) -> Void in | |
| completeHandler(false, error.description) | |
| } | |
| }; | |
| func requestOTP(phoneNumber:String!, completeHandler: (Bool, String?) -> Void, errorHandler: NSError -> Void) { | |
| let path = "/user/otp" | |
| let inviteCodeMessage = "อะไรวะ" | |
| let param = ["mobile", phoneNumber, | |
| "message", inviteCodeMessage] | |
| self.manager.POST(path, parameters: param, success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject) -> Void in | |
| let statusCode = responseObject["status"] as! NSString | |
| let isSuccess:Bool = statusCode.boolValue; | |
| if (isSuccess) { | |
| let serverResponse = responseObject["server"]! | |
| let serverStatus = serverResponse!["status"] as! NSString | |
| let message = serverResponse!["message"] as! String | |
| completeHandler(serverStatus.boolValue, message) | |
| } | |
| }) { (operation: AFHTTPRequestOperation?, error: NSError!) -> Void in | |
| completeHandler(false, error.description) | |
| } | |
| } | |
| func getConversationId(senderId:String!, receiverId:String!, completeHandler: (NSNumber) -> Void, errorHandler: NSError -> Void) { | |
| let path = "/api/chat/" + senderId + "/to/" + receiverId | |
| self.chatManager.GET(path, parameters: nil, success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) -> Void in | |
| // let chatRoom:ChatRoom = ChatRoom() | |
| // chatRoom.setUpWithDict(responseObject[0] as! NSDictionary) | |
| completeHandler(responseObject["id"] as! NSNumber) | |
| }) { (operation: AFHTTPRequestOperation?, error: NSError!) -> Void in | |
| errorHandler(error) | |
| } | |
| } | |
| func getFriendList(userId:String, completeHandler: (Bool) -> Void, errorHandler: NSError -> Void) { | |
| let path = "/user/" + userId + "/relations" | |
| self.manager.GET(path, parameters: nil, success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) -> Void in | |
| let statusCode = responseObject["status"] as! NSString | |
| let isSuccess:Bool = statusCode.boolValue | |
| if (isSuccess) { | |
| let favorite = responseObject["favorite"] as! [AnyObject] | |
| let group = responseObject["group"] as! [AnyObject] | |
| let friends = responseObject["friends"] as! [AnyObject] | |
| ContactManager.sharedInstance.updateFavorites(favorite) | |
| ContactManager.sharedInstance.updateGroups(group) | |
| ContactManager.sharedInstance.updateFriendList(friends) | |
| } | |
| completeHandler(isSuccess) | |
| }) { (operation: AFHTTPRequestOperation?, error: NSError!) -> Void in | |
| errorHandler(error) | |
| } | |
| } | |
| func getRecentlyChat(userId:String, completeHandler: (Bool) -> Void, errorHandler: NSError -> Void) { | |
| let path = "/api/chat/recent/user/" + userId | |
| self.chatManager.GET(path, parameters: nil, success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) -> Void in | |
| let content = responseObject["content"] as! [AnyObject] | |
| ContactManager.sharedInstance.updateRecentlyChat(content) | |
| completeHandler(true) | |
| }) { (operation: AFHTTPRequestOperation?, error: NSError!) -> Void in | |
| errorHandler(error) | |
| } | |
| } | |
| //MARK: Handle Network Connection | |
| func handleNetworkConnection() { | |
| AFNetworkReachabilityManager.sharedManager().setReachabilityStatusChangeBlock({ (networkStatus) -> Void in | |
| switch networkStatus { | |
| case .ReachableViaWiFi, .ReachableViaWWAN : | |
| break; | |
| default: | |
| break | |
| } | |
| }) | |
| AFNetworkReachabilityManager.sharedManager().startMonitoring() | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment