/* -*- 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 { /** * Initializes a zip reader after construction. */ void init(in nsIFile zipFile); /** * Opens a zip reader. */ void open(); /** * Parses meta-information for the jar format. Must be called before calls * to getPrincipal and verifyExternalFile. */ void parseManifest(); /** * 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 owner (origin and/or signer) of * an entry. parseManifest must be called first. If aEntryName is an * entry in the jar, it must have been read to its end by an input * stream returned through getInputStream. If aEntryName is an external * file with meta-information stored in the jar, verifyExternalFile * must be called before getPrincipal. */ nsIPrincipal getPrincipal(in string aEntryName); /** * Compares a file which is not in the jar to meta-information * about the file which is stored in the jar. Must be called after * parseManifest and before * calling getPrincipal on an external file (such as inline Javascript). * There must be an "external" entry in the manifest corresponding to * aFilename. */ void verifyExternalFile(in string aFilename, in string aBuf, in unsigned long aBufLength); }; %{C++ #define NS_ZIPREADER_CID \ { /* 7526a738-9632-11d3-8cd9-0060b0fc14a3 */ \ 0x7526a738, \ 0x9632, \ 0x11d3, \ {0x8c, 0xd9, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \ } %}