topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-URLAccess.h / h
/*
File: URLAccess.h
Contains: URL Access Interfaces.
Version: Technology: URLAccess 2.0
Release: QuickTime 6.0.2
Copyright: (c) 1994-2001 by Apple Computer, Inc., all rights reserved
Bugs?: For bug reports, consult the following page on
the World Wide Web:
http://developer.apple.com/bugreporter/
*/
ifndef __URLACCESS__
define __URLACCESS__
ifndef __MACTYPES__
include <MacTypes.h>
endif
ifndef __FILES__
include <Files.h>
endif
ifndef __CODEFRAGMENTS__
include <CodeFragments.h>
endif
ifndef __FILESIGNING__
include <FileSigning.h>
endif
ifndef __MACERRORS__
include <MacErrors.h>
endif
if PRAGMA_ONCE
#pragma once
endif
ifdef __cplusplus
extern "C" {
endif
if PRAGMA_IMPORT
#pragma import on
endif
if PRAGMA_STRUCT_ALIGN
#pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
#pragma pack(2)
endif
/* Data structures and types */
typedef struct OpaqueURLReference* URLReference;
typedef UInt32 URLOpenFlags;
enum {
kURLReplaceExistingFlag = 1 << 0,
kURLBinHexFileFlag = 1 << 1, /* Binhex before uploading if necessary*/
kURLExpandFileFlag = 1 << 2, /* Use StuffIt engine to expand file if necessary*/
kURLDisplayProgressFlag = 1 << 3,
kURLDisplayAuthFlag = 1 << 4, /* Display auth dialog if guest connection fails*/
kURLUploadFlag = 1 << 5, /* Do an upload instead of a download*/
kURLIsDirectoryHintFlag = 1 << 6, /* Hint: the URL is a directory*/
kURLDoNotTryAnonymousFlag = 1 << 7, /* Don't try to connect anonymously before getting logon info*/
kURLDirectoryListingFlag = 1 << 8, /* Download the directory listing, not the whole directory*/
kURLExpandAndVerifyFlag = 1 << 9, /* Expand file and then verify using signature resource*/
kURLNoAutoRedirectFlag = 1 << 10, /* Do not automatically redirect to new URL*/
kURLDebinhexOnlyFlag = 1 << 11, /* Do not use Stuffit Expander - just internal debinhex engine*/
kURLReservedFlag = (unsigned long)(1 << 31) /* reserved for Apple internal use*/
};
typedef UInt32 URLState;
enum {
kURLNullState = 0,
kURLInitiatingState = 1,
kURLLookingUpHostState = 2,
kURLConnectingState = 3,
kURLResourceFoundState = 4,
kURLDownloadingState = 5,
kURLDataAvailableState = 0x10 + kURLDownloadingState,
kURLTransactionCompleteState = 6,
kURLErrorOccurredState = 7,
kURLAbortingState = 8,
kURLCompletedState = 9,
kURLUploadingState = 10
};
typedef UInt32 URLEvent;
enum {
kURLInitiatedEvent = kURLInitiatingState,
kURLResourceFoundEvent = kURLResourceFoundState,
kURLDownloadingEvent = kURLDownloadingState,
kURLAbortInitiatedEvent = kURLAbortingState,
kURLCompletedEvent = kURLCompletedState,
kURLErrorOccurredEvent = kURLErrorOccurredState,
kURLDataAvailableEvent = kURLDataAvailableState,
kURLTransactionCompleteEvent = kURLTransactionCompleteState,
kURLUploadingEvent = kURLUploadingState,
kURLSystemEvent = 29,
kURLPercentEvent = 30,
kURLPeriodicEvent = 31,
kURLPropertyChangedEvent = 32
};
typedef unsigned long URLEventMask;
enum {
kURLInitiatedEventMask = 1 << (kURLInitiatedEvent - 1),
kURLResourceFoundEventMask = 1 << (kURLResourceFoundEvent - 1),
kURLDownloadingMask = 1 << (kURLDownloadingEvent - 1),
kURLUploadingMask = 1 << (kURLUploadingEvent - 1),
kURLAbortInitiatedMask = 1 << (kURLAbortInitiatedEvent - 1),
kURLCompletedEventMask = 1 << (kURLCompletedEvent - 1),
kURLErrorOccurredEventMask = 1 << (kURLErrorOccurredEvent - 1),
kURLDataAvailableEventMask = 1 << (kURLDataAvailableEvent - 1),
kURLTransactionCompleteEventMask = 1 << (kURLTransactionCompleteEvent - 1),
kURLSystemEventMask = 1 << (kURLSystemEvent - 1),
kURLPercentEventMask = 1 << (kURLPercentEvent - 1),
kURLPeriodicEventMask = 1 << (kURLPeriodicEvent - 1),
kURLPropertyChangedEventMask = 1 << (kURLPropertyChangedEvent - 1),
kURLAllBufferEventsMask = kURLDataAvailableEventMask + kURLTransactionCompleteEventMask,
kURLAllNonBufferEventsMask = kURLInitiatedEventMask + kURLDownloadingMask + kURLUploadingMask + kURLAbortInitiatedMask + kURLCompletedEventMask + kURLErrorOccurredEventMask + kURLPercentEventMask + kURLPeriodicEventMask + kURLPropertyChangedEventMask,
kURLAllEventsMask = (long)0xFFFFFFFF
};
struct URLCallbackInfo {
UInt32 version;
URLReference urlRef;
const char * property;
UInt32 currentSize;
EventRecord * systemEvent;
};
typedef struct URLCallbackInfo URLCallbackInfo;
static const char* kURLURL = "URLString";
static const char* kURLResourceSize = "URLResourceSize";
static const char* kURLLastModifiedTime = "URLLastModifiedTime";
static const char* kURLMIMEType = "URLMIMEType";
static const char* kURLFileType = "URLFileType";
static const char* kURLFileCreator = "URLFileCreator";
static const char* kURLCharacterSet = "URLCharacterSet";
static const char* kURLResourceName = "URLResourceName";
static const char* kURLHost = "URLHost";
static const char* kURLAuthType = "URLAuthType";
static const char* kURLUserName = "URLUserName";
static const char* kURLPassword = "URLPassword";
static const char* kURLStatusString = "URLStatusString";
static const char* kURLIsSecure = "URLIsSecure";
static const char* kURLCertificate = "URLCertificate";
static const char* kURLTotalItems = "URLTotalItems";
/* http and https properties*/
static const char* kURLHTTPRequestMethod = "URLHTTPRequestMethod";
static const char* kURLHTTPRequestHeader = "URLHTTPRequestHeader";
static const char* kURLHTTPRequestBody = "URLHTTPRequestBody";
static const char* kURLHTTPRespHeader = "URLHTTPRespHeader";
static const char* kURLHTTPUserAgent = "URLHTTPUserAgent";
static const char* kURLHTTPRedirectedURL = "URLHTTPRedirectedURL";
/* authentication type flags*/
enum {
kUserNameAndPasswordFlag = 0x00000001
};
EXTERN_API( OSStatus )
URLGetURLAccessVersion (UInt32 * returnVers);
if TARGET_RT_MAC_CFM
ifdef __cplusplus
inline pascal Boolean URLAccessAvailable() { return ((URLGetURLAccessVersion != (void*)kUnresolvedCFragSymbolAddress) ); }
else
#define URLAccessAvailable() ((URLGetURLAccessVersion != (void*)kUnresolvedCFragSymbolAddress) )
endif
#elif TARGET_RT_MAC_MACHO
/* URL Access is always available on OS X */
ifdef __cplusplus
inline pascal Boolean URLAccessAvailable() { return true; }
else
#define URLAccessAvailable() (true)
endif
endif /* */
typedef CALLBACK_API( OSStatus , URLNotifyProcPtr )(void *userContext, URLEvent event, URLCallbackInfo *callbackInfo);
typedef CALLBACK_API( OSStatus , URLSystemEventProcPtr )(void *userContext, EventRecord *event);
typedef TVECTOR_UPP_TYPE(URLNotifyProcPtr) URLNotifyUPP;
typedef TVECTOR_UPP_TYPE(URLSystemEventProcPtr) URLSystemEventUPP;
if OPAQUE_UPP_TYPES
EXTERN_API(URLNotifyUPP)
NewURLNotifyUPP (URLNotifyProcPtr userRoutine);
EXTERN_API(URLSystemEventUPP)
NewURLSystemEventUPP (URLSystemEventProcPtr userRoutine);
EXTERN_API(void)
DisposeURLNotifyUPP (URLNotifyUPP userUPP);
EXTERN_API(void)
DisposeURLSystemEventUPP (URLSystemEventUPP userUPP);
EXTERN_API(OSStatus)
InvokeURLNotifyUPP (void * userContext,
URLEvent event,
URLCallbackInfo * callbackInfo,
URLNotifyUPP userUPP);
EXTERN_API(OSStatus)
InvokeURLSystemEventUPP (void * userContext,
EventRecord * event,
URLSystemEventUPP userUPP);
else
#define NewURLNotifyUPP(userRoutine) (userRoutine)
#define NewURLSystemEventUPP(userRoutine) (userRoutine)
#define DisposeURLNotifyUPP(userUPP)
#define DisposeURLSystemEventUPP(userUPP)
#define InvokeURLNotifyUPP(userContext, event, callbackInfo, userUPP) (*userUPP)(userContext, event, callbackInfo)
#define InvokeURLSystemEventUPP(userContext, event, userUPP) (*userUPP)(userContext, event)
endif
EXTERN_API( OSStatus )
URLSimpleDownload (const char * url,
FSSpec * destination,
Handle destinationHandle,
URLOpenFlags openFlags,
URLSystemEventUPP eventProc,
void * userContext);
EXTERN_API( OSStatus )
URLDownload (URLReference urlRef,
FSSpec * destination,
Handle destinationHandle,
URLOpenFlags openFlags,
URLSystemEventUPP eventProc,
void * userContext);
EXTERN_API( OSStatus )
URLSimpleUpload (const char * url,
const FSSpec * source,
URLOpenFlags openFlags,
URLSystemEventUPP eventProc,
void * userContext);
EXTERN_API( OSStatus )
URLUpload (URLReference urlRef,
const FSSpec * source,
URLOpenFlags openFlags,
URLSystemEventUPP eventProc,
void * userContext);
EXTERN_API( OSStatus )
URLNewReference (const char * url,
URLReference * urlRef);
EXTERN_API( OSStatus )
URLDisposeReference (URLReference urlRef);
EXTERN_API( OSStatus )
URLOpen (URLReference urlRef,
FSSpec * fileSpec,
URLOpenFlags openFlags,
URLNotifyUPP notifyProc,
URLEventMask eventRegister,
void * userContext);
EXTERN_API( OSStatus )
URLAbort (URLReference urlRef);
EXTERN_API( OSStatus )
URLGetDataAvailable (URLReference urlRef,
Size * dataSize);
EXTERN_API( OSStatus )
URLGetBuffer (URLReference urlRef,
void ** buffer,
Size * bufferSize);
EXTERN_API( OSStatus )
URLReleaseBuffer (URLReference urlRef,
void * buffer);
EXTERN_API( OSStatus )
URLGetProperty (URLReference urlRef,
const char * property,
void * propertyBuffer,
Size bufferSize);
EXTERN_API( OSStatus )
URLGetPropertySize (URLReference urlRef,
const char * property,
Size * propertySize);
EXTERN_API( OSStatus )
URLSetProperty (URLReference urlRef,
const char * property,
void * propertyBuffer,
Size bufferSize);
EXTERN_API( OSStatus )
URLGetCurrentState (URLReference urlRef,
URLState * state);
EXTERN_API( OSStatus )
URLGetError (URLReference urlRef,
OSStatus * urlError);
EXTERN_API( OSStatus )
URLIdle (void);
EXTERN_API( OSStatus )
URLGetFileInfo (StringPtr fName,
OSType * fType,
OSType * fCreator);
if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
endif
ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
endif
ifdef __cplusplus
}
endif
endif /* __URLACCESS__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.