Browse Source

plex: replace deprecated NSURLConnection by NSURLSession

Pierre SAGASPE 7 years ago
parent
commit
7ea54931e0

+ 26 - 3
SharedSources/ServerBrowsing/Plex/VLCPlexParser.m

@@ -49,7 +49,7 @@ static NSString *const kPlexVLCDeviceName = @"VLC for iOS";
         }
     }
 
-    mediaServerUrl = [[urlComponents URL].absoluteString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    mediaServerUrl = [[urlComponents URL].absoluteString stringByRemovingPercentEncoding];
 
     VLCPlexWebAPI *PlexWebAPI = [[VLCPlexWebAPI alloc] init];
     NSURL *url = [[NSURL alloc] initWithString:[PlexWebAPI urlAuth:mediaServerUrl authentification:auth]];
@@ -57,7 +57,7 @@ static NSString *const kPlexVLCDeviceName = @"VLC for iOS";
     NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0];
     NSHTTPURLResponse *response = nil;
     NSError *error = nil;
-    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
+    NSData *data = [self sendSynchronousRequest:request returningResponse:&response error:&error];
 
     if ([response statusCode] != 200) {
         NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
@@ -77,7 +77,7 @@ static NSString *const kPlexVLCDeviceName = @"VLC for iOS";
                 request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0];
                 response = nil;
                 error = nil;
-                data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
+                data = [self sendSynchronousRequest:request returningResponse:&response error:&error];
                 if ([response statusCode] != 200) {
                     if (outError) {
 
@@ -231,4 +231,27 @@ static NSString *const kPlexVLCDeviceName = @"VLC for iOS";
     }
 }
 
+- (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error
+{
+    NSError __block *erreur = NULL;
+    NSData __block *data;
+    BOOL __block reqProcessed = false;
+    NSURLResponse __block *urlResponse;
+
+    [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable _data, NSURLResponse * _Nullable _response, NSError * _Nullable _error) {
+        urlResponse = _response;
+        erreur = _error;
+        data = _data;
+        reqProcessed = true;
+    }] resume];
+
+    while (!reqProcessed) {
+        [NSThread sleepForTimeInterval:0];
+    }
+
+    *response = urlResponse;
+    *error = erreur;
+    return data;
+}
+
 @end

+ 28 - 5
SharedSources/ServerBrowsing/Plex/VLCPlexWebAPI.m

@@ -44,7 +44,7 @@
 
     NSHTTPURLResponse *response = nil;
     NSError *error = nil;
-    [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
+    [self sendSynchronousRequest:request returningResponse:&response error:&error];
 
     authToken = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:[NSURL URLWithString:@""]];
     [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:authToken forURL:url mainDocumentURL:nil];
@@ -78,7 +78,7 @@
 
     NSHTTPURLResponse *response = nil;
     NSError *error = nil;
-    [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
+    [self sendSynchronousRequest:request returningResponse:&response error:&error];
 
     if ([response statusCode] == 201)
         return YES;
@@ -100,7 +100,7 @@
 
     NSHTTPURLResponse *response = nil;
     NSError *error = nil;
-    NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
+    NSData *urlData = [self sendSynchronousRequest:request returningResponse:&response error:&error];
 
     // for debug
     //NSString *debugStr = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
@@ -184,7 +184,7 @@
     NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:[[[VLCPlexWebAPI alloc] init] urlAuth:url authentification:auth]] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:20];
     NSURLResponse *response = nil;
     NSError *error = nil;
-    [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
+    [self sendSynchronousRequest:request returningResponse:&response error:&error];
 
     NSInteger httpStatus = [(NSHTTPURLResponse *)response statusCode];
 
@@ -274,7 +274,7 @@
     NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0];
     NSHTTPURLResponse *response = nil;
     NSError *error = nil;
-    [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
+    [self sendSynchronousRequest:request returningResponse:&response error:&error];
 
     if ([response statusCode] != 200)
         APLog(@"Plex stop Session %@ : %@", session, [response allHeaderFields]);
@@ -295,4 +295,27 @@
     return data;
 }
 
+- (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error
+{
+    NSError __block *erreur = NULL;
+    NSData __block *data;
+    BOOL __block reqProcessed = false;
+    NSURLResponse __block *urlResponse;
+
+    [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable _data, NSURLResponse * _Nullable _response, NSError * _Nullable _error) {
+        urlResponse = _response;
+        erreur = _error;
+        data = _data;
+        reqProcessed = true;
+    }] resume];
+
+    while (!reqProcessed) {
+        [NSThread sleepForTimeInterval:0];
+    }
+
+    *response = urlResponse;
+    *error = erreur;
+    return data;
+}
+
 @end