This is a class assignment URLProtocol.
From Apple docs:
NSURLProtocol URL-, . NSURLProtocol , URL- URL- . URL .
URLProtocol . , , , / , .
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
{
guard URLProtocol.registerClass(MyURLProtocol.self) else
{
abort()
}
return true
}
, URLSession ( !), :
func getURLSessionConfiguration() -> URLSessionConfiguration
{
let configuration = URLSessionConfiguration.default
configuration.protocolClasses = [
MyURLProtocol.self
]
return configuration
}
let session = URLSession(configuration: getURLSessionConfiguration())
, , startLoading() URLProtocol:
override func startLoading()
{
if self.isOK()
{
let error = NSError(domain: "GuardURLProtocol", code: 10, userInfo: [NSLocalizedDescriptionKey: "Connection denied by guard"])
self.client?.urlProtocol(self, didFailWithError: error)
}
else if let task = self.task
{
task.resume()
}
}
, , Apple.
( ), , , . GuardURLProtocol.swift (BlockFPTURLSession), FTP- .
FTP-, :
2017-02-16 23:09:45.846 URLProtocol[83111:7456862] Error: Error Domain=GuardURLProtocol Code=10 "Connection denied by guard" UserInfo={NSLocalizedDescription=Connection denied by guard}
!