Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func syncronize(){
- for operation in syncOperations{
- switch operation{
- case "listPhone":
- let listRequest = WSListRequest(requestType: operation, searchCriteria: [SearchCriteria(name: "name", value: "%")], returnTags: [])
- _ = HTTPPost(method: "POST", body: listRequest.xml, operation: operation, credentials: creds)
- default:
- let listRequest = WSLListRequest(requestType: operation, searchCriteria: [SearchCriteria(name: "name", value: "%")], returnTags: ["name"])
- _ = HTTPPost(method: "POST", body: listRequest.xml, operation: operation, credentials: creds)
- }
- }
- }
- class HTTPPost: NSObject, URLSessionDelegate {
- var componentDebug = false
- var user = String()
- var password = String()
- var server = String()
- var port = String()
- var body = NSString()
- var response = Data()
- init(method: String, body: NSString, operation: String, credentials: WSCredential){
- super.init()
- let bodyData = body.data(using: String.Encoding.utf8.rawValue)
- let config = URLSessionConfiguration.default
- let userPasswordString = NSString(format: "%@:%@", credentials.userName, credentials.password)
- let userPasswordData = userPasswordString.data(using: String.Encoding.utf8.rawValue)
- let base64EncodedCredential = userPasswordData!.base64EncodedString(options: NSData.Base64EncodingOptions.lineLength64Characters)
- let authString = "Basic (base64EncodedCredential)"
- config.httpAdditionalHeaders = ["Authorization" : authString, "Content-Type" : "text/xml;charset=UTF-8"]
- config.timeoutIntervalForRequest = 10.0
- // create the user request
- let urlString = NSString(format: "https://%@:%@/ws/", credentials.server, credentials.port)
- let url = URL(string: urlString as String)
- var request = URLRequest(url: url!)
- request.httpMethod = method
- request.httpBody = bodyData
- request.setValue("Basic (base64EncodedCredential)", forHTTPHeaderField: "Authorization")
- let session = Foundation.URLSession(configuration: config, delegate: self, delegateQueue:OperationQueue.main)
- _ = session.dataTask(with: request, completionHandler: { (data, response, error) in
- let responseParser = XMLParser(data: data!)
- let responseParserDelegate = XMLResponseParser(operation: operation)
- responseParser.delegate = responseParserDelegate
- responseParser.parse()
- // DEBUGGING OPTIONS
- //print(response)
- //print(NSString(data: data!, encoding: NSUTF8StringEncoding))
- DispatchQueue.main.async(execute: {
- self.response = data!
- })
- }).resume()
- }
- func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
- completionHandler(Foundation.URLSession.AuthChallengeDisposition.useCredential, URLCredential(trust: challenge.protectionSpace.serverTrust!))
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement