//
// clientsViewController.swift
// cig
//
// Created by AVINASH on 01/12/16.
// Copyright © 2016 AVINASH. All rights reserved.
//
import UIKit
class toolViewController: UIViewController {
var TabSelected : String = ""
var appdel = UIApplication.sharedApplication().delegate as! AppDelegate
var responseString :String! = ""
var timer : NSTimer!
let BottomTabSelectedColor = UIColor(red: 1.0/255, green: 151.0/255, blue: 214.0/255, alpha: 1.0)
var dev_Info_Array : NSArray!
var deviceId : Int = 0
var mac : String = ""
var sn : String = ""
@IBOutlet weak var spinner: UIActivityIndicatorView!
@IBOutlet weak var topHeaderView: UIView!
@IBOutlet weak var networkBtnOutlet: UIButton!
@IBOutlet weak var devicesBtnOutlet: UIButton!
@IBOutlet weak var clientsBtnOutlet: UIButton!
@IBOutlet weak var configureBtnOutlet: UIButton!
@IBOutlet weak var toolBtnOutlet: UIButton!
override func viewDidAppear(animated: Bool) {
self.navigationController?.navigationBarHidden = true
self.topHeaderView.backgroundColor = UIColor(red: 1.0/255, green: 151.0/255, blue: 214.0/255, alpha: 1.0)
appdel.stateCount = 0
self.TabSelected = "5"
helperClass.tabSeleted(TabSelected,selectedTab:self.toolBtnOutlet,tab1:self.networkBtnOutlet,tab2:self.devicesBtnOutlet,tab3:self.clientsBtnOutlet,tab4:self.configureBtnOutlet)
}
override func viewDidLoad()
{
super.viewDidLoad()
appdel.stateCount = 0
self.spinner.hidden = true
// self.startTimer()
}
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(true)
self.stopTimer()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func startTimer()
{
if timer == nil {
self.timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(toolViewController.serverRequest), userInfo: nil, repeats: true)
}
}
func stopTimer()
{
if timer != nil {
timer!.invalidate()
timer = nil
}
}
@IBAction func networkBtnClk(sender: AnyObject) {
self.stopTimer()
self.appdel.selectedTabIndex == 0
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let networkVC = storyboard.instantiateViewControllerWithIdentifier("network") as! networkTopoViewController
self.navigationController?.pushViewController(networkVC, animated: false)
}
@IBAction func devicesBtnClk(sender: AnyObject) {
self.stopTimer()
self.appdel.selectedTabIndex == 0
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let deviceVC = storyboard.instantiateViewControllerWithIdentifier("devices") as! deviceViewController
self.navigationController?.pushViewController(deviceVC, animated: false)
}
@IBAction func clientsBtnClk(sender: AnyObject) {
self.stopTimer()
self.appdel.selectedTabIndex == 0
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let clientVC = storyboard.instantiateViewControllerWithIdentifier("clients") as! clientsViewController
self.navigationController?.pushViewController(clientVC, animated: false)
}
@IBAction func configureBtnClk(sender: AnyObject) {
self.stopTimer()
self.appdel.selectedTabIndex == 0
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let configVC = storyboard.instantiateViewControllerWithIdentifier("config") as! configViewController
self.navigationController?.pushViewController(configVC, animated: false)
}
@IBAction func toolBtnClk(sender: AnyObject) {
self.appdel.selectedTabIndex == 0
}
@IBAction func refreshBtnClk(sender: AnyObject) {
}
@IBAction func logoutBtnClk(sender: AnyObject) {
self.stopTimer()
self.simulateServerRequest()
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
{
}
func simulateServerRequest() {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
let requet_URL_String : String = String(format: "http://%@/api/logout", self.appdel.CAP_IP)
let request = NSMutableURLRequest(URL: NSURL(string:requet_URL_String as String)!)
request.HTTPMethod = "POST"
let postString = String(format: "token=%@",self.appdel.token)
print("postString : \(postString)")
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
guard error == nil && data != nil else { // check for fundamental networking error
print("error=\(error)")
let alert = UIAlertController(title: "", message: "Sorry connection lost , token expired press OK to login again!", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
print("message : logout successful");
self.appdel.token = ""
self.navigationController?.popToRootViewControllerAnimated(false)
}))
self.presentViewController(alert, animated: true, completion: nil)
return
}
if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 { // check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(response)")
}
self.responseString = String(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(self.responseString.componentsSeparatedByString("\n")[1].componentsSeparatedByString(":")[1].componentsSeparatedByString("\"")[1])")
if self.responseString.componentsSeparatedByString("\n")[1].componentsSeparatedByString(":")[1].componentsSeparatedByString("\"")[1] == "Success"
{
dispatch_async(dispatch_get_main_queue(), {
// self.spinner.hidden = true
// self.spinner.stopAnimating()
print("message : logout successful");
self.appdel.token = ""
self.navigationController?.popToRootViewControllerAnimated(false)
})
}
else{
dispatch_async(dispatch_get_main_queue(), {
let alert = UIAlertController(title: "", message: "Sorry connection lost , token expired press OK to login again!", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
print("message : logout successful");
self.appdel.token = ""
self.navigationController?.popToRootViewControllerAnimated(false)
}))
self.presentViewController(alert, animated: true, completion: nil)
})
}
}
task.resume()
})
}
func serverRequest()
{
//self.spinner.hidden = false
let requet_URL_String : String = String(format: "http://%@/", self.appdel.CAP_IP)//changed on 18th feb format: "http://%@/"
self.simulateNetworkRequest(requet_URL_String,requestMethodType:"POST")
}
func serverRequestFirmwateUpdate()
{
//self.spinner.hidden = false
let requet_URL_String : String = String(format: "http://%@/upgrade", self.appdel.CAP_IP)//changed on 18th feb format: "http://%@/"
self.simulateFirmwareUpdate(requet_URL_String,requestMethodType:"POST")
}
func simulateNetworkRequest(url:String,requestMethodType:String)
{
let postString = String(format: "token=%@",self.appdel.token)
self.appdel.baseURL = url
let paramString:String = postString
var methodType : String
var httpMethodName:String
let myRequest:String = String()
methodType = requestMethodType
httpMethodName = "api/deviceinfo"
var webService:AnyObject?
webService = myRequest.dataRequest(
myRequest.baseURL(),
param:paramString ,
httpMethodTyp:methodType ,
httpMethodName:httpMethodName
)
if appdel.networkErrorFlag == 1{
// self.spinner.hidden = true
appdel.networkErrorFlag = 0
self.stopTimer()
let alert = UIAlertController(title: "", message: "Sorry connection lost , token expired press OK to login again!", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
print("message : logout successful");
self.appdel.token = ""
self.navigationController?.popToRootViewControllerAnimated(false)
}))
self.presentViewController(alert, animated: true, completion: nil)
}else{
print("-------->>>>>\(webService!)")
self.dev_Info_Array = webService as! NSArray
print("-------->>>>>\(self.dev_Info_Array!)")
self.deviceId = webService!.valueForKey("dev_id")!.objectAtIndex(0) as! Int
self.mac = webService!.valueForKey("al_mac")!.objectAtIndex(0) as! String
self.sn = webService!.valueForKey("sn")!.objectAtIndex(0) as! String
print("deviceId :\(self.deviceId)")
print("mac :\(self.mac)")
print("sn :\(self.sn)")
}
// self.spinner.hidden = true
}
@IBAction func firmwareUpgradeBtnClk(sender: UIButton) {
self.serverRequestFirmwateUpdate()
// self.simulateFirmwareUpdate(self.url,requestMethodType: "post")
}
func simulateFirmwareUpdate(url:String,requestMethodType:String)
{
// let postString = String(format: "token=%@",self.appdel.token)
//
// self.appdel.baseURL = url
//
// var tempURL : String = ""
//
// tempURL = String(format: "%@%@",url,"api/upgrade")
//
// print("upgrade URL :\(tempURL)")
//
// let paramString:String = postString
// var methodType : String
// var httpMethodName:String
// let myRequest:String = String()
// methodType = requestMethodType
// httpMethodName = "api/deviceinfo"
// self.UploadRequest(tempURL)
//self.upgradingDeviceAPI()
self.myImageUploadRequest()
/* var webService:AnyObject?
webService = myRequest.dataRequest(
myRequest.baseURL(),
param:paramString ,
httpMethodTyp:methodType ,
httpMethodName:httpMethodName
)*/
// self.spinner.hidden = true
// print("-------->>>>>\(webService!)")
//let headers = [
// "content-type": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
// "cache-control": "no-cache",
// "postman-token": "c00027af-accf-6b7a-20f1-8fa07b4c64ef"
// ]
// let parameters = [
// [
// "name": "token",
// "value": self.appdel.token
// ],
// [
// "name": "file",
// "fileName": "wave2.cig.3.1.00.B020.upgrade1 (1).img"
// ],
// [
// "name": "auto_reboot",
// "value": "false"
// ],
// [
// "name": "devices",
// "value": "{ \"devices\":[ { \"id\":1, \"mac\":\"00:19:C7:01:56:0F\", \"sn\":\"77863370\" } ] }"
// ]
// ]
// let boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW"
//
// var body = ""
// var error: NSError? = nil
// for param in parameters {
// let paramName = param["name"]!
// body += "--\(boundary)\r\n"
// body += "Content-Disposition:form-data; name=\"\(paramName)\""
// if let filename = param["fileName"] {
// let contentType = param["content-type"]!
// let fileContent = try? String(contentsOfFile: filename, encoding: NSUTF8StringEncoding)
// if (error != nil) {
// print(error)
// }
// body += "; filename=\"\(filename)\"\r\n"
// body += "Content-Type: \(contentType)\r\n\r\n"
// body += fileContent!
// } else if let paramValue = param["value"] {
// body += "\r\n\r\n\(paramValue)"
// }
// }
//data_request
}
func UploadRequest(tepurl: String)
{
let url = NSURL(string: tepurl)
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
var tempDict : NSMutableDictionary! = NSMutableDictionary()
tempDict = deviceDict(self.deviceId,mac:self.mac ,sn:self.sn)
print("new dict : \(tempDict)")
var deviceJsonString : String = ""
do {
let jsonData : NSData = try! NSJSONSerialization.dataWithJSONObject(tempDict, options: NSJSONWritingOptions.PrettyPrinted)
//Convert back to string. Usually only do this for debugging
if let JSONString = String(data: jsonData, encoding: NSUTF8StringEncoding) {
deviceJsonString = JSONString
print("json \(deviceJsonString)")
}
}catch {
print("Error")
}
let boundary = generateBoundaryString()
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("wave2.CIG.yes.ap180.enable.R3.1.00.B020", ofType: "")
let stringData = path!.dataUsingEncoding(NSUTF16StringEncoding)
let body = NSMutableData()
let parameters = [
[
"name": "token",
"value": self.appdel.token
],
[
"name": "file",
"fileName": path
],
[
"name": "auto_reboot",
"value": "false"
],
[
"name": "devices",
"value": deviceJsonString
]
]
print(">>>> Parameters >>>>>>>>\(parameters)")
let stringDataParmeter = String(parameters).dataUsingEncoding(NSUTF16StringEncoding)
body.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Disposition:form-data; name=\"test\"\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("hi\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(stringData!)
body.appendData(stringDataParmeter!)
body.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("--\(boundary)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
request.HTTPBody = body
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request) {
(
let data, let response, let error) in
guard let _:NSData = data, let _:NSURLResponse = response where error == nil else {
print("error")
return
}
let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print(">>>>>>>>>>>data string >>>>\(dataString)")
}
task.resume()
}
// upgrade device API cal
/*
func UploadRequest()
{
let url = NSURL(string: "http://192.168.7.43/api/upgrade")
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
let boundary = generateBoundaryString()
//define the multipart request type
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
let body = NSMutableData()
let fname = "test.png"
let mimetype = "image/png"
//define the data post parameter
body.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Disposition:form-data; name=\"test\"\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("hi\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Disposition:form-data; name=\"file\"; filename=\"\(fname)\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Type: \(mimetype)\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(image_data!)
body.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("--\(boundary)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
request.HTTPBody = body
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request) {
(
let data, let response, let error) in
guard let _:NSData = data, let _:NSURLResponse = response where error == nil else {
print("error")
return
}
let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print(dataString)
}
task.resume()
}
func generateBoundaryString() -> String
{
return "Boundary-\(NSUUID().UUIDString)"
}
*/
/* func api(filePath:String?) {
let headers = [
"content-type": "multipart/form-data; boundary===WebKitFormBoundary7MA4YWxkTrZu0gW===",
"User-Agent": "CodeJava Agent",
"Test" : "Bonjour"
]
let parameters = [
[
"name": "token",
"value": appdel.token
],
[
"name": "file",
"fileName": filePath
],
[
"name": "auto_reboot",
"value": "false"
],
[
"name": "devices",
"value": "{ \"devices\":[ { \"id\":2, \"mac\":\"00:69:38:2A:16:B7\", \"sn\":\"B0274976\" } ] }"
]
]
let boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW"
var body = String()
var error: NSError? = nil
for param in parameters {
let paramName = param["name"]!
body += "--\(boundary)\r\n"
body += "Content-Disposition:form-data; name=\"\(paramName!)\""
if let filename = param["fileName"] {
let contentType = "multipart/form-data"
var fileContent = String()
do {
fileContent = try String(contentsOfFile: filename!, encoding: NSUTF8StringEncoding)
}
catch {/* error handling here */}
if (error != nil) {
print(error)
}
body += "; filename=\"\(filename!)\"\r\n"
body += "Content-Type: \(contentType)\r\n\r\n"
body += fileContent
} else if let paramValue = param["value"] {
body += "\r\n\r\n\(paramValue! )"
}
print(body)
}
let postData = body.dataUsingEncoding(NSUTF8StringEncoding)!
let request = NSMutableURLRequest(URL: NSURL(string: "http://192.168.7.43/api/upgrade")!)
request.HTTPMethod = "POST"
request.allHTTPHeaderFields = headers
request.HTTPBody = postData as NSData
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request) {
(
let data, let response, let error) in
guard let _:NSData = data, let _:NSURLResponse = response where error == nil else {
print("error")
return
}
let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print(dataString!)
}
task.resume()
}*/
func upgradingDeviceAPI(){
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("wave2.CIG.yes.ap180.enable.R3.1.00.B020", ofType: "")
// print(NSData.init(contentsOfFile: path!))
let parameters = [["name": "token","value": appdel.token],["name": "file","fileName": "wave2.CIG.yes.ap180.enable.R3.1.00.B020"],["name": "auto_reboot","value": "false"],
["name": "devices","value": "{ \"devices\":[ { \"id\":2, \"mac\":\"00:69:38:2A:16:B7\", \"sn\":\"B0274976\" } ] }"]]
let boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW"
var body = ""
let error: NSError? = nil
for param in parameters {
let paramName = param["name"]!
// body += "--\(boundary)\r\n"
// body += "Content-Disposition:form-data; name=\"\(paramName)\""
if let filename = param["fileName"] {
let contentType = "multipart/form-data" //param["content-type"]
var fileContent = String()
do {
// fileContent = try String(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
}
catch {/* error handling here */}
if (error != nil) {
print(error)
}
body += "; file=\"\(filename)\"\r\n"
// body += "Content-Type: \(contentType)\r\n\r\n"
body += fileContent
} else if let paramValue = param["value"] {
body += "\r\n\r\n\(paramValue)"
}
}
print("final body ====>>>>>\(body)")
let postData = body.dataUsingEncoding(NSUTF8StringEncoding)! as! NSMutableData
let request = NSMutableURLRequest(URL: NSURL(string: "http://192.168.7.43/api/upgrade")!)
request.HTTPMethod = "POST"
let headers = [
"content-type": "multipart/form-data; ----WebKitFormBoundary7MA4YWxkTrZu0gW",
"cache-control": "no-cache",
]
request.allHTTPHeaderFields = headers
postData.appendData(NSData.init(contentsOfFile: path!)!)
request.HTTPBody = postData as NSData
// request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
// request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request) {
(
let data, let response, let error) in
guard let _:NSData = data, let _:NSURLResponse = response where error == nil else {
print("error")
return
}
let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print(dataString!)
}
task.resume()
}
func generateBoundaryString() -> String
{
return "Boundary-\(NSUUID().UUIDString)"
}
// func data_request(tepurl :String)
// {
// let bundle = NSBundle.mainBundle()
// let path = bundle.pathForResource("wave2.CIG.yes.ap180.enable.R3.1.00.B020", ofType: "")
// let url:NSURL = NSURL(string:tepurl )!
// let session = NSURLSession.sharedSession()
//
// let request = NSMutableURLRequest(URL: url)
// request.HTTPMethod = "POST"
// request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData
//
// let parameters = [
// [
// "name": "token",
// "value": self.appdel.token
// ],
// [
// "name": "file",
// "fileName": path
// ],
// [
// "name": "auto_reboot",
// "value": "false"
// ],
// [
// "name": "devices",
// "value": "{ \"devices\":[ { \"id\":1, \"mac\":\"00:19:C7:01:56:0F\", \"sn\":\"77863370\" } ] }"
// ]
// ]
//
// request.HTTPBody = String(parameters).dataUsingEncoding(NSUTF8StringEncoding)
//
// let task = session.dataTaskWithRequest(request) {
// (
// let data, let response, let error) in
//
// guard let _:NSData = data, let _:NSURLResponse = response where error == nil else {
// print("error")
// return
// }
//
// let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)
// print(dataString)
//
// }
//
// task.resume()
//
// }
func deviceDict(id:Int,mac:String,sn:String) -> NSMutableDictionary
{
var dict : NSMutableDictionary = NSMutableDictionary()
var Arr :NSMutableArray = NSMutableArray()
var finaldict : NSMutableDictionary = NSMutableDictionary()
dict.setValue(id, forKey: "id")
dict.setValue(mac, forKey: "mac")
dict.setValue(sn, forKey: "sn")
Arr.addObject(dict)
finaldict.setValue(Arr, forKey: "devices")
return finaldict
}
func myImageUploadRequest()
{
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("wave2.CIG.yes.ap180.enable.R3.1.00.B020", ofType: "")
let myUrl = NSURL(string: "http://192.168.7.43/api/upgrade");
//let myUrl = NSURL(string: "http://www.boredwear.com/utils/postImage.php");
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "POST";
let param = ["name": "token","value": appdel.token,"name1": "file","fileName": "wave2.CIG.yes.ap180.enable.R3.1.00.B020","name2": "auto_reboot","value1": "false",
"name3": "devices","value2": ""]
let boundary = generateBoundaryString()
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
let fileData = NSData.init(contentsOfFile: path!)
request.HTTPBody = createBodyWithParameters(param, filePathKey: "file", imageDataKey: fileData!, boundary: boundary)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print("error=\(error)")
return
}
// You can print out response object
print("******* response = \(response)")
// Print out reponse body
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("****** response data = \(responseString!)")
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary
print(json)
dispatch_async(dispatch_get_main_queue(),{
});
}catch
{
print(error)
}
}
task.resume()
}
func createBodyWithParameters(parameters: [String: String!]!, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData {
let body = NSMutableData();
if parameters != nil {
for (key, value) in parameters! {
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
body.appendString("\(value)\r\n")
}
}
// let filename = "user-profile.jpg"
//let mimetype = "image/jpg"
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"")
// body.appendString("Content-Type: \(mimetype)\r\n\r\n")
body.appendData(imageDataKey)
body.appendString("\r\n")
body.appendString("--\(boundary)--\r\n")
return body
}
}
extension NSMutableData {
func appendString(string: String) {
let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
appendData(data!)
}
}