/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is Mozilla Communicator client code, * released March 31, 1998. * * The Initial Developer of the Original Code is Netscape Communications * Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): * Daniel Veditz * Don Bragg * Samir Gehani * Mitch Stoltz */ #include "nsISupports.idl" interface nsISimpleEnumerator; interface nsIInputStream; interface nsIPrincipal; interface nsIFile; [scriptable, uuid(6ca5e43e-9632-11d3-8cd9-0060b0fc14a3)] interface nsIZipEntry : nsISupports { readonly attribute string name; readonly attribute unsigned short compression; readonly attribute unsigned long size; readonly attribute unsigned long realSize; readonly attribute unsigned long CRC32; }; [scriptable, uuid(6ff6a966-9632-11d3-8cd9-0060b0fc14a3)] interface nsIZipReader : nsISupports { const short NOT_SIGNED = 0; const short VALID = 1; const short INVALID_SIG = 2; const short INVALID_UNKNOWN_CA = 3; const short INVALID_MANIFEST = 4; const short INVALID_ENTRY = 5; const short NO_MANIFEST = 6; /** * Initializes a zip reader after construction. */ void init(in nsIFile zipFile); readonly attribute nsIFile file; /** * Opens a zip reader. */ void open(); /** * Closes a zip reader. Subsequent attempts to extract files or read from * its input stream will result in an error. */ void close(); /** * Extracts a zip entry into a local file specified by outFile. */ void extract(in string zipEntry, in nsIFile outFile); /** * Returns a nsIZipEntry describing a specified zip entry. */ nsIZipEntry getEntry(in string zipEntry); /** * Returns a simple enumerator whose elements are of type nsIZipEntry. */ nsISimpleEnumerator/**/ findEntries(in string aPattern); /** * Returns an input stream containing the contents of the specified zip entry. */ nsIInputStream getInputStream(in string zipEntry); /** * Returns an object describing the entity which signed * an entry. parseManifest must be called first. If aEntryName is an * entry in the jar, getInputStream must be called after parseManifest. * If aEntryName is an external file which has meta-information * stored in the jar, verifyExternalFile (not yet implemented) must * be called before getPrincipal. */ void getCertificatePrincipal(in string aEntryName, out nsIPrincipal aPrincipal); }; //////////////////////////////////////////////////////////////////////////////// // nsIZipReaderCache [scriptable, uuid(52c45d86-0cc3-11d4-986e-00c04fa0cf4a)] interface nsIZipReaderCache : nsISupports { /** * Initializes a new zip reader cache. * @param cacheSize - the number of released entries to maintain before * beginning to throw some out (note that the number of outstanding * entries can be much greater than this number -- this is the count * for those otherwise unused entries) */ void init(in unsigned long cacheSize); /** * Returns a (possibly shared) nsIZipReader for an nsIFile. */ nsIZipReader getZip(in nsIFile zipFile); }; //////////////////////////////////////////////////////////////////////////////// %{C++ #define NS_ZIPREADER_CID \ { /* 7526a738-9632-11d3-8cd9-0060b0fc14a3 */ \ 0x7526a738, \ 0x9632, \ 0x11d3, \ {0x8c, 0xd9, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \ } #define NS_ZIPREADERCACHE_CID \ { /* 1b117e16-0cad-11d4-986e-00c04fa0cf4a */ \ 0x1b117e16, \ 0x0cad, \ 0x11d4, \ {0x98, 0x6e, 0x00, 0xc0, 0x4f, 0xa0, 0xcf, 0x4a} \ } %} ////////////////////////////////////////////////////////////////////////////////