|
@@ -83,7 +83,7 @@ namespace Ppub {
|
|
|
uncompressed_size = size;
|
|
|
}
|
|
|
|
|
|
- public CompressionInfo(InputStream stream, bool force = false) throws IOError {
|
|
|
+ public CompressionInfo(InputStream stream, CompressionPolicy policy = CompressionPolicy.AUTO) throws IOError {
|
|
|
var uncompressed_counter = new InputStreamMonitor(stream);
|
|
|
var compressor = new ZlibCompressor(ZlibCompressorFormat.GZIP, 9);
|
|
|
var conv_stream = new ConverterInputStream(uncompressed_counter, compressor);
|
|
@@ -94,7 +94,17 @@ namespace Ppub {
|
|
|
uncompressed_size = uncompressed_counter.bytes_read;
|
|
|
compressed_size = compressed_counter.bytes_read;
|
|
|
|
|
|
- compress = force || uncompressed_size > compressed_size;
|
|
|
+ switch (policy) {
|
|
|
+ case CompressionPolicy.AUTO:
|
|
|
+ compress = uncompressed_size > compressed_size;
|
|
|
+ break;
|
|
|
+ case CompressionPolicy.ALWAYS_COMPRESS:
|
|
|
+ compress = true;
|
|
|
+ break;
|
|
|
+ case CompressionPolicy.NEVER_COMPRESS:
|
|
|
+ compress = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public uint64 size_in_ppub {
|
|
@@ -105,6 +115,12 @@ namespace Ppub {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ public enum CompressionPolicy {
|
|
|
+ AUTO,
|
|
|
+ ALWAYS_COMPRESS,
|
|
|
+ NEVER_COMPRESS
|
|
|
+ }
|
|
|
+
|
|
|
public static string guess_mimetype(string name, uint8[] sample) {
|
|
|
if(name == "metadata") {
|
|
|
return "application/x-ppub-metadata";
|