diff options
Diffstat (limited to 'common/quicktime_win32/URLAccess.h')
| -rw-r--r-- | common/quicktime_win32/URLAccess.h | 623 |
1 files changed, 623 insertions, 0 deletions
diff --git a/common/quicktime_win32/URLAccess.h b/common/quicktime_win32/URLAccess.h new file mode 100644 index 0000000..2dca3fa --- /dev/null +++ b/common/quicktime_win32/URLAccess.h @@ -0,0 +1,623 @@ +/* + File: URLAccess.h + + Contains: URL Access Interfaces. + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1994-2000 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 __MACERRORS__ +#include <MacErrors.h> +#endif + +#ifndef __EVENTS__ +#include <Events.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*/ + kURLDoNotDeleteOnErrorFlag = 1 << 12, /* Do not delete the downloaded file if an error or abort occurs.*/ + /* This flag applies to downloading only and should be used if*/ + /* interested in later resuming the download.*/ + kURLResumeDownloadFlag = 1 << 13, /* The passed in file is partially downloaded, attempt to resume*/ + /* it. Currently works for HTTP only. If no FSSpec passed in,*/ + /* this flag will be ignored. Overriden by kURLReplaceExistingFlag. */ + 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; + +/* authentication type flags*/ +enum { + kUserNameAndPasswordFlag = 0x00000001 +}; + +#define kURLURL "URLString" +#define kURLResourceSize "URLResourceSize" +#define kURLLastModifiedTime "URLLastModifiedTime" +#define kURLMIMEType "URLMIMEType" +#define kURLFileType "URLFileType" +#define kURLFileCreator "URLFileCreator" +#define kURLCharacterSet "URLCharacterSet" +#define kURLResourceName "URLResourceName" +#define kURLHost "URLHost" +#define kURLAuthType "URLAuthType" +#define kURLUserName "URLUserName" +#define kURLPassword "URLPassword" +#define kURLStatusString "URLStatusString" +#define kURLIsSecure "URLIsSecure" +#define kURLCertificate "URLCertificate" +#define kURLTotalItems "URLTotalItems" +#define kURLConnectTimeout "URLConnectTimeout" +/* http and https properties*/ +#define kURLHTTPRequestMethod "URLHTTPRequestMethod" +#define kURLHTTPRequestHeader "URLHTTPRequestHeader" +#define kURLHTTPRequestBody "URLHTTPRequestBody" +#define kURLHTTPRespHeader "URLHTTPRespHeader" +#define kURLHTTPUserAgent "URLHTTPUserAgent" +#define kURLHTTPRedirectedURL "URLHTTPRedirectedURL" +#define kURLSSLCipherSuite "URLSSLCipherSuite" + + + + +/* + * URLGetURLAccessVersion() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +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; +/* + * NewURLNotifyUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( URLNotifyUPP ) +NewURLNotifyUPP(URLNotifyProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppURLNotifyProcInfo = 0x00000FF0 }; /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(URLNotifyUPP) NewURLNotifyUPP(URLNotifyProcPtr userRoutine) { return userRoutine; } + #else + #define NewURLNotifyUPP(userRoutine) (userRoutine) + #endif +#endif + +/* + * NewURLSystemEventUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( URLSystemEventUPP ) +NewURLSystemEventUPP(URLSystemEventProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppURLSystemEventProcInfo = 0x000003F0 }; /* pascal 4_bytes Func(4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(URLSystemEventUPP) NewURLSystemEventUPP(URLSystemEventProcPtr userRoutine) { return userRoutine; } + #else + #define NewURLSystemEventUPP(userRoutine) (userRoutine) + #endif +#endif + +/* + * DisposeURLNotifyUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeURLNotifyUPP(URLNotifyUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeURLNotifyUPP(URLNotifyUPP) {} + #else + #define DisposeURLNotifyUPP(userUPP) + #endif +#endif + +/* + * DisposeURLSystemEventUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeURLSystemEventUPP(URLSystemEventUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeURLSystemEventUPP(URLSystemEventUPP) {} + #else + #define DisposeURLSystemEventUPP(userUPP) + #endif +#endif + +/* + * InvokeURLNotifyUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +InvokeURLNotifyUPP( + void * userContext, + URLEvent event, + URLCallbackInfo * callbackInfo, + URLNotifyUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(OSStatus) InvokeURLNotifyUPP(void * userContext, URLEvent event, URLCallbackInfo * callbackInfo, URLNotifyUPP userUPP) { return (*userUPP)(userContext, event, callbackInfo); } + #else + #define InvokeURLNotifyUPP(userContext, event, callbackInfo, userUPP) (*userUPP)(userContext, event, callbackInfo) + #endif +#endif + +/* + * InvokeURLSystemEventUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +InvokeURLSystemEventUPP( + void * userContext, + EventRecord * event, + URLSystemEventUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(OSStatus) InvokeURLSystemEventUPP(void * userContext, EventRecord * event, URLSystemEventUPP userUPP) { return (*userUPP)(userContext, event); } + #else + #define InvokeURLSystemEventUPP(userContext, event, userUPP) (*userUPP)(userContext, event) + #endif +#endif + +/* + * URLSimpleDownload() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLSimpleDownload( + const char * url, + FSSpec * destination, /* can be NULL */ + Handle destinationHandle, /* can be NULL */ + URLOpenFlags openFlags, + URLSystemEventUPP eventProc, /* can be NULL */ + void * userContext); /* can be NULL */ + + +/* + * URLDownload() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLDownload( + URLReference urlRef, + FSSpec * destination, /* can be NULL */ + Handle destinationHandle, /* can be NULL */ + URLOpenFlags openFlags, + URLSystemEventUPP eventProc, /* can be NULL */ + void * userContext); /* can be NULL */ + + +/* + * URLSimpleUpload() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLSimpleUpload( + const char * url, + const FSSpec * source, + URLOpenFlags openFlags, + URLSystemEventUPP eventProc, /* can be NULL */ + void * userContext); /* can be NULL */ + + +/* + * URLUpload() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLUpload( + URLReference urlRef, + const FSSpec * source, + URLOpenFlags openFlags, + URLSystemEventUPP eventProc, /* can be NULL */ + void * userContext); /* can be NULL */ + + +/* + * URLNewReference() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLNewReference( + const char * url, + URLReference * urlRef); + + +/* + * URLDisposeReference() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLDisposeReference(URLReference urlRef); + + +/* + * URLOpen() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLOpen( + URLReference urlRef, + FSSpec * fileSpec, /* can be NULL */ + URLOpenFlags openFlags, + URLNotifyUPP notifyProc, /* can be NULL */ + URLEventMask eventRegister, + void * userContext); /* can be NULL */ + + +/* + * URLAbort() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLAbort(URLReference urlRef); + + +/* + * URLGetDataAvailable() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLGetDataAvailable( + URLReference urlRef, + Size * dataSize); + + +/* + * URLGetBuffer() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLGetBuffer( + URLReference urlRef, + void ** buffer, + Size * bufferSize); + + +/* + * URLReleaseBuffer() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLReleaseBuffer( + URLReference urlRef, + void * buffer); + + +/* + * URLGetProperty() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLGetProperty( + URLReference urlRef, + const char * property, + void * propertyBuffer, + Size bufferSize); + + +/* + * URLGetPropertySize() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLGetPropertySize( + URLReference urlRef, + const char * property, + Size * propertySize); + + +/* + * URLSetProperty() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLSetProperty( + URLReference urlRef, + const char * property, + void * propertyBuffer, + Size bufferSize); + + +/* + * URLGetCurrentState() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLGetCurrentState( + URLReference urlRef, + URLState * state); + + +/* + * URLGetError() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLGetError( + URLReference urlRef, + OSStatus * urlError); + + +/* + * URLIdle() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +URLIdle(void); + + +/* + * URLGetFileInfo() + * + * Availability: + * Non-Carbon CFM: in URLAccessLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +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__ */ + |