required libs:
* ZipArchive - Obj-C impl of zip
* asi-http-request : http request help to assist with asynchoronous downloading of files
* minizip : support for ZipArchive
*
Added default splash screen for iOS app. (using the Wagic background to keep it neutral to module)
TODO: refine handling for iPad splash screen
* add selection screen and input screen for location of downloadable content. (ie core files, image files, etc )
* add support to opt out of backing up to iCloud for core files. Right now iOS will automatically backup all files under Documents folder to iCloud. Consider only allowing player data to be backed up to iCloud. All graphics and other assets are considered volatile.
81 lines
3.6 KiB
Objective-C
81 lines
3.6 KiB
Objective-C
//
|
|
// ASIWebPageRequest.h
|
|
// Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest
|
|
//
|
|
// Created by Ben Copsey on 29/06/2010.
|
|
// Copyright 2010 All-Seeing Interactive. All rights reserved.
|
|
//
|
|
// This is an EXPERIMENTAL class - use at your own risk!
|
|
// It is strongly recommend to set a downloadDestinationPath when using ASIWebPageRequest
|
|
// Also, performance will be better if your ASIWebPageRequest has a downloadCache setup
|
|
// Known issue: You cannot use startSychronous with an ASIWebPageRequest
|
|
|
|
#import "ASIHTTPRequest.h"
|
|
|
|
@class ASINetworkQueue;
|
|
|
|
// Used internally for storing what type of data we got from the server
|
|
typedef enum _ASIWebContentType {
|
|
ASINotParsedWebContentType = 0,
|
|
ASIHTMLWebContentType = 1,
|
|
ASICSSWebContentType = 2
|
|
} ASIWebContentType;
|
|
|
|
// These correspond with the urlReplacementMode property of ASIWebPageRequest
|
|
typedef enum _ASIURLReplacementMode {
|
|
|
|
// Don't modify html or css content at all
|
|
ASIDontModifyURLs = 0,
|
|
|
|
// Replace external resources urls (images, stylesheets etc) with data uris, so their content is embdedded directly in the html/css
|
|
ASIReplaceExternalResourcesWithData = 1,
|
|
|
|
// Replace external resource urls with the url of locally cached content
|
|
// You must set the baseURL of a WebView / UIWebView to a file url pointing at the downloadDestinationPath of the main ASIWebPageRequest if you want to display your content
|
|
// See the Mac or iPhone example projects for a demonstration of how to do this
|
|
// The hrefs of all hyperlinks are changed to use absolute urls when using this mode
|
|
ASIReplaceExternalResourcesWithLocalURLs = 2
|
|
} ASIURLReplacementMode;
|
|
|
|
|
|
|
|
@interface ASIWebPageRequest : ASIHTTPRequest {
|
|
|
|
// Each ASIWebPageRequest for an HTML or CSS file creates its own internal queue to download external resources
|
|
ASINetworkQueue *externalResourceQueue;
|
|
|
|
// This dictionary stores a list of external resources to download, along with their content-type data or a path to the data
|
|
NSMutableDictionary *resourceList;
|
|
|
|
// Used internally for parsing HTML (with libxml)
|
|
struct _xmlDoc *doc;
|
|
|
|
// If the response is an HTML or CSS file, this will be set so the content can be correctly parsed when it has finished fetching external resources
|
|
ASIWebContentType webContentType;
|
|
|
|
// Stores a reference to the ASIWebPageRequest that created this request
|
|
// Note that a parentRequest can also have a parent request because ASIWebPageRequests parse their contents to look for external resources recursively
|
|
// For example, a request for an image can be created by a request for a stylesheet which was created by a request for a web page
|
|
ASIWebPageRequest *parentRequest;
|
|
|
|
// Controls what ASIWebPageRequest does with external resources. See the notes above for more.
|
|
ASIURLReplacementMode urlReplacementMode;
|
|
|
|
// When set to NO, loading will stop when an external resource fails to load. Defaults to YES
|
|
BOOL shouldIgnoreExternalResourceErrors;
|
|
}
|
|
|
|
// Will return a data URI that contains a base64 version of the content at this url
|
|
// This is used when replacing urls in the html and css with actual data
|
|
// If you subclass ASIWebPageRequest, you can override this function to return different content or a url pointing at another location
|
|
- (NSString *)contentForExternalURL:(NSString *)theURL;
|
|
|
|
// Returns the location that a downloaded external resource's content will be stored in
|
|
- (NSString *)cachePathForRequest:(ASIWebPageRequest *)theRequest;
|
|
|
|
|
|
@property (retain, nonatomic) ASIWebPageRequest *parentRequest;
|
|
@property (assign, nonatomic) ASIURLReplacementMode urlReplacementMode;
|
|
@property (assign, nonatomic) BOOL shouldIgnoreExternalResourceErrors;
|
|
@end
|