mirror of
https://github.com/moonlight-stream/moonlight-ios.git
synced 2025-07-02 15:56:21 +00:00
50 lines
1.6 KiB
Objective-C
50 lines
1.6 KiB
Objective-C
//
|
|
// AppAssetRetriever.m
|
|
// Moonlight
|
|
//
|
|
// Created by Diego Waxemberg on 1/31/15.
|
|
// Copyright (c) 2015 Moonlight Stream. All rights reserved.
|
|
//
|
|
|
|
#import "AppAssetRetriever.h"
|
|
#import "HttpManager.h"
|
|
#import "CryptoManager.h"
|
|
#import "AppAssetResponse.h"
|
|
#import "HttpRequest.h"
|
|
#import "IdManager.h"
|
|
|
|
@implementation AppAssetRetriever
|
|
static const double RETRY_DELAY = 2; // seconds
|
|
static const int MAX_ATTEMPTS = 5;
|
|
|
|
- (void) main {
|
|
int attempts = 0;
|
|
while (![self isCancelled] && attempts++ < MAX_ATTEMPTS) {
|
|
HttpManager* hMan = [[HttpManager alloc] initWithHost:_host.activeAddress uniqueId:[IdManager getUniqueId] serverCert:_host.serverCert];
|
|
AppAssetResponse* appAssetResp = [[AppAssetResponse alloc] init];
|
|
[hMan executeRequestSynchronously:[HttpRequest requestForResponse:appAssetResp withUrlRequest:[hMan newAppAssetRequestWithAppId:self.app.id]]];
|
|
|
|
#if TARGET_OS_IPHONE
|
|
if (appAssetResp.data != nil) {
|
|
NSString* boxArtPath = [AppAssetManager boxArtPathForApp:self.app];
|
|
[[NSFileManager defaultManager] createDirectoryAtPath:[boxArtPath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil];
|
|
[appAssetResp.data writeToFile:boxArtPath atomically:NO];
|
|
break;
|
|
}
|
|
#else
|
|
|
|
#endif
|
|
|
|
if (![self isCancelled]) {
|
|
[NSThread sleepForTimeInterval:RETRY_DELAY];
|
|
}
|
|
}
|
|
[self performSelectorOnMainThread:@selector(sendCallbackForApp:) withObject:self.app waitUntilDone:NO];
|
|
}
|
|
|
|
- (void) sendCallbackForApp:(TemporaryApp*)app {
|
|
[self.callback receivedAssetForApp:app];
|
|
}
|
|
|
|
@end
|