From fd49ca75d760d8306ed66a4cac81d60fba4e127e Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 30 Dec 2010 17:51:23 +1300 Subject: [PATCH] Forgot launcher files. --- OpenRA.Launcher.Mac/HttpRequest.h | 29 +++++++++++ OpenRA.Launcher.Mac/HttpRequest.m | 81 ++++++++++++++++++++++++++++++ OpenRA.Launcher.Mac/OpenRA | Bin 0 -> 8800 bytes 3 files changed, 110 insertions(+) create mode 100644 OpenRA.Launcher.Mac/HttpRequest.h create mode 100644 OpenRA.Launcher.Mac/HttpRequest.m create mode 100755 OpenRA.Launcher.Mac/OpenRA diff --git a/OpenRA.Launcher.Mac/HttpRequest.h b/OpenRA.Launcher.Mac/HttpRequest.h new file mode 100644 index 0000000000..a1ad188591 --- /dev/null +++ b/OpenRA.Launcher.Mac/HttpRequest.h @@ -0,0 +1,29 @@ +/* + * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see LICENSE. + */ + +#import + +@class WebScriptObject; +@class GameInstall; +@interface HttpRequest : NSObject +{ + NSString *url; + NSString *callback; + GameInstall *game; + NSTask *task; + NSMutableData *response; + BOOL cancelled; +} +@property(readonly) NSString *url; + ++ (id)requestWithURL:(NSString *)aURL callback:(NSString *)aCallback game:(GameInstall *)aGame; +- (id)initWithURL:(NSString *)aURL callback:(NSString *)aCallback game:(GameInstall *)aGame; +- (void)cancel; +- (BOOL)terminated; + +@end diff --git a/OpenRA.Launcher.Mac/HttpRequest.m b/OpenRA.Launcher.Mac/HttpRequest.m new file mode 100644 index 0000000000..325eef0e76 --- /dev/null +++ b/OpenRA.Launcher.Mac/HttpRequest.m @@ -0,0 +1,81 @@ +/* + * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see LICENSE. + */ + +#import "HttpRequest.h" +#import "JSBridge.h" +#import "GameInstall.h" + +@implementation HttpRequest +@synthesize url; + ++ (id)requestWithURL:(NSString *)aURL callback:(NSString *)aCallback game:(GameInstall *)aGame +{ + id newObject = [[self alloc] initWithURL:aURL callback:aCallback game:aGame]; + [newObject autorelease]; + return newObject; +} + +- (id)initWithURL:(NSString *)aURL callback:(NSString *)aCallback game:(GameInstall *)aGame; +{ + self = [super init]; + if (self != nil) + { + NSLog(@"Requesting url `%@` with callback:`%@`",aURL, aCallback); + url = [aURL retain]; + callback = [aCallback retain]; + game = [aGame retain]; + response = [[NSMutableData alloc] init]; + + task = [game runAsyncUtilityWithArg:[NSString stringWithFormat:@"--download-url=%@",url] + delegate:self + responseSelector:@selector(utilityResponded:) + terminatedSelector:@selector(utilityTerminated:)]; + [task retain]; + } + return self; +} + +- (void)cancel +{ + cancelled = YES; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:NSFileHandleReadCompletionNotification + object:[[task standardOutput] fileHandleForReading]]; + [task terminate]; +} + +- (void)utilityResponded:(NSNotification *)n +{ + NSData *data = [[n userInfo] valueForKey:NSFileHandleNotificationDataItem]; + [response appendData:data]; + + // Keep reading + if ([n object] != nil) + [[n object] readInBackgroundAndNotify]; +} + +- (void)utilityTerminated:(NSNotification *)n +{ + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc removeObserver:self name:NSFileHandleReadCompletionNotification object:[[task standardOutput] fileHandleForReading]]; + [nc removeObserver:self name:NSTaskDidTerminateNotification object:task]; + [task release]; task = nil; + + if (!cancelled) + { + NSString *data = [[[NSString alloc] initWithData:response encoding:NSASCIIStringEncoding] autorelease]; + [[JSBridge sharedInstance] runCallback:callback withArgument:data]; + } +} + +- (BOOL)terminated +{ + return task == nil; +} + +@end diff --git a/OpenRA.Launcher.Mac/OpenRA b/OpenRA.Launcher.Mac/OpenRA new file mode 100755 index 0000000000000000000000000000000000000000..dd5cbc97c911547a49babcaa1df7699a27649c3a GIT binary patch literal 8800 zcmeHNO>7%Q6n+~!)P*E<5fXtyS&-63l*UC!C>$!;v?f~`+K?tFLZFF%HnvN=w$|%3 zK?+og_%T+bfDlA*;eaY`Tzbd_loX+~5`w^~haM^f$W=f@fH+i9!}oS)65FBWSPuK7 zH}k&vdGqGYTWfcozq|h1jU7Zx;h_A3Vvejifcg ze?_dP8w&_A6dxIC9OBLoH@1<)u#H;5Fv%q$9COl<09CWT^X=FS+E?We#=Ngh3ewq4 z8G;a{seH09E=o>0`S^BypLBToI^`sVm5z|qw`E_dB@3M*r>G<=NLOH85_VZTl@-XL43rJ-x$1%jjxPHHgw^6r4791yU;{b&?8XJn$^&lP^;zY$uU7WC9WvdWH zyO4ohVj^LeZmzFeEdf0oXE!4uEX0TxDn-ZMW?#3oPnpHI{wz5@lx@6*5aWqk>FbsH zbRG<1T(6Ix3l($RFGM=wBv|sO*?%KV`WV-rgPN!6t>?b~*oouuqsLT0=uPJU%rq*E zW4qjQa$AWW!SBi;DZ7uyd|FVPk*$d`9vG25&X)d?+j{TpSDmiAp=jk5!A(uqAPre6y5BMJN zJ>Yx5_rU+g1E`U4n0boIf3s8z z!Sc#-?F&?Y4ZBl+jaH_=F)HOnqZ(f{W)?$6wYT;z`nT{QWA^ZeXyKO~s=c+<7dEP4 zW485UZmGmqATD|0Wr$yT;#H$ETr-yAYk;&IU*~FdZ#BMd%o|nbYfL))DVjXp2Ow?4 z*Jq~J1Fv1dme5;Xsqu^5rLSnC>pczKUGKZ)2W~l!@<=veWz4kh6!bF%`xSg}>FJ!U zca`MJUZg*lv=jDJ5Ug z>*>R+9&^&9ovgBd_Q3!ajh)))`V)4|Wl_+zUp6*2viQEFYgbshpQRsI+Q-sGNZz~f z1Av%KI+#fZ^E;R#elKIz!d?r@{BGWcveTVOwAM} zL(gMqlU$wgg#qd;PZq_o(lKQP{vZE9;`H(bPas%I~_Ute=(j zkgOX9`@r{r?*ZQfz6X2{_#W^*;CsOLfbRj{1HK1*5BMIqtsdAN<)oLFWKJS4j3o2( zcK00Fy}P3#mBpP3(rat_M_kc&unJ7aE^4qIsv)K+p5wnN7$C}@8^ zk+W#v#7NA}(6DJu-M=RTZ>c4<9t05p!0iBtRWTGlA@O< zC>fy3I$ExBQR8AwSI*-Jdy$k=`Eb5U>EHyRyuY{?;x60`se6uxBv$tw`z2QQ9ZvuU zZoHLQQ-TT8piA2%Oe+%~jQsmVWNEdH8TZrvvA=F6;_x!vAmGK}W Q0Tp6Eo&L5cf?Z7i0Bd2SG5`Po literal 0 HcmV?d00001