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
}
}