/* 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 #endif #ifndef __FILES__ #include #endif #ifndef __CODEFRAGMENTS__ #include #endif #ifndef __MACERRORS__ #include #endif #ifndef __EVENTS__ #include #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__ */