123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533 |
- {
- File: URLAccess.p
-
- Contains: URL Access Interfaces.
-
- Version: Technology: URLAccess 2.0
- Release: Universal Interfaces 3.4.2
-
- Copyright: © 1994-2002 by Apple Computer, Inc., all rights reserved
-
- Bugs?: For bug reports, consult the following page on
- the World Wide Web:
-
- http://www.freepascal.org/bugs.html
-
- }
- {
- Modified for use with Free Pascal
- Version 210
- Please report any bugs to <[email protected]>
- }
- {$mode macpas}
- {$packenum 1}
- {$macro on}
- {$inline on}
- {$calling mwpascal}
- unit URLAccess;
- interface
- {$setc UNIVERSAL_INTERFACES_VERSION := $0342}
- {$setc GAP_INTERFACES_VERSION := $0210}
- {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
- {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
- {$endc}
- {$ifc defined CPUPOWERPC and defined CPUI386}
- {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
- {$endc}
- {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
- {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
- {$endc}
- {$ifc not defined __ppc__ and defined CPUPOWERPC}
- {$setc __ppc__ := 1}
- {$elsec}
- {$setc __ppc__ := 0}
- {$endc}
- {$ifc not defined __i386__ and defined CPUI386}
- {$setc __i386__ := 1}
- {$elsec}
- {$setc __i386__ := 0}
- {$endc}
- {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
- {$error Conflicting definitions for __ppc__ and __i386__}
- {$endc}
- {$ifc defined __ppc__ and __ppc__}
- {$setc TARGET_CPU_PPC := TRUE}
- {$setc TARGET_CPU_X86 := FALSE}
- {$elifc defined __i386__ and __i386__}
- {$setc TARGET_CPU_PPC := FALSE}
- {$setc TARGET_CPU_X86 := TRUE}
- {$elsec}
- {$error Neither __ppc__ nor __i386__ is defined.}
- {$endc}
- {$setc TARGET_CPU_PPC_64 := FALSE}
- {$ifc defined FPC_BIG_ENDIAN}
- {$setc TARGET_RT_BIG_ENDIAN := TRUE}
- {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
- {$elifc defined FPC_LITTLE_ENDIAN}
- {$setc TARGET_RT_BIG_ENDIAN := FALSE}
- {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
- {$elsec}
- {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
- {$endc}
- {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
- {$setc CALL_NOT_IN_CARBON := FALSE}
- {$setc OLDROUTINENAMES := FALSE}
- {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
- {$setc OPAQUE_UPP_TYPES := TRUE}
- {$setc OTCARBONAPPLICATION := TRUE}
- {$setc OTKERNEL := FALSE}
- {$setc PM_USE_SESSION_APIS := TRUE}
- {$setc TARGET_API_MAC_CARBON := TRUE}
- {$setc TARGET_API_MAC_OS8 := FALSE}
- {$setc TARGET_API_MAC_OSX := TRUE}
- {$setc TARGET_CARBON := TRUE}
- {$setc TARGET_CPU_68K := FALSE}
- {$setc TARGET_CPU_MIPS := FALSE}
- {$setc TARGET_CPU_SPARC := FALSE}
- {$setc TARGET_OS_MAC := TRUE}
- {$setc TARGET_OS_UNIX := FALSE}
- {$setc TARGET_OS_WIN32 := FALSE}
- {$setc TARGET_RT_MAC_68881 := FALSE}
- {$setc TARGET_RT_MAC_CFM := FALSE}
- {$setc TARGET_RT_MAC_MACHO := TRUE}
- {$setc TYPED_FUNCTION_POINTERS := TRUE}
- {$setc TYPE_BOOL := FALSE}
- {$setc TYPE_EXTENDED := FALSE}
- {$setc TYPE_LONGLONG := TRUE}
- uses MacTypes,Files,CodeFragments,MacErrors,Events;
- {$ALIGN MAC68K}
- { Data structures and types }
- type
- URLReference = ^SInt32; { an opaque 32-bit type }
- URLReferencePtr = ^URLReference; { when a var xx:URLReference parameter can be nil, it is changed to xx: URLReferencePtr }
- URLOpenFlags = UInt32;
- const
- kURLReplaceExistingFlag = $01;
- kURLBinHexFileFlag = $02; { Binhex before uploading if necessary }
- kURLExpandFileFlag = $04; { Use StuffIt engine to expand file if necessary }
- kURLDisplayProgressFlag = $08;
- kURLDisplayAuthFlag = $10; { Display auth dialog if guest connection fails }
- kURLUploadFlag = $20; { Do an upload instead of a download }
- kURLIsDirectoryHintFlag = $40; { Hint: the URL is a directory }
- kURLDoNotTryAnonymousFlag = $80; { Don't try to connect anonymously before getting logon info }
- kURLDirectoryListingFlag = $0100; { Download the directory listing, not the whole directory }
- kURLExpandAndVerifyFlag = $0200; { Expand file and then verify using signature resource }
- kURLNoAutoRedirectFlag = $0400; { Do not automatically redirect to new URL }
- kURLDebinhexOnlyFlag = $0800; { Do not use Stuffit Expander - just internal debinhex engine }
- kURLDoNotDeleteOnErrorFlag = $1000; { 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 = $2000; { 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 = $80000000; { reserved for Apple internal use }
- type
- URLState = UInt32;
- const
- kURLNullState = 0;
- kURLInitiatingState = 1;
- kURLLookingUpHostState = 2;
- kURLConnectingState = 3;
- kURLResourceFoundState = 4;
- kURLDownloadingState = 5;
- kURLDataAvailableState = $15;
- kURLTransactionCompleteState = 6;
- kURLErrorOccurredState = 7;
- kURLAbortingState = 8;
- kURLCompletedState = 9;
- kURLUploadingState = 10;
- type
- URLEvent = UInt32;
- const
- kURLInitiatedEvent = 1;
- kURLResourceFoundEvent = 4;
- kURLDownloadingEvent = 5;
- kURLAbortInitiatedEvent = 8;
- kURLCompletedEvent = 9;
- kURLErrorOccurredEvent = 7;
- kURLDataAvailableEvent = $15;
- kURLTransactionCompleteEvent = 6;
- kURLUploadingEvent = 10;
- kURLSystemEvent = 29;
- kURLPercentEvent = 30;
- kURLPeriodicEvent = 31;
- kURLPropertyChangedEvent = 32;
- type
- URLEventMask = UInt32;
- const
- kURLInitiatedEventMask = $01;
- kURLResourceFoundEventMask = $08;
- kURLDownloadingMask = $10;
- kURLUploadingMask = $0200;
- kURLAbortInitiatedMask = $80;
- kURLCompletedEventMask = $0100;
- kURLErrorOccurredEventMask = $40;
- kURLDataAvailableEventMask = $00100000;
- kURLTransactionCompleteEventMask = $20;
- kURLSystemEventMask = $10000000;
- kURLPercentEventMask = $20000000;
- kURLPeriodicEventMask = $40000000;
- kURLPropertyChangedEventMask = $80000000;
- kURLAllBufferEventsMask = $00100020;
- kURLAllNonBufferEventsMask = $E00003D1;
- kURLAllEventsMask = $FFFFFFFF;
- type
- URLCallbackInfoPtr = ^URLCallbackInfo;
- URLCallbackInfo = record
- version: UInt32;
- urlRef: URLReference;
- proprty: ConstCStringPtr;
- currentSize: UInt32;
- systemEvent: EventRecordPtr;
- end;
- { authentication type flags }
- const
- kUserNameAndPasswordFlag = $00000001;
- kURLURL = 'URLString';
- kURLResourceSize = 'URLResourceSize';
- kURLLastModifiedTime = 'URLLastModifiedTime';
- kURLMIMEType = 'URLMIMEType';
- kURLFileType = 'URLFileType';
- kURLFileCreator = 'URLFileCreator';
- kURLCharacterSet = 'URLCharacterSet';
- kURLResourceName = 'URLResourceName';
- kURLHost = 'URLHost';
- kURLAuthType = 'URLAuthType';
- kURLUserName = 'URLUserName';
- kURLPassword = 'URLPassword';
- kURLStatusString = 'URLStatusString';
- kURLIsSecure = 'URLIsSecure';
- kURLCertificate = 'URLCertificate';
- kURLTotalItems = 'URLTotalItems';
- kURLConnectTimeout = 'URLConnectTimeout';
- { http and https properties }
- kURLHTTPRequestMethod = 'URLHTTPRequestMethod';
- kURLHTTPRequestHeader = 'URLHTTPRequestHeader';
- kURLHTTPRequestBody = 'URLHTTPRequestBody';
- kURLHTTPRespHeader = 'URLHTTPRespHeader';
- kURLHTTPUserAgent = 'URLHTTPUserAgent';
- kURLHTTPRedirectedURL = 'URLHTTPRedirectedURL';
- 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
- }
- function URLGetURLAccessVersion(var returnVers: UInt32): OSStatus; external name '_URLGetURLAccessVersion';
- {$ifc TARGET_RT_MAC_CFM}
- {
- URLAccessAvailable() is a macro/inline available only in C/C++.
- To get the same functionality from pascal or assembly, you need
- to test if URLGetURLAccessVersion function is not NULL. For instance:
-
- gURLAccessAvailable = FALSE;
- IF @URLAccessAvailable <> kUnresolvedCFragSymbolAddress THEN
- gURLAccessAvailable = TRUE;
- end
-
- }
- {$elsec}
- {$ifc TARGET_RT_MAC_MACHO}
- { URL Access is always available on OS X }
- {$endc}
- {$endc}
- type
- {$ifc TYPED_FUNCTION_POINTERS}
- URLNotifyProcPtr = function(userContext: UnivPtr; event: URLEvent; var callbackInfo: URLCallbackInfo): OSStatus;
- {$elsec}
- URLNotifyProcPtr = ProcPtr;
- {$endc}
- {$ifc TYPED_FUNCTION_POINTERS}
- URLSystemEventProcPtr = function(userContext: UnivPtr; var event: EventRecord): OSStatus;
- {$elsec}
- URLSystemEventProcPtr = ProcPtr;
- {$endc}
- {$ifc OPAQUE_UPP_TYPES}
- URLNotifyUPP = ^SInt32; { an opaque UPP }
- {$elsec}
- URLNotifyUPP = URLNotifyProcPtr;
- {$endc}
- {$ifc OPAQUE_UPP_TYPES}
- URLSystemEventUPP = ^SInt32; { an opaque UPP }
- {$elsec}
- URLSystemEventUPP = URLSystemEventProcPtr;
- {$endc}
- const
- uppURLNotifyProcInfo = $00000FF0;
- uppURLSystemEventProcInfo = $000003F0;
- {
- * 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
- }
- function NewURLNotifyUPP(userRoutine: URLNotifyProcPtr): URLNotifyUPP; external name '_NewURLNotifyUPP';
- {
- * 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
- }
- function NewURLSystemEventUPP(userRoutine: URLSystemEventProcPtr): URLSystemEventUPP; external name '_NewURLSystemEventUPP';
- {
- * 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
- }
- procedure DisposeURLNotifyUPP(userUPP: URLNotifyUPP); external name '_DisposeURLNotifyUPP';
- {
- * 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
- }
- procedure DisposeURLSystemEventUPP(userUPP: URLSystemEventUPP); external name '_DisposeURLSystemEventUPP';
- {
- * 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
- }
- function InvokeURLNotifyUPP(userContext: UnivPtr; event: URLEvent; var callbackInfo: URLCallbackInfo; userRoutine: URLNotifyUPP): OSStatus; external name '_InvokeURLNotifyUPP';
- {
- * 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
- }
- function InvokeURLSystemEventUPP(userContext: UnivPtr; var event: EventRecord; userRoutine: URLSystemEventUPP): OSStatus; external name '_InvokeURLSystemEventUPP';
- {
- * 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
- }
- function URLSimpleDownload(url: ConstCStringPtr; destination: FSSpecPtr; destinationHandle: Handle; openFlags: URLOpenFlags; eventProc: URLSystemEventUPP; userContext: UnivPtr): OSStatus; external name '_URLSimpleDownload';
- {
- * 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
- }
- function URLDownload(urlRef: URLReference; destination: FSSpecPtr; destinationHandle: Handle; openFlags: URLOpenFlags; eventProc: URLSystemEventUPP; userContext: UnivPtr): OSStatus; external name '_URLDownload';
- {
- * 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
- }
- function URLSimpleUpload(url: ConstCStringPtr; const (*var*) source: FSSpec; openFlags: URLOpenFlags; eventProc: URLSystemEventUPP; userContext: UnivPtr): OSStatus; external name '_URLSimpleUpload';
- {
- * 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
- }
- function URLUpload(urlRef: URLReference; const (*var*) source: FSSpec; openFlags: URLOpenFlags; eventProc: URLSystemEventUPP; userContext: UnivPtr): OSStatus; external name '_URLUpload';
- {
- * 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
- }
- function URLNewReference(url: ConstCStringPtr; var urlRef: URLReference): OSStatus; external name '_URLNewReference';
- {
- * 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
- }
- function URLDisposeReference(urlRef: URLReference): OSStatus; external name '_URLDisposeReference';
- {
- * 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
- }
- function URLOpen(urlRef: URLReference; fileSpec: FSSpecPtr; openFlags: URLOpenFlags; notifyProc: URLNotifyUPP; eventRegister: URLEventMask; userContext: UnivPtr): OSStatus; external name '_URLOpen';
- {
- * 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
- }
- function URLAbort(urlRef: URLReference): OSStatus; external name '_URLAbort';
- {
- * 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
- }
- function URLGetDataAvailable(urlRef: URLReference; var dataSize: Size): OSStatus; external name '_URLGetDataAvailable';
- {
- * 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
- }
- function URLGetBuffer(urlRef: URLReference; var buffer: UnivPtr; var bufferSize: Size): OSStatus; external name '_URLGetBuffer';
- {
- * 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
- }
- function URLReleaseBuffer(urlRef: URLReference; buffer: UnivPtr): OSStatus; external name '_URLReleaseBuffer';
- {
- * 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
- }
- function URLGetProperty(urlRef: URLReference; proprty: ConstCStringPtr; propertyBuffer: UnivPtr; bufferSize: Size): OSStatus; external name '_URLGetProperty';
- {
- * 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
- }
- function URLGetPropertySize(urlRef: URLReference; proprty: ConstCStringPtr; var propertySize: Size): OSStatus; external name '_URLGetPropertySize';
- {
- * 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
- }
- function URLSetProperty(urlRef: URLReference; proprty: ConstCStringPtr; propertyBuffer: UnivPtr; bufferSize: Size): OSStatus; external name '_URLSetProperty';
- {
- * 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
- }
- function URLGetCurrentState(urlRef: URLReference; var state: URLState): OSStatus; external name '_URLGetCurrentState';
- {
- * 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
- }
- function URLGetError(urlRef: URLReference; var urlError: OSStatus): OSStatus; external name '_URLGetError';
- {
- * 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
- }
- function URLIdle: OSStatus; external name '_URLIdle';
- {
- * 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
- }
- function URLGetFileInfo(fName: StringPtr; var fType: OSType; var fCreator: OSType): OSStatus; external name '_URLGetFileInfo';
- {$ALIGN MAC68K}
- end.
|