Exemplo n.º 1
0
        private Encoding ChooseEncoding(FileNamesEncodingInZipFile encoding)
        {
            if (encoding == FileNamesEncodingInZipFile.Auto || encoding == FileNamesEncodingInZipFile.OsEncodingWithUtf8)
            {
                return(null);
            }

            return(Encoding.UTF8);
        }
Exemplo n.º 2
0
        private ZipOption ChooseEncodingMode(FileNamesEncodingInZipFile encoding)
        {
            if (encoding == FileNamesEncodingInZipFile.OsEncodingWithUtf8)
            {
                return(ZipOption.AsNecessary);
            }

            return(ZipOption.Always);
        }
Exemplo n.º 3
0
 public void Open(string filename, string password = null, FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto)
 {
     ZipFile.DefaultEncoding = Encoding.GetEncoding(866);
     // f**k non-russian encodings on non-ascii files
     _zip = ZipFile.Read(filename, new ReadOptions()
     {
         Encoding = ChooseEncoding(encoding)
     });
     _zip.Password = password;
 }
Exemplo n.º 4
0
 public void Open(IStreamWrapper stream, string password = null, FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto)
 {
     ZipFile.DefaultEncoding = Encoding.GetEncoding(866);
     // f**k non-russian encodings on non-ascii files
     _zip = ZipFile.Read(stream.GetUnderlyingStream(), new ReadOptions()
     {
         Encoding = ChooseEncoding(encoding)
     });
     _zip.Password = password;
 }
Exemplo n.º 5
0
        public static ZipWriter ConstructByFileOptions(
            IValue filename,
            IValue password                     = null,
            IValue comment                      = null,
            IValue compressionMethod            = null,
            IValue compressionLevel             = null,
            IValue encryptionMethod             = null,
            FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto)
        {
            var zip = new ZipWriter();

            zip.Open(filename.AsString(),
                     ConvertParam <string>(password),
                     ConvertParam <string>(comment),
                     ConvertParam <SelfAwareEnumValue <ZipCompressionMethodEnum> >(compressionMethod),
                     ConvertParam <SelfAwareEnumValue <ZipCompressionLevelEnum> >(compressionLevel),
                     ConvertParam <SelfAwareEnumValue <ZipEncryptionMethodEnum> >(encryptionMethod),
                     encoding);
            return(zip);
        }
Exemplo n.º 6
0
 public void Open(
     string filename,
     string password = null,
     string comment  = null,
     SelfAwareEnumValue <ZipCompressionMethodEnum> compressionMethod = null,
     SelfAwareEnumValue <ZipCompressionLevelEnum> compressionLevel   = null,
     SelfAwareEnumValue <ZipEncryptionMethodEnum> encryptionMethod   = null,
     FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto)
 {
     ZipFile.DefaultEncoding = Encoding.GetEncoding(866); // f**k non-russian encodings on non-ascii files
     _filename = filename;
     _zip      = new ZipFile();
     _zip.AlternateEncoding      = Encoding.UTF8;
     _zip.AlternateEncodingUsage = ChooseEncodingMode(encoding);
     _zip.Password           = password;
     _zip.Comment            = comment;
     _zip.CompressionMethod  = MakeZipCompressionMethod(compressionMethod);
     _zip.CompressionLevel   = MakeZipCompressionLevel(compressionLevel);
     _zip.UseZip64WhenSaving = Zip64Option.AsNecessary;
     _zip.Encryption         = MakeZipEncryption(encryptionMethod);
 }
Exemplo n.º 7
0
        public void Open(IValue filenameOrStream, string password = null, FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto)
        {
            // f**k non-russian encodings on non-ascii files
            ZipFile.DefaultEncoding = Encoding.GetEncoding(866);

            if (filenameOrStream.DataType == DataType.String)
            {
                _zip = ZipFile.Read(filenameOrStream.AsString(), new ReadOptions {
                    Encoding = ChooseEncoding(encoding)
                });
            }
            else if (filenameOrStream.AsObject() is IStreamWrapper stream)
            {
                _zip = ZipFile.Read(stream.GetUnderlyingStream(), new ReadOptions {
                    Encoding = ChooseEncoding(encoding)
                });
            }
            else
            {
                throw RuntimeException.InvalidArgumentType(nameof(filenameOrStream));
            }

            _zip.Password = password;
        }
Exemplo n.º 8
0
 public ZipReader(IValue filenameOrStream, string password = null, FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto)
 {
     Open(filenameOrStream, password, encoding);
 }