source-engine/common/quicktime_win32/URLAccess.h

624 lines
18 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
/*
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__ */