Friday, September 15, 2017

API Request Using AFNetworking in swift

API Request Using AFNetworking in swift


import UIKit
import AFNetworking



//import Setting
protocol DataSyncManagerDelegate
{
    func launchObjectSuccess(sender : NSString, andServiceKey:NSString)
    func launchObjectFailure(sender : NSString, andServiceKey:NSString)
}


class DataSyncManager: NSObject {

    //var ServiceUrl:String!
    var ServiceKey:String!
    var delegateDataSync : DataSyncManagerDelegate?
    
    func jsonFailed(error: NSError) {
        print("Error: \(error.localizedDescription)")
        
        delegateDataSync?.launchObjectFailure(sender: error.description as NSString, andServiceKey:ServiceKey as NSString)
    }
    
    func makeGet(place:String)
    {
        let serviceURL = Constants.ServiceURL+ServiceKey;
        
        let manager = AFHTTPSessionManager()
        manager.requestSerializer = AFJSONRequestSerializer()
        manager.responseSerializer = AFHTTPResponseSerializer()
        manager.requestSerializer.setValue(Constants.SecureKey, forHTTPHeaderField: "API-KEY")
        manager.get(serviceURL, parameters: nil, progress: nil, success:
            {
                requestOperation, response in
                
                let result = NSString(data: (response as! NSData) as Data, encoding: String.Encoding.utf8.rawValue)!
                self.delegateDataSync?.launchObjectSuccess(sender: result, andServiceKey:self.ServiceKey as NSString)
                
            }, failure: {
                requestOperation, error in
                
                self.delegateDataSync?.launchObjectFailure(sender: error.localizedDescription as NSString, andServiceKey:self.ServiceKey as NSString)
        })
        
    }
    
    
    func makePOST(ServiceUrl : String, place : String, param : NSMutableDictionary)
    {
        let serviceURL =  ServiceUrl+place;
        DispatchQueue.global(qos: .background).async {
            print("This is run on the background queue")
        let manager = AFHTTPSessionManager()
        manager.requestSerializer = AFJSONRequestSerializer()
        manager.responseSerializer = AFHTTPResponseSerializer()
        manager.requestSerializer.setValue(Constants.SecureKey, forHTTPHeaderField: "API-KEY")
        manager.post(serviceURL, parameters: param, progress: nil, success:
            {
                requestOperation, response in
            
                let result = NSString(data: (response as! NSData) as Data, encoding: String.Encoding.utf8.rawValue)!
               // self.HandleServiceSuccess(result: result, serviceKey: self.ServiceKey as NSString, input: param)
                self.delegateDataSync?.launchObjectSuccess(sender: result, andServiceKey:self.ServiceKey as NSString)
            
        },
        failure:
            {
                requestOperation, error in
                 self.HandleServiceFailure(error: error.localizedDescription as NSString, serviceKey: self.ServiceKey as NSString)
                
                print("Service Error, Service :", place, ",Message :", error.localizedDescription as NSString)
        })
            
        }
        DispatchQueue.main.async {
            print("This is run on the main queue, after the previous code in outer block")
            
        }

    }
    
    func HandleServiceSuccess(result : NSString, serviceKey:NSString, input:NSMutableDictionary)
    {
        
        if serviceKey.isEqual(Constants.kLoginUser)
        {
            let dict : NSMutableDictionary = self.convertStringToDictionary(text: result as String)
            print(dict)
            if(dict.allKeys.count > 0)
            {
                print("Output for :", Constants.kLoginUser, dict)
                let status : NSString = dict.value(forKey: "Status") as! NSString
                if status .isEqual(to: "Success")
                {
                }
                else
                {
                    print(dict.value(forKey: "Message") as! String)
                    
                }
            }
            else
            {
            }
        }
        else
        {
            self.delegateDataSync?.launchObjectSuccess(sender: result, andServiceKey:serviceKey as NSString)
        }
        
    }
    
    
    func HandleServiceFailure(error : NSString, serviceKey:NSString)
    {
        if serviceKey .isEqual(Constants.kLoginUser)
        {
            self.delegateDataSync?.launchObjectFailure(sender: error as NSString, andServiceKey:serviceKey as NSString)
            print(serviceKey , error)
        }
        else
        {
            self.delegateDataSync?.launchObjectFailure(sender: error as NSString, andServiceKey:serviceKey as NSString)
        }
        
        
        
    }
    

    func convertStringToDictionary(text: String) -> NSMutableDictionary
    {
        var json = NSMutableDictionary()
        if let data = text.data(using: String.Encoding.utf8) {
            do {
                json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! NSMutableDictionary
                return json
            } catch {
                print("Something went wrong")
            }
        }
        return json

    }
}

Upload UIImage as base64 String

Upload UIImage as Base64 String (Upload UIImage as string) //Select Pic From Camera or Gallery       @objc func btnPro...