topical media & game development

talk show tell print

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.