Advertisement
Guest User

Untitled

a guest
Feb 16th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. func syncronize(){
  2.  
  3. for operation in syncOperations{
  4. switch operation{
  5. case "listPhone":
  6. let listRequest = WSListRequest(requestType: operation, searchCriteria: [SearchCriteria(name: "name", value: "%")], returnTags: [])
  7. _ = HTTPPost(method: "POST", body: listRequest.xml, operation: operation, credentials: creds)
  8. default:
  9. let listRequest = WSLListRequest(requestType: operation, searchCriteria: [SearchCriteria(name: "name", value: "%")], returnTags: ["name"])
  10. _ = HTTPPost(method: "POST", body: listRequest.xml, operation: operation, credentials: creds)
  11. }
  12. }
  13. }
  14.  
  15. class HTTPPost: NSObject, URLSessionDelegate {
  16.  
  17. var componentDebug = false
  18. var user = String()
  19. var password = String()
  20. var server = String()
  21. var port = String()
  22. var body = NSString()
  23. var response = Data()
  24.  
  25. init(method: String, body: NSString, operation: String, credentials: WSCredential){
  26. super.init()
  27. let bodyData = body.data(using: String.Encoding.utf8.rawValue)
  28.  
  29. let config = URLSessionConfiguration.default
  30. let userPasswordString = NSString(format: "%@:%@", credentials.userName, credentials.password)
  31. let userPasswordData = userPasswordString.data(using: String.Encoding.utf8.rawValue)
  32. let base64EncodedCredential = userPasswordData!.base64EncodedString(options: NSData.Base64EncodingOptions.lineLength64Characters)
  33. let authString = "Basic (base64EncodedCredential)"
  34. config.httpAdditionalHeaders = ["Authorization" : authString, "Content-Type" : "text/xml;charset=UTF-8"]
  35. config.timeoutIntervalForRequest = 10.0
  36.  
  37. // create the user request
  38. let urlString = NSString(format: "https://%@:%@/ws/", credentials.server, credentials.port)
  39. let url = URL(string: urlString as String)
  40. var request = URLRequest(url: url!)
  41. request.httpMethod = method
  42. request.httpBody = bodyData
  43. request.setValue("Basic (base64EncodedCredential)", forHTTPHeaderField: "Authorization")
  44. let session = Foundation.URLSession(configuration: config, delegate: self, delegateQueue:OperationQueue.main)
  45.  
  46. _ = session.dataTask(with: request, completionHandler: { (data, response, error) in
  47.  
  48. let responseParser = XMLParser(data: data!)
  49. let responseParserDelegate = XMLResponseParser(operation: operation)
  50. responseParser.delegate = responseParserDelegate
  51. responseParser.parse()
  52.  
  53. // DEBUGGING OPTIONS
  54. //print(response)
  55. //print(NSString(data: data!, encoding: NSUTF8StringEncoding))
  56. DispatchQueue.main.async(execute: {
  57. self.response = data!
  58. })
  59.  
  60.  
  61. }).resume()
  62. }
  63.  
  64.  
  65.  
  66. func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
  67. completionHandler(Foundation.URLSession.AuthChallengeDisposition.useCredential, URLCredential(trust: challenge.protectionSpace.serverTrust!))
  68. }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement