From f6cd130038adb2561e33b62cc4296d9cf1e4122f Mon Sep 17 00:00:00 2001 From: hogliux Date: Mon, 27 Jun 2016 17:27:44 +0100 Subject: [PATCH] Add redirect support to NSURLSession code --- modules/juce_core/native/juce_mac_Network.mm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/modules/juce_core/native/juce_mac_Network.mm b/modules/juce_core/native/juce_mac_Network.mm index ff5332d37d..a144b47759 100644 --- a/modules/juce_core/native/juce_mac_Network.mm +++ b/modules/juce_core/native/juce_mac_Network.mm @@ -252,6 +252,12 @@ public: latestTotalBytes = static_cast (totalBytesWritten); } + void willPerformHTTPRedirection (NSURLRequest* request, void (^completionHandler)(NSURLRequest *)) + { + NSURLRequest* newRequest = (numRedirects++ < numRedirectsToFollow ? request : nullptr); + completionHandler (newRequest); + } + void run() override { jassert (task == nil && session == nil); @@ -308,6 +314,8 @@ private: addMethod (@selector (URLSession:dataTask:didReceiveData:), didReceiveData, "v@:@@@"); addMethod (@selector (URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:), didSendBodyData, "v@:@@qqq"); + addMethod (@selector (URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:), + willPerformHTTPRedirection, "v@:@@@@@"); registerClass(); } @@ -334,6 +342,12 @@ private: { getState (self)->didSendBodyData (totalBytesWritten); } + + static void willPerformHTTPRedirection (id self, SEL, NSURLSession*, NSURLSessionTask*, NSHTTPURLResponse*, + NSURLRequest* request, void (^completionHandler)(NSURLRequest *)) + { + getState (self)->willPerformHTTPRedirection (request, completionHandler); + } }; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (URLConnectionState)