From d20f50fa3c52c5098c2c2852c147fa5377b3f61f Mon Sep 17 00:00:00 2001 From: dante ruiz Date: Thu, 27 Jun 2019 20:53:23 -0700 Subject: [PATCH] redoing some work --- launchers/darwin/CMakeLists.txt | 2 + launchers/darwin/nib/DisplayNameScreen.xib | 2 +- launchers/darwin/nib/ErrorScreen.xib | 2 +- launchers/darwin/nib/LoginScreen.xib | 2 +- launchers/darwin/nib/ProcessScreen.xib | 2 +- launchers/darwin/nib/SplashScreen.xib | 2 +- launchers/darwin/src/CredentialsRequest.h | 2 +- launchers/darwin/src/CredentialsRequest.m | 125 ++++++++--------- launchers/darwin/src/DownloadInterface.m | 18 +-- launchers/darwin/src/ImageView.h | 6 + launchers/darwin/src/ImageView.m | 11 ++ launchers/darwin/src/LatestBuildRequest.m | 77 ++-------- launchers/darwin/src/OrganizationRequest.h | 2 +- launchers/darwin/src/OrganizationRequest.m | 156 +++++++++++++-------- launchers/darwin/src/Window.h | 2 +- launchers/darwin/src/Window.m | 6 + launchers/darwin/src/main.mm | 2 +- 17 files changed, 217 insertions(+), 202 deletions(-) create mode 100644 launchers/darwin/src/ImageView.h create mode 100644 launchers/darwin/src/ImageView.m diff --git a/launchers/darwin/CMakeLists.txt b/launchers/darwin/CMakeLists.txt index a3fc0dc7c1..0a7ef70461 100644 --- a/launchers/darwin/CMakeLists.txt +++ b/launchers/darwin/CMakeLists.txt @@ -27,6 +27,8 @@ set(src_files src/LatestBuildRequest.m src/OrganizationRequest.m src/OrganizationRequest.h + src/ImageView.m + src/ImageView.h src/Interface.h src/Interface.m src/ErrorViewController.h diff --git a/launchers/darwin/nib/DisplayNameScreen.xib b/launchers/darwin/nib/DisplayNameScreen.xib index 3ba3deba53..67863ddc9a 100644 --- a/launchers/darwin/nib/DisplayNameScreen.xib +++ b/launchers/darwin/nib/DisplayNameScreen.xib @@ -16,7 +16,7 @@ - + diff --git a/launchers/darwin/nib/ErrorScreen.xib b/launchers/darwin/nib/ErrorScreen.xib index 37feca60cb..6dc2eeb47b 100644 --- a/launchers/darwin/nib/ErrorScreen.xib +++ b/launchers/darwin/nib/ErrorScreen.xib @@ -16,7 +16,7 @@ - + diff --git a/launchers/darwin/nib/LoginScreen.xib b/launchers/darwin/nib/LoginScreen.xib index 6784b8eff1..bb01aa3211 100644 --- a/launchers/darwin/nib/LoginScreen.xib +++ b/launchers/darwin/nib/LoginScreen.xib @@ -16,7 +16,7 @@ - + diff --git a/launchers/darwin/nib/ProcessScreen.xib b/launchers/darwin/nib/ProcessScreen.xib index c6bd8abbec..d6a1da91c9 100644 --- a/launchers/darwin/nib/ProcessScreen.xib +++ b/launchers/darwin/nib/ProcessScreen.xib @@ -16,7 +16,7 @@ - + diff --git a/launchers/darwin/nib/SplashScreen.xib b/launchers/darwin/nib/SplashScreen.xib index 3e2e37c81a..3bbed22a59 100644 --- a/launchers/darwin/nib/SplashScreen.xib +++ b/launchers/darwin/nib/SplashScreen.xib @@ -16,7 +16,7 @@ - + diff --git a/launchers/darwin/src/CredentialsRequest.h b/launchers/darwin/src/CredentialsRequest.h index 2e0807c5ba..c91172ca36 100644 --- a/launchers/darwin/src/CredentialsRequest.h +++ b/launchers/darwin/src/CredentialsRequest.h @@ -1,6 +1,6 @@ #import -@interface CredentialsRequest : NSObject { +@interface CredentialsRequest : NSObject { } @property (nonatomic, retain) NSMutableData* webData; diff --git a/launchers/darwin/src/CredentialsRequest.m b/launchers/darwin/src/CredentialsRequest.m index a5c24496ec..0a9a47131a 100644 --- a/launchers/darwin/src/CredentialsRequest.m +++ b/launchers/darwin/src/CredentialsRequest.m @@ -23,75 +23,72 @@ NSURLSession* session = [NSURLSession sharedSession]; NSURLSessionDataTask* dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { - - NSLog(@"credentials request finished"); - NSMutableData* webData = [NSMutableData data]; - [webData appendData:data]; - NSString* jsonString = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[data length] encoding:NSUTF8StringEncoding]; - NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; - id json = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil]; - - Launcher* sharedLauncher = [Launcher sharedLauncher]; - if (json[@"error"] != nil) { - dispatch_async(dispatch_get_main_queue(), ^{ - [[Settings sharedSettings] login:FALSE]; - [sharedLauncher setLoginErrorState: CREDENTIALS]; - [sharedLauncher credentialsAccepted:FALSE]; - }); + NSLog(@"Credentials: request finished"); + NSHTTPURLResponse *ne = (NSHTTPURLResponse *)response; + NSInteger statusCode = [ne statusCode]; + NSLog(@"Credentials: Response status code: %ld", statusCode); + NSLog(@"dante"); + if (!error) { + if (statusCode == 200) { + NSLog(@"--->"); + NSMutableData* webData = [NSMutableData data]; + [webData appendData:data]; + NSLog(@"---kdjf"); + NSString* jsonString = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[data length] encoding:NSUTF8StringEncoding]; + NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; + NSError* jsonError; + NSLog(@"fiest"); + id json = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&jsonError]; + NSLog(@"last"); + + if (jsonError) { + NSLog(@"Credentials: Failed to parse json -> error: %@", jsonError); + + dispatch_async(dispatch_get_main_queue(), ^{ + Launcher* sharedLauncher = [Launcher sharedLauncher]; + [sharedLauncher displayErrorPage]; + }); + return; + } + + if (json[@"error"] != nil) { + NSLog(@"Credentials: Login failed -> error: %@", json[@"error"]); + dispatch_async(dispatch_get_main_queue(), ^{ + Launcher* sharedLauncher = [Launcher sharedLauncher]; + [[Settings sharedSettings] login:FALSE]; + [sharedLauncher setLoginErrorState: CREDENTIALS]; + [sharedLauncher credentialsAccepted:FALSE]; + }); + } else { + NSLog(@"Credentials: Login Successful"); + dispatch_async(dispatch_get_main_queue(), ^{ + Launcher* sharedLauncher = [Launcher sharedLauncher]; + [[Settings sharedSettings] login:TRUE]; + [sharedLauncher setTokenString:jsonString]; + [sharedLauncher credentialsAccepted:TRUE]; + }); + } + } else if (statusCode == 403 || statusCode == 404 || statusCode == 401) { + dispatch_async(dispatch_get_main_queue(), ^{ + Launcher* sharedLauncher = [Launcher sharedLauncher]; + [[Settings sharedSettings] login:FALSE]; + [sharedLauncher setLoginErrorState: CREDENTIALS]; + [sharedLauncher credentialsAccepted:FALSE]; + }); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + Launcher* sharedLauncher = [Launcher sharedLauncher]; + [sharedLauncher displayErrorPage]; + }); + } } else { dispatch_async(dispatch_get_main_queue(), ^{ - [[Settings sharedSettings] login:TRUE]; - [sharedLauncher setTokenString:jsonString]; - [sharedLauncher credentialsAccepted:TRUE]; + Launcher* sharedLauncher = [Launcher sharedLauncher]; + [sharedLauncher displayErrorPage]; }); } - - NSLog(@"credentials: connectionDidFinished completed"); - }]; - + [dataTask resume]; } - -- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { - [self.webData appendData:data]; - NSLog(@"credentials connection received data"); -} - -- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { - NSLog(@"credentials connection received response"); - NSHTTPURLResponse *ne = (NSHTTPURLResponse *)response; - if([ne statusCode] == 200) { - NSLog(@"connection state is 200 - all okay"); - } else { - NSLog(@"connection state is NOT 200"); - [[Launcher sharedLauncher] displayErrorPage]; - } -} - --(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { - NSLog(@"Conn Err: %@", [error localizedDescription]); - [[Launcher sharedLauncher] displayErrorPage]; -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)connection { - NSLog(@"credentials request finished"); - NSString* jsonString = [[NSString alloc] initWithBytes: [self.webData mutableBytes] length:[self.webData length] encoding:NSUTF8StringEncoding]; - NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; - id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - - Launcher* sharedLauncher = [Launcher sharedLauncher]; - if (json[@"error"] != nil) { - [[Settings sharedSettings] login:FALSE]; - [sharedLauncher setLoginErrorState: CREDENTIALS]; - [sharedLauncher credentialsAccepted:FALSE]; - } else { - [[Settings sharedSettings] login:TRUE]; - [sharedLauncher setTokenString:jsonString]; - [sharedLauncher credentialsAccepted:TRUE]; - } - - NSLog(@"credentials: connectionDidFinished completed"); -} - @end diff --git a/launchers/darwin/src/DownloadInterface.m b/launchers/darwin/src/DownloadInterface.m index 7a8abf2e0a..056fbda34d 100644 --- a/launchers/darwin/src/DownloadInterface.m +++ b/launchers/darwin/src/DownloadInterface.m @@ -9,18 +9,18 @@ NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:downloadUrl] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; - + NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]]; NSURLSessionDownloadTask *downloadTask = [defaultSession downloadTaskWithRequest:request]; - + [downloadTask resume]; } -(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { CGFloat prog = (float)totalBytesWritten/totalBytesExpectedToWrite; NSLog(@"interface downloaded %d%%", (int)(100.0*prog)); - + } -(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes { @@ -39,27 +39,27 @@ [fileManager removeItemAtURL:destinationURL error:nil]; } [fileManager moveItemAtURL:location toURL:destinationURL error:&error]; - + Launcher* sharedLauncher = [Launcher sharedLauncher]; [sharedLauncher setDownloadFilename:destinationFileName]; NSString* appPath = [sharedLauncher getAppPath]; NSString* downloadFileName = [sharedLauncher getDownloadFilename]; - + NSLog(@"extract interface zip"); [sharedLauncher extractZipFileAtDestination:appPath :[appPath stringByAppendingString:downloadFileName]]; NSLog(@"finished extracting interface zip"); - + NSLog(@"starting xattr"); NSTask* quaratineTask = [[NSTask alloc] init]; quaratineTask.launchPath = @"/usr/bin/xattr"; quaratineTask.arguments = @[@"-d", @"com.apple.quarantine", [appPath stringByAppendingString:@"interface.app"]]; - + [quaratineTask launch]; [quaratineTask waitUntilExit]; NSLog(@"finished xattr"); - + NSString* launcherPath = [appPath stringByAppendingString:@"Launcher"]; - + [[Settings sharedSettings] setLauncherPath:launcherPath]; [sharedLauncher interfaceFinishedDownloading]; } diff --git a/launchers/darwin/src/ImageView.h b/launchers/darwin/src/ImageView.h new file mode 100644 index 0000000000..2def447099 --- /dev/null +++ b/launchers/darwin/src/ImageView.h @@ -0,0 +1,6 @@ +#import + +@interface ImageView : NSImageView +{ +} +@end diff --git a/launchers/darwin/src/ImageView.m b/launchers/darwin/src/ImageView.m new file mode 100644 index 0000000000..f8b0a4b928 --- /dev/null +++ b/launchers/darwin/src/ImageView.m @@ -0,0 +1,11 @@ +#import "ImageView.h" + +@implementation ImageView + +- (BOOL) mouseDownCanMoveWindow +{ + return TRUE; +} + + +@end diff --git a/launchers/darwin/src/LatestBuildRequest.m b/launchers/darwin/src/LatestBuildRequest.m index 0c136dce3c..767c67eea1 100644 --- a/launchers/darwin/src/LatestBuildRequest.m +++ b/launchers/darwin/src/LatestBuildRequest.m @@ -28,12 +28,12 @@ [request setURL:[NSURL URLWithString:@"https://thunder.highfidelity.com/builds/api/tags/latest?format=json"]]; [request setHTTPMethod:@"GET"]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; - + // We're using an ephermeral session here to ensure the tags api response is never cached. NSURLSession * session = [NSURLSession sessionWithConfiguration:NSURLSessionConfiguration.ephemeralSessionConfiguration]; NSURLSessionDataTask* dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { - - + + NSLog(@"Latest Build Request error: %@", error); NSLog(@"Latest Build Request Data: %@", data); NSHTTPURLResponse *ne = (NSHTTPURLResponse *)response; @@ -46,25 +46,25 @@ NSLog(@"Latest Build Request -> json string: %@", jsonString); NSError *jsonError = nil; id json = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&jsonError]; - + if (jsonError) { NSLog(@"Latest Build request: Failed to convert Json to data"); } - + NSFileManager* fileManager = [NSFileManager defaultManager]; NSArray *values = [json valueForKey:@"results"]; NSDictionary *value = [values objectAtIndex:0]; - - + + NSString* buildNumber = [value valueForKey:@"latest_version"]; NSDictionary* installers = [value objectForKey:@"installers"]; NSDictionary* macInstallerObject = [installers objectForKey:@"mac"]; NSString* macInstallerUrl = [macInstallerObject valueForKey:@"zip_url"]; - + BOOL appDirectoryExist = [fileManager fileExistsAtPath:[[sharedLauncher getAppPath] stringByAppendingString:@"interface.app"]]; - + dispatch_async(dispatch_get_main_queue(), ^{ - + NSInteger currentVersion = [self getCurrentVersion]; NSLog(@"Latest Build Request -> does build directory exist: %@", appDirectoryExist ? @"TRUE" : @"FALSE"); NSLog(@"Latest Build Request -> current version: %ld", currentVersion); @@ -72,66 +72,13 @@ NSLog(@"Latest Build Request -> mac url: %@", macInstallerUrl); BOOL latestVersionAvailable = (currentVersion != buildNumber.integerValue); [[Settings sharedSettings] buildVersion:buildNumber.integerValue]; - + BOOL shouldDownloadInterface = (latestVersionAvailable || !appDirectoryExist); NSLog(@"Latest Build Request -> SHOULD DOWNLOAD: %@", shouldDownloadInterface ? @"TRUE" : @"FALSE"); [sharedLauncher shouldDownloadLatestBuild:shouldDownloadInterface :macInstallerUrl]; }); }]; - + [dataTask resume]; - - //NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; - - /*if(theConnection) { - self.webData = [NSMutableData data]; - NSLog(@"connection initiated"); - }*/ } - -- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { - [self.webData appendData:data]; -} - -- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { - NSHTTPURLResponse *ne = (NSHTTPURLResponse *)response; - if([ne statusCode] == 200) { - NSLog(@"connection state is 200 - all okay"); - } else { - NSLog(@"connection state is NOT 200"); - [[Launcher sharedLauncher] displayErrorPage]; - } -} - --(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { - NSLog(@"Conn Err: %@", [error localizedDescription]); - [[Launcher sharedLauncher] displayErrorPage]; -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)connection { - Launcher* sharedLauncher = [Launcher sharedLauncher]; - self.jsonString = [[NSString alloc] initWithBytes: [self.webData mutableBytes] length:[self.webData length] encoding:NSUTF8StringEncoding]; - NSData *data = [self.jsonString dataUsingEncoding:NSUTF8StringEncoding]; - id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - - NSFileManager* fileManager = [NSFileManager defaultManager]; - NSArray *values = [json valueForKey:@"results"]; - NSDictionary *value = [values objectAtIndex:0]; - - - NSString* buildNumber = [value valueForKey:@"latest_version"]; - NSDictionary* installers = [value objectForKey:@"installers"]; - NSDictionary* macInstallerObject = [installers objectForKey:@"mac"]; - NSString* macInstallerUrl = [macInstallerObject valueForKey:@"zip_url"]; - - NSString* interfaceAppPath = [[sharedLauncher getAppPath] stringByAppendingString:@"interface.app"]; - BOOL appDirectoryExist = [fileManager fileExistsAtPath:interfaceAppPath]; - - BOOL latestVersionAvailable = ([self getCurrentVersion] != buildNumber.integerValue); - [[Settings sharedSettings] buildVersion:buildNumber.integerValue]; - - BOOL shouldDownloadInterface = (latestVersionAvailable || !appDirectoryExist); - [sharedLauncher shouldDownloadLatestBuild:shouldDownloadInterface :macInstallerUrl]; -} - @end diff --git a/launchers/darwin/src/OrganizationRequest.h b/launchers/darwin/src/OrganizationRequest.h index 2f7d2570d6..e10719c332 100644 --- a/launchers/darwin/src/OrganizationRequest.h +++ b/launchers/darwin/src/OrganizationRequest.h @@ -1,6 +1,6 @@ #import -@interface OrganizationRequest : NSObject { +@interface OrganizationRequest : NSObject { } @property (nonatomic, retain) NSMutableData* webData; diff --git a/launchers/darwin/src/OrganizationRequest.m b/launchers/darwin/src/OrganizationRequest.m index abc104785a..1b20840452 100644 --- a/launchers/darwin/src/OrganizationRequest.m +++ b/launchers/darwin/src/OrganizationRequest.m @@ -6,6 +6,11 @@ static NSString* const organizationURL = @"https://orgs.highfidelity.com/organizations/"; +@interface OrganizationRequest () +@property (nonatomic, assign) NSMutableData* receivedData; +@property (nonatomic, assign) NSInteger statusCode; +@end + @implementation OrganizationRequest - (void) confirmOrganization:(NSString*)aOrganization :(NSString*)aUsername { @@ -23,70 +28,111 @@ static NSString* const organizationURL = @"https://orgs.highfidelity.com/organiz } NSString* jsonFile = [hash stringByAppendingString:@".json"]; - NSError *error; - NSData *data = [NSData dataWithContentsOfURL: [NSURL URLWithString:[organizationURL stringByAppendingString:jsonFile]]]; - - Launcher* sharedLauncher = [Launcher sharedLauncher]; - if (data) { - NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; - [sharedLauncher setDomainURLInfo:[json valueForKey:@"domain"] :[json valueForKey:@"content_set_url"] :[json valueForKey:@"scripts_url"]]; - [sharedLauncher setLoginErrorState: NONE]; - return [sharedLauncher organizationRequestFinished:TRUE]; - } - [sharedLauncher setLoginErrorState: ORGANIZATION]; - return [sharedLauncher organizationRequestFinished:FALSE]; - /*NSLog(@"URL: %@", [organizationURL stringByAppendingString:jsonFile]); + NSMutableURLRequest *request = [NSMutableURLRequest new]; - [request setURL:[NSURL URLWithString: [organizationURL stringByAppendingString:@"High%20Fidelity"]]]; + [request setURL:[NSURL URLWithString:[organizationURL stringByAppendingString:jsonFile]]]; [request setHTTPMethod:@"GET"]; - [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; + [request setValue:@"" forHTTPHeaderField:@"Content-Type"]; - NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; + NSURLSession * session = [NSURLSession sessionWithConfiguration:NSURLSessionConfiguration.ephemeralSessionConfiguration delegate: self delegateQueue: [NSOperationQueue mainQueue]]; + NSURLSessionDataTask* dataTask = [session dataTaskWithRequest:request]; + /* NSURLSessionDataTask* dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + NSHTTPURLResponse *ne = (NSHTTPURLResponse *)response; + NSInteger statusCode = [ne statusCode]; + NSLog(@"Organization Response status code: %ld", [ne statusCode]); - if(theConnection) { - self.webData = [NSMutableData data]; - NSLog(@"connection initiated"); - }*/ + if (!error) { + if (statusCode == 200) { + NSError *jsonError; + NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&jsonError]; + if (jsonError) { + NSLog(@"Failed to parse Organzation json -> error: %@", jsonError); + dispatch_async(dispatch_get_main_queue(), ^{ + Launcher* sharedLauncher = [Launcher sharedLauncher]; + [sharedLauncher displayErrorPage]; + }); + return; + } + NSLog(@"getting org done"); + dispatch_async(dispatch_get_main_queue(), ^{ + Launcher* sharedLauncher = [Launcher sharedLauncher]; + [sharedLauncher setDomainURLInfo:[json valueForKey:@"domain"] :[json valueForKey:@"content_set_url"] :[json valueForKey:@"scripts_url"]]; + [sharedLauncher setLoginErrorState: NONE]; + [sharedLauncher organizationRequestFinished:TRUE]; + }); + } else if (statusCode == 403 || statusCode == 404) { + dispatch_async(dispatch_get_main_queue(), ^{ + Launcher* sharedLauncher = [Launcher sharedLauncher]; + [sharedLauncher setLoginErrorState: ORGANIZATION]; + [sharedLauncher organizationRequestFinished:FALSE]; + }); + } else { + NSLog(@ "Organization Response error: -> %@", error); + dispatch_async(dispatch_get_main_queue(), ^{ + Launcher* sharedLauncher = [Launcher sharedLauncher]; + [sharedLauncher displayErrorPage]; + }); + } + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + Launcher* sharedLauncher = [Launcher sharedLauncher]; + [sharedLauncher displayErrorPage]; + }); + } + }];*/ + + [dataTask resume]; } -- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { - [self.webData appendData:data]; -} -- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { +- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler { + NSLog(@"----------------> "); + + self.receivedData = nil; + self.receivedData = [[NSMutableData alloc] init]; + [self.receivedData setLength:0]; NSHTTPURLResponse *ne = (NSHTTPURLResponse *)response; - if([ne statusCode] == 200) { - NSLog(@"connection state is 200 - all okay"); - } else { - NSLog(@"connection state is NOT 200"); + self.statusCode = [ne statusCode]; + NSLog(@"Organization Response status code: %ld", self.statusCode); + completionHandler(NSURLSessionResponseAllow); +} + + +-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask + didReceiveData:(NSData *)data { + + [self.receivedData appendData:data]; + NSLog(@"did recieve data"); +} + +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { + NSLog(@"did complete with error"); + if (error) { + // Handle error + } + else { + Launcher* sharedLauncher = [Launcher sharedLauncher]; + if (self.statusCode == 200) { + NSError *jsonError; + NSDictionary *json = [NSJSONSerialization JSONObjectWithData:self.receivedData options:kNilOptions error:&jsonError]; + if (jsonError) { + NSLog(@"Failed to parse Organzation json -> error: %@", jsonError); + [sharedLauncher displayErrorPage]; + return; + } + NSLog(@"getting org done"); + [sharedLauncher setDomainURLInfo:[json valueForKey:@"domain"] :[json valueForKey:@"content_set_url"] :[json valueForKey:@"scripts_url"]]; + [sharedLauncher setLoginErrorState: NONE]; + [sharedLauncher organizationRequestFinished:TRUE]; + } else if (self.statusCode == 403 || self.statusCode == 404) { + [sharedLauncher setLoginErrorState: ORGANIZATION]; + [sharedLauncher organizationRequestFinished:FALSE]; + } else { + NSLog(@ "Organization Response error: -> %@", error); + [sharedLauncher displayErrorPage]; + } } -} - --(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { - NSLog(@"Conn Err: %@", [error localizedDescription]); -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)connection { - /*NSString* jsonString = [[NSString alloc] initWithBytes: [self.webData mutableBytes] length:[self.webData length] encoding:NSUTF8StringEncoding]; - NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; - id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];*/ - - /*Launcher* sharedLauncher = [Launcher sharedLauncher]; - if (json[@"error"] != nil) { - NSLog(@"Login in failed"); - NSString* accessToken = [json objectForKey:@"access_token"]; - NSLog(@"access token %@", accessToken); - [sharedLauncher credentialsAccepted:FALSE]; - } else { - NSLog(@"Login successful"); - NSString* accessToken = [json objectForKey:@"access_token"]; - NSLog(@"access token %@", accessToken); - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - [defaults setValue:accessToken forKey:@"access_token"]; - [defaults synchronize]; - [sharedLauncher credentialsAccepted:TRUE]; - }*/ - //NSLog(@"OUTPUT:: %@", self.jsonString); } @end diff --git a/launchers/darwin/src/Window.h b/launchers/darwin/src/Window.h index 05e1a7e09e..ace35baab6 100644 --- a/launchers/darwin/src/Window.h +++ b/launchers/darwin/src/Window.h @@ -1,6 +1,6 @@ #import @interface Window : NSWindow { - + } @end diff --git a/launchers/darwin/src/Window.m b/launchers/darwin/src/Window.m index fc54e095e7..a17b2533fd 100644 --- a/launchers/darwin/src/Window.m +++ b/launchers/darwin/src/Window.m @@ -4,4 +4,10 @@ -(BOOL)canBecomeKeyWindow { return YES; } + +-(BOOL)isMovableByWindowBackground +{ + return TRUE; +} + @end diff --git a/launchers/darwin/src/main.mm b/launchers/darwin/src/main.mm index b6555aad87..4d66d15549 100644 --- a/launchers/darwin/src/main.mm +++ b/launchers/darwin/src/main.mm @@ -17,7 +17,7 @@ void redirectLogToDocuments() int main(int argc, const char* argv[]) { //NSApp.appearance = [NSAppearance appearanceNamed: NSAppearanceNameAqua]; - redirectLogToDocuments(); + //redirectLogToDocuments(); NSArray* apps = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.highfidelity.launcher"]; if ([apps count] > 1) { NSLog(@"launcher is already running");